From 59569aa0571bc9691d2c64df52bc8cc7651eb0cb Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Tue, 7 May 2024 13:24:33 +0000 Subject: [PATCH 01/28] Add .github/renovate.json --- .github/renovate.json | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .github/renovate.json diff --git a/.github/renovate.json b/.github/renovate.json new file mode 100644 index 0000000..8b3088d --- /dev/null +++ b/.github/renovate.json @@ -0,0 +1,6 @@ +{ + "$schema": "https://docs.renovatebot.com/renovate-schema.json", + "extends": [ + "github>studiometa/renovate" + ] +} From e35b643054bfa28a44b5f082512be3411181b9e6 Mon Sep 17 00:00:00 2001 From: Ludovic Janot Date: Wed, 18 Sep 2024 15:10:02 +0200 Subject: [PATCH 02/28] Fix renderAttributes to always render alt has it is a mandatory attribute for tags --- src/Helpers/Html.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Helpers/Html.php b/src/Helpers/Html.php index d5068b4..675d9d4 100644 --- a/src/Helpers/Html.php +++ b/src/Helpers/Html.php @@ -208,8 +208,8 @@ public static function renderAttributes(Environment $env, array $attributes):str $value = twig_escape_filter($env, $value, 'html_attr', $env->getCharset()); - // Do not add empty attributes - if (empty($value)) { + // Do not add empty attributes, unless it is alt + if (empty($value) && $key !== 'alt') { continue; } From f257cf8e2853da6dd5a848b89725a3b5ad760f8f Mon Sep 17 00:00:00 2001 From: Ludovic Janot Date: Wed, 18 Sep 2024 15:11:46 +0200 Subject: [PATCH 03/28] Update changelog --- CHANGELOG.md | 6 ++++++ src/Helpers/Html.php | 4 ++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8732bb8..49f7291 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,12 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ## [Unreleased] +## v1.3.7 (2024-09-18) + +### Fixed + +- Fix attribute rendering by omitting `null` or `false` attributes instead of empty attributes ([#26](https://github.com/studiometa/twig-toolkit/pull/26)) + ## v1.3.6 (2024-04-18) ### Fixed diff --git a/src/Helpers/Html.php b/src/Helpers/Html.php index 675d9d4..cc1dad0 100644 --- a/src/Helpers/Html.php +++ b/src/Helpers/Html.php @@ -208,8 +208,8 @@ public static function renderAttributes(Environment $env, array $attributes):str $value = twig_escape_filter($env, $value, 'html_attr', $env->getCharset()); - // Do not add empty attributes, unless it is alt - if (empty($value) && $key !== 'alt') { + // Do not add null & false attributes + if (is_null($value) || $value === false) { continue; } From f9807ccb98ea1d1ffca799be5e55183cd3a16dc9 Mon Sep 17 00:00:00 2001 From: Titouan Mathis Date: Thu, 26 Sep 2024 19:36:17 +0200 Subject: [PATCH 04/28] Fix tests --- tests/Helpers/HtmlTest.php | 2 +- ...s()__Twig_function_should_not_render_empty_attributes__1.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/Helpers/HtmlTest.php b/tests/Helpers/HtmlTest.php index ea41d2e..c654d9c 100644 --- a/tests/Helpers/HtmlTest.php +++ b/tests/Helpers/HtmlTest.php @@ -99,7 +99,7 @@ class: ['block m:hidden', { foo: true, bar: false }], test('The `{{ html_attributes() }}` Twig function should not render empty attributes', function () { $tpl = <<loader->setTemplate('index', $tpl); assertMatchesSnapshot(test()->twig->render('index')); diff --git a/tests/__snapshots__/HtmlTest__The__html_attributes()__Twig_function_should_not_render_empty_attributes__1.txt b/tests/__snapshots__/HtmlTest__The__html_attributes()__Twig_function_should_not_render_empty_attributes__1.txt index ec3e372..713072e 100644 --- a/tests/__snapshots__/HtmlTest__The__html_attributes()__Twig_function_should_not_render_empty_attributes__1.txt +++ b/tests/__snapshots__/HtmlTest__The__html_attributes()__Twig_function_should_not_render_empty_attributes__1.txt @@ -1 +1 @@ - empty-array="[]" \ No newline at end of file + empty-string="" truthy empty-array="[]" \ No newline at end of file From 6134a4216e471acec4d6ae1d89b04bef7ce309bf Mon Sep 17 00:00:00 2001 From: Titouan Mathis Date: Fri, 17 Jan 2025 17:03:42 +0100 Subject: [PATCH 05/28] Update minimum PHP version to 8.1 --- composer.json | 4 +- composer.lock | 846 +++++++++++++++++++++----------------------------- 2 files changed, 350 insertions(+), 500 deletions(-) diff --git a/composer.json b/composer.json index 054a295..60aaf0d 100644 --- a/composer.json +++ b/composer.json @@ -3,8 +3,8 @@ "description": "A set of useful extension and components for Twig.", "license": "MIT", "require": { - "php": "^7.3|^8.0", - "twig/twig": "^2.10|^3", + "php": "^8.1", + "twig/twig": "^3.0", "jawira/case-converter": "^3.4", "spatie/url": "^1.3" }, diff --git a/composer.lock b/composer.lock index 17d7722..487bebc 100644 --- a/composer.lock +++ b/composer.lock @@ -4,20 +4,20 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "943680c5c30227c30efb85570f51a348", + "content-hash": "5cff74fc560453aaa3983dd4d54b14f1", "packages": [ { "name": "jawira/case-converter", - "version": "v3.5.1", + "version": "v3.5.2", "source": { "type": "git", "url": "https://github.com/jawira/case-converter.git", - "reference": "2be05b98dcb743bef60ab6f849145bd3434ed003" + "reference": "a3c957aac2b3ef7389c4a7930b952fb8aa740954" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/jawira/case-converter/zipball/2be05b98dcb743bef60ab6f849145bd3434ed003", - "reference": "2be05b98dcb743bef60ab6f849145bd3434ed003", + "url": "https://api.github.com/repos/jawira/case-converter/zipball/a3c957aac2b3ef7389c4a7930b952fb8aa740954", + "reference": "a3c957aac2b3ef7389c4a7930b952fb8aa740954", "shasum": "" }, "require": { @@ -26,9 +26,8 @@ }, "require-dev": { "behat/behat": "^3.0", - "phpstan/phpstan": "^1.0", - "phpunit/phpunit": "^9.0", - "vimeo/psalm": "^4.0" + "phpstan/phpstan": "^v2", + "phpunit/phpunit": "^9.0" }, "suggest": { "pds/skeleton": "PHP Package Development Standards", @@ -69,9 +68,9 @@ ], "support": { "issues": "https://github.com/jawira/case-converter/issues", - "source": "https://github.com/jawira/case-converter/tree/v3.5.1" + "source": "https://github.com/jawira/case-converter/tree/v3.5.2" }, - "time": "2022-08-14T11:40:18+00:00" + "time": "2024-12-21T19:43:32+00:00" }, { "name": "psr/http-message", @@ -230,29 +229,29 @@ }, { "name": "symfony/deprecation-contracts", - "version": "v2.5.3", + "version": "v3.5.1", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "80d075412b557d41002320b96a096ca65aa2c98d" + "reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/80d075412b557d41002320b96a096ca65aa2c98d", - "reference": "80d075412b557d41002320b96a096ca65aa2c98d", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6", + "reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=8.1" }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "2.5-dev" - }, "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.5-dev" } }, "autoload": { @@ -277,7 +276,7 @@ "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/deprecation-contracts/tree/v3.5.1" }, "funding": [ { @@ -293,24 +292,24 @@ "type": "tidelift" } ], - "time": "2023-01-24T14:02:46+00:00" + "time": "2024-09-25T14:20:29+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.29.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4" + "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ef4d7e442ca910c4764bce785146269b30cb5fc4", - "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/a3cc8b044a6ea513310cbd48ef7333b384945638", + "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "provide": { "ext-ctype": "*" @@ -321,8 +320,8 @@ "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -356,7 +355,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.29.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.31.0" }, "funding": [ { @@ -372,24 +371,24 @@ "type": "tidelift" } ], - "time": "2024-01-29T20:11:03+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.29.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec" + "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9773676c8a1bb1f8d4340a62efe641cf76eda7ec", - "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/85181ba99b2345b0ef10ce42ecac37612d9fd341", + "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "provide": { "ext-mbstring": "*" @@ -400,8 +399,8 @@ "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -436,7 +435,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.29.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.31.0" }, "funding": [ { @@ -452,30 +451,30 @@ "type": "tidelift" } ], - "time": "2024-01-29T20:11:03+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { - "name": "symfony/polyfill-php80", - "version": "v1.29.0", + "name": "symfony/polyfill-php81", + "version": "v1.31.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b" + "url": "https://github.com/symfony/polyfill-php81.git", + "reference": "4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/87b68208d5c1188808dd7839ee1e6c8ec3b02f1b", - "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b", + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c", + "reference": "4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -483,7 +482,7 @@ "bootstrap.php" ], "psr-4": { - "Symfony\\Polyfill\\Php80\\": "" + "Symfony\\Polyfill\\Php81\\": "" }, "classmap": [ "Resources/stubs" @@ -494,10 +493,6 @@ "MIT" ], "authors": [ - { - "name": "Ion Bazan", - "email": "ion.bazan@gmail.com" - }, { "name": "Nicolas Grekas", "email": "p@tchwork.com" @@ -507,7 +502,7 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions", "homepage": "https://symfony.com", "keywords": [ "compatibility", @@ -516,7 +511,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.29.0" + "source": "https://github.com/symfony/polyfill-php81/tree/v1.31.0" }, "funding": [ { @@ -532,30 +527,31 @@ "type": "tidelift" } ], - "time": "2024-01-29T20:11:03+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "twig/twig", - "version": "v3.9.3", + "version": "v3.18.0", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "a842d75fed59cdbcbd3a3ad7fb9eb768fc350d58" + "reference": "acffa88cc2b40dbe42eaf3a5025d6c0d4600cc50" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/a842d75fed59cdbcbd3a3ad7fb9eb768fc350d58", - "reference": "a842d75fed59cdbcbd3a3ad7fb9eb768fc350d58", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/acffa88cc2b40dbe42eaf3a5025d6c0d4600cc50", + "reference": "acffa88cc2b40dbe42eaf3a5025d6c0d4600cc50", "shasum": "" }, "require": { - "php": ">=7.2.5", + "php": ">=8.0.2", "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-ctype": "^1.8", "symfony/polyfill-mbstring": "^1.3", - "symfony/polyfill-php80": "^1.22" + "symfony/polyfill-php81": "^1.29" }, "require-dev": { + "phpstan/phpstan": "^2.0", "psr/container": "^1.0|^2.0", "symfony/phpunit-bridge": "^5.4.9|^6.4|^7.0" }, @@ -599,7 +595,7 @@ ], "support": { "issues": "https://github.com/twigphp/Twig/issues", - "source": "https://github.com/twigphp/Twig/tree/v3.9.3" + "source": "https://github.com/twigphp/Twig/tree/v3.18.0" }, "funding": [ { @@ -611,36 +607,36 @@ "type": "tidelift" } ], - "time": "2024-04-18T11:59:33+00:00" + "time": "2024-12-29T10:51:50+00:00" } ], "packages-dev": [ { "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": { @@ -667,7 +663,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": [ { @@ -683,83 +679,30 @@ "type": "tidelift" } ], - "time": "2022-12-30T00:15:36+00:00" - }, - { - "name": "facade/ignition-contracts", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/facade/ignition-contracts.git", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/facade/ignition-contracts/zipball/3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^v2.15.8", - "phpunit/phpunit": "^9.3.11", - "vimeo/psalm": "^3.17.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Facade\\IgnitionContracts\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "homepage": "https://flareapp.io", - "role": "Developer" - } - ], - "description": "Solution contracts for Ignition", - "homepage": "https://github.com/facade/ignition-contracts", - "keywords": [ - "contracts", - "flare", - "ignition" - ], - "support": { - "issues": "https://github.com/facade/ignition-contracts/issues", - "source": "https://github.com/facade/ignition-contracts/tree/1.0.2" - }, - "time": "2020-10-16T08:27:54+00:00" + "time": "2022-12-30T00:23:10+00:00" }, { "name": "filp/whoops", - "version": "2.15.4", + "version": "2.16.0", "source": { "type": "git", "url": "https://github.com/filp/whoops.git", - "reference": "a139776fa3f5985a50b509f2a02ff0f709d2a546" + "reference": "befcdc0e5dce67252aa6322d82424be928214fa2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/a139776fa3f5985a50b509f2a02ff0f709d2a546", - "reference": "a139776fa3f5985a50b509f2a02ff0f709d2a546", + "url": "https://api.github.com/repos/filp/whoops/zipball/befcdc0e5dce67252aa6322d82424be928214fa2", + "reference": "befcdc0e5dce67252aa6322d82424be928214fa2", "shasum": "" }, "require": { - "php": "^5.5.9 || ^7.0 || ^8.0", + "php": "^7.1 || ^8.0", "psr/log": "^1.0.1 || ^2.0 || ^3.0" }, "require-dev": { - "mockery/mockery": "^0.9 || ^1.0", - "phpunit/phpunit": "^4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.3", - "symfony/var-dumper": "^2.6 || ^3.0 || ^4.0 || ^5.0" + "mockery/mockery": "^1.0", + "phpunit/phpunit": "^7.5.20 || ^8.5.8 || ^9.3.3", + "symfony/var-dumper": "^4.0 || ^5.0" }, "suggest": { "symfony/var-dumper": "Pretty print complex values better with var-dumper available", @@ -799,7 +742,7 @@ ], "support": { "issues": "https://github.com/filp/whoops/issues", - "source": "https://github.com/filp/whoops/tree/2.15.4" + "source": "https://github.com/filp/whoops/tree/2.16.0" }, "funding": [ { @@ -807,20 +750,20 @@ "type": "github" } ], - "time": "2023-11-03T12:00:00+00:00" + "time": "2024-09-25T12:00:00+00:00" }, { "name": "myclabs/deep-copy", - "version": "1.11.1", + "version": "1.12.1", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c" + "reference": "123267b2c49fbf30d78a7b2d333f6be754b94845" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", - "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/123267b2c49fbf30d78a7b2d333f6be754b94845", + "reference": "123267b2c49fbf30d78a7b2d333f6be754b94845", "shasum": "" }, "require": { @@ -828,11 +771,12 @@ }, "conflict": { "doctrine/collections": "<1.6.8", - "doctrine/common": "<2.13.3 || >=3,<3.2.2" + "doctrine/common": "<2.13.3 || >=3 <3.2.2" }, "require-dev": { "doctrine/collections": "^1.6.8", "doctrine/common": "^2.13.3 || ^3.2.2", + "phpspec/prophecy": "^1.10", "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" }, "type": "library", @@ -858,7 +802,7 @@ ], "support": { "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.11.1" + "source": "https://github.com/myclabs/DeepCopy/tree/1.12.1" }, "funding": [ { @@ -866,20 +810,20 @@ "type": "tidelift" } ], - "time": "2023-03-08T13:26:56+00:00" + "time": "2024-11-08T17:47:46+00:00" }, { "name": "nikic/php-parser", - "version": "v5.0.2", + "version": "v5.4.0", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "139676794dc1e9231bf7bcd123cfc0c99182cb13" + "reference": "447a020a1f875a434d62f2a401f53b82a396e494" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/139676794dc1e9231bf7bcd123cfc0c99182cb13", - "reference": "139676794dc1e9231bf7bcd123cfc0c99182cb13", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/447a020a1f875a434d62f2a401f53b82a396e494", + "reference": "447a020a1f875a434d62f2a401f53b82a396e494", "shasum": "" }, "require": { @@ -890,7 +834,7 @@ }, "require-dev": { "ircmaxell/php-yacc": "^0.0.7", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" + "phpunit/phpunit": "^9.0" }, "bin": [ "bin/php-parse" @@ -922,40 +866,38 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v5.0.2" + "source": "https://github.com/nikic/PHP-Parser/tree/v5.4.0" }, - "time": "2024-03-05T20:51:40+00:00" + "time": "2024-12-30T11:07:19+00:00" }, { "name": "nunomaduro/collision", - "version": "v5.11.0", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/nunomaduro/collision.git", - "reference": "8b610eef8582ccdc05d8f2ab23305e2d37049461" + "reference": "f05978827b9343cba381ca05b8c7deee346b6015" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/8b610eef8582ccdc05d8f2ab23305e2d37049461", - "reference": "8b610eef8582ccdc05d8f2ab23305e2d37049461", + "url": "https://api.github.com/repos/nunomaduro/collision/zipball/f05978827b9343cba381ca05b8c7deee346b6015", + "reference": "f05978827b9343cba381ca05b8c7deee346b6015", "shasum": "" }, "require": { - "facade/ignition-contracts": "^1.0", - "filp/whoops": "^2.14.3", - "php": "^7.3 || ^8.0", - "symfony/console": "^5.0" + "filp/whoops": "^2.14.5", + "php": "^8.0.0", + "symfony/console": "^6.0.2" }, "require-dev": { - "brianium/paratest": "^6.1", - "fideloper/proxy": "^4.4.1", - "fruitcake/laravel-cors": "^2.0.3", - "laravel/framework": "8.x-dev", - "nunomaduro/larastan": "^0.6.2", - "nunomaduro/mock-final-classes": "^1.0", - "orchestra/testbench": "^6.0", - "phpstan/phpstan": "^0.12.64", - "phpunit/phpunit": "^9.5.0" + "brianium/paratest": "^6.4.1", + "laravel/framework": "^9.26.1", + "laravel/pint": "^1.1.1", + "nunomaduro/larastan": "^1.0.3", + "nunomaduro/mock-final-classes": "^1.1.0", + "orchestra/testbench": "^7.7", + "phpunit/phpunit": "^9.5.23", + "spatie/ignition": "^1.4.1" }, "type": "library", "extra": { @@ -963,6 +905,9 @@ "providers": [ "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" ] + }, + "branch-alias": { + "dev-develop": "6.x-dev" } }, "autoload": { @@ -1011,7 +956,7 @@ "type": "patreon" } ], - "time": "2022-01-10T16:22:52+00:00" + "time": "2023-01-03T12:54:54+00:00" }, { "name": "pestphp/pest", @@ -1045,9 +990,6 @@ ], "type": "library", "extra": { - "branch-alias": { - "dev-1.x": "1.x-dev" - }, "pest": { "plugins": [ "Pest\\Plugins\\Coverage", @@ -1060,6 +1002,9 @@ "providers": [ "Pest\\Laravel\\PestServiceProvider" ] + }, + "branch-alias": { + "dev-1.x": "1.x-dev" } }, "autoload": { @@ -1134,10 +1079,10 @@ }, "type": "composer-plugin", "extra": { + "class": "Pest\\Plugin\\Manager", "branch-alias": { "dev-master": "1.x-dev" - }, - "class": "Pest\\Plugin\\Manager" + } }, "autoload": { "psr-4": { @@ -1358,35 +1303,35 @@ }, { "name": "phpunit/php-code-coverage", - "version": "9.2.31", + "version": "9.2.32", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "48c34b5d8d983006bd2adc2d0de92963b9155965" + "reference": "85402a822d1ecf1db1096959413d35e1c37cf1a5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/48c34b5d8d983006bd2adc2d0de92963b9155965", - "reference": "48c34b5d8d983006bd2adc2d0de92963b9155965", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/85402a822d1ecf1db1096959413d35e1c37cf1a5", + "reference": "85402a822d1ecf1db1096959413d35e1c37cf1a5", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "ext-xmlwriter": "*", - "nikic/php-parser": "^4.18 || ^5.0", + "nikic/php-parser": "^4.19.1 || ^5.1.0", "php": ">=7.3", - "phpunit/php-file-iterator": "^3.0.3", - "phpunit/php-text-template": "^2.0.2", - "sebastian/code-unit-reverse-lookup": "^2.0.2", - "sebastian/complexity": "^2.0", - "sebastian/environment": "^5.1.2", - "sebastian/lines-of-code": "^1.0.3", - "sebastian/version": "^3.0.1", - "theseer/tokenizer": "^1.2.0" + "phpunit/php-file-iterator": "^3.0.6", + "phpunit/php-text-template": "^2.0.4", + "sebastian/code-unit-reverse-lookup": "^2.0.3", + "sebastian/complexity": "^2.0.3", + "sebastian/environment": "^5.1.5", + "sebastian/lines-of-code": "^1.0.4", + "sebastian/version": "^3.0.2", + "theseer/tokenizer": "^1.2.3" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^9.6" }, "suggest": { "ext-pcov": "PHP extension that provides line coverage", @@ -1395,7 +1340,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "9.2-dev" + "dev-main": "9.2.x-dev" } }, "autoload": { @@ -1424,7 +1369,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.31" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.32" }, "funding": [ { @@ -1432,7 +1377,7 @@ "type": "github" } ], - "time": "2024-03-02T06:37:42+00:00" + "time": "2024-08-22T04:23:01+00:00" }, { "name": "phpunit/php-file-iterator", @@ -1677,45 +1622,45 @@ }, { "name": "phpunit/phpunit", - "version": "9.6.19", + "version": "9.6.22", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "a1a54a473501ef4cdeaae4e06891674114d79db8" + "reference": "f80235cb4d3caa59ae09be3adf1ded27521d1a9c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/a1a54a473501ef4cdeaae4e06891674114d79db8", - "reference": "a1a54a473501ef4cdeaae4e06891674114d79db8", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/f80235cb4d3caa59ae09be3adf1ded27521d1a9c", + "reference": "f80235cb4d3caa59ae09be3adf1ded27521d1a9c", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.3.1 || ^2", + "doctrine/instantiator": "^1.5.0 || ^2", "ext-dom": "*", "ext-json": "*", "ext-libxml": "*", "ext-mbstring": "*", "ext-xml": "*", "ext-xmlwriter": "*", - "myclabs/deep-copy": "^1.10.1", - "phar-io/manifest": "^2.0.3", - "phar-io/version": "^3.0.2", + "myclabs/deep-copy": "^1.12.1", + "phar-io/manifest": "^2.0.4", + "phar-io/version": "^3.2.1", "php": ">=7.3", - "phpunit/php-code-coverage": "^9.2.28", - "phpunit/php-file-iterator": "^3.0.5", + "phpunit/php-code-coverage": "^9.2.32", + "phpunit/php-file-iterator": "^3.0.6", "phpunit/php-invoker": "^3.1.1", - "phpunit/php-text-template": "^2.0.3", - "phpunit/php-timer": "^5.0.2", - "sebastian/cli-parser": "^1.0.1", - "sebastian/code-unit": "^1.0.6", + "phpunit/php-text-template": "^2.0.4", + "phpunit/php-timer": "^5.0.3", + "sebastian/cli-parser": "^1.0.2", + "sebastian/code-unit": "^1.0.8", "sebastian/comparator": "^4.0.8", - "sebastian/diff": "^4.0.3", - "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.5", - "sebastian/global-state": "^5.0.1", - "sebastian/object-enumerator": "^4.0.3", - "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^3.2", + "sebastian/diff": "^4.0.6", + "sebastian/environment": "^5.1.5", + "sebastian/exporter": "^4.0.6", + "sebastian/global-state": "^5.0.7", + "sebastian/object-enumerator": "^4.0.4", + "sebastian/resource-operations": "^3.0.4", + "sebastian/type": "^3.2.1", "sebastian/version": "^3.0.2" }, "suggest": { @@ -1760,7 +1705,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.19" + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.22" }, "funding": [ { @@ -1776,26 +1721,31 @@ "type": "tidelift" } ], - "time": "2024-04-05T04:35:58+00:00" + "time": "2024-12-05T13:48:26+00:00" }, { "name": "psr/container", - "version": "1.1.2", + "version": "2.0.2", "source": { "type": "git", "url": "https://github.com/php-fig/container.git", - "reference": "513e0666f7216c7459170d56df27dfcefe1689ea" + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/513e0666f7216c7459170d56df27dfcefe1689ea", - "reference": "513e0666f7216c7459170d56df27dfcefe1689ea", + "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", "shasum": "" }, "require": { "php": ">=7.4.0" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, "autoload": { "psr-4": { "Psr\\Container\\": "src/" @@ -1822,36 +1772,36 @@ ], "support": { "issues": "https://github.com/php-fig/container/issues", - "source": "https://github.com/php-fig/container/tree/1.1.2" + "source": "https://github.com/php-fig/container/tree/2.0.2" }, - "time": "2021-11-05T16:50:12+00:00" + "time": "2021-11-05T16:47:00+00:00" }, { "name": "psr/log", - "version": "1.1.4", + "version": "3.0.2", "source": { "type": "git", "url": "https://github.com/php-fig/log.git", - "reference": "d49695b909c3b7628b6289db5479a1c204601f11" + "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11", - "reference": "d49695b909c3b7628b6289db5479a1c204601f11", + "url": "https://api.github.com/repos/php-fig/log/zipball/f16e1d5863e37f8d8c2a01719f5b34baa2b714d3", + "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=8.0.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1.x-dev" + "dev-master": "3.x-dev" } }, "autoload": { "psr-4": { - "Psr\\Log\\": "Psr/Log/" + "Psr\\Log\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -1872,9 +1822,9 @@ "psr-3" ], "support": { - "source": "https://github.com/php-fig/log/tree/1.1.4" + "source": "https://github.com/php-fig/log/tree/3.0.2" }, - "time": "2021-05-03T11:20:27+00:00" + "time": "2024-09-11T13:17:53+00:00" }, { "name": "sebastian/cli-parser", @@ -2911,16 +2861,16 @@ }, { "name": "spatie/phpunit-snapshot-assertions", - "version": "4.2.16", + "version": "4.2.17", "source": { "type": "git", "url": "https://github.com/spatie/phpunit-snapshot-assertions.git", - "reference": "4c325139313c06b656ba10d5b60306c0de728c1f" + "reference": "29a03a81f4c289e4769d4f4a010432cbef6ce39d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/phpunit-snapshot-assertions/zipball/4c325139313c06b656ba10d5b60306c0de728c1f", - "reference": "4c325139313c06b656ba10d5b60306c0de728c1f", + "url": "https://api.github.com/repos/spatie/phpunit-snapshot-assertions/zipball/29a03a81f4c289e4769d4f4a010432cbef6ce39d", + "reference": "29a03a81f4c289e4769d4f4a010432cbef6ce39d", "shasum": "" }, "require": { @@ -2930,9 +2880,9 @@ "ext-libxml": "*", "php": "^7.3|^7.4|^8.0", "phpunit/phpunit": "^8.3|^9.0", - "symfony/property-access": "^4.0|^5.0|^6.0", - "symfony/serializer": "^4.0|^5.0|^6.0", - "symfony/yaml": "^4.0|^5.0|^6.0" + "symfony/property-access": "^4.0|^5.0|^6.0|^7.0", + "symfony/serializer": "^4.0|^5.0|^6.0|^7.0", + "symfony/yaml": "^4.0|^5.0|^6.0|^7.0" }, "require-dev": { "phpunit/phpunit": "^9.1.0" @@ -2967,7 +2917,7 @@ ], "support": { "issues": "https://github.com/spatie/phpunit-snapshot-assertions/issues", - "source": "https://github.com/spatie/phpunit-snapshot-assertions/tree/4.2.16" + "source": "https://github.com/spatie/phpunit-snapshot-assertions/tree/4.2.17" }, "funding": [ { @@ -2975,20 +2925,20 @@ "type": "custom" } ], - "time": "2022-10-10T15:58:50+00:00" + "time": "2024-05-03T07:52:41+00:00" }, { "name": "squizlabs/php_codesniffer", - "version": "3.9.1", + "version": "3.11.2", "source": { "type": "git", "url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git", - "reference": "267a4405fff1d9c847134db3a3c92f1ab7f77909" + "reference": "1368f4a58c3c52114b86b1abe8f4098869cb0079" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/267a4405fff1d9c847134db3a3c92f1ab7f77909", - "reference": "267a4405fff1d9c847134db3a3c92f1ab7f77909", + "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/1368f4a58c3c52114b86b1abe8f4098869cb0079", + "reference": "1368f4a58c3c52114b86b1abe8f4098869cb0079", "shasum": "" }, "require": { @@ -3055,56 +3005,51 @@ "type": "open_collective" } ], - "time": "2024-03-31T21:03:09+00:00" + "time": "2024-12-11T16:04:26+00:00" }, { "name": "symfony/console", - "version": "v5.4.36", + "version": "v6.4.17", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "39f75d9d73d0c11952fdcecf4877b4d0f62a8f6e" + "reference": "799445db3f15768ecc382ac5699e6da0520a0a04" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/39f75d9d73d0c11952fdcecf4877b4d0f62a8f6e", - "reference": "39f75d9d73d0c11952fdcecf4877b4d0f62a8f6e", + "url": "https://api.github.com/repos/symfony/console/zipball/799445db3f15768ecc382ac5699e6da0520a0a04", + "reference": "799445db3f15768ecc382ac5699e6da0520a0a04", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php73": "^1.9", - "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/string": "^5.1|^6.0" + "symfony/service-contracts": "^2.5|^3", + "symfony/string": "^5.4|^6.0|^7.0" }, "conflict": { - "psr/log": ">=3", - "symfony/dependency-injection": "<4.4", - "symfony/dotenv": "<5.1", - "symfony/event-dispatcher": "<4.4", - "symfony/lock": "<4.4", - "symfony/process": "<4.4" + "symfony/dependency-injection": "<5.4", + "symfony/dotenv": "<5.4", + "symfony/event-dispatcher": "<5.4", + "symfony/lock": "<5.4", + "symfony/process": "<5.4" }, "provide": { - "psr/log-implementation": "1.0|2.0" + "psr/log-implementation": "1.0|2.0|3.0" }, "require-dev": { - "psr/log": "^1|^2", - "symfony/config": "^4.4|^5.0|^6.0", - "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/event-dispatcher": "^4.4|^5.0|^6.0", - "symfony/lock": "^4.4|^5.0|^6.0", - "symfony/process": "^4.4|^5.0|^6.0", - "symfony/var-dumper": "^4.4|^5.0|^6.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" + "psr/log": "^1|^2|^3", + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/lock": "^5.4|^6.0|^7.0", + "symfony/messenger": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.0|^7.0", + "symfony/stopwatch": "^5.4|^6.0|^7.0", + "symfony/var-dumper": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -3138,7 +3083,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v5.4.36" + "source": "https://github.com/symfony/console/tree/v6.4.17" }, "funding": [ { @@ -3154,24 +3099,24 @@ "type": "tidelift" } ], - "time": "2024-02-20T16:33:57+00:00" + "time": "2024-12-07T12:07:30+00:00" }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.29.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "32a9da87d7b3245e09ac426c83d334ae9f06f80f" + "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/32a9da87d7b3245e09ac426c83d334ae9f06f80f", - "reference": "32a9da87d7b3245e09ac426c83d334ae9f06f80f", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe", + "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "suggest": { "ext-intl": "For best performance" @@ -3179,8 +3124,8 @@ "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -3216,7 +3161,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.29.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.31.0" }, "funding": [ { @@ -3232,24 +3177,24 @@ "type": "tidelift" } ], - "time": "2024-01-29T20:11:03+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.29.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "bc45c394692b948b4d383a08d7753968bed9a83d" + "reference": "3833d7255cc303546435cb650316bff708a1c75c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/bc45c394692b948b4d383a08d7753968bed9a83d", - "reference": "bc45c394692b948b4d383a08d7753968bed9a83d", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/3833d7255cc303546435cb650316bff708a1c75c", + "reference": "3833d7255cc303546435cb650316bff708a1c75c", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "suggest": { "ext-intl": "For best performance" @@ -3257,8 +3202,8 @@ "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -3297,7 +3242,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.29.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.31.0" }, "funding": [ { @@ -3313,109 +3258,29 @@ "type": "tidelift" } ], - "time": "2024-01-29T20:11:03+00:00" - }, - { - "name": "symfony/polyfill-php73", - "version": "v1.29.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "21bd091060673a1177ae842c0ef8fe30893114d2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/21bd091060673a1177ae842c0ef8fe30893114d2", - "reference": "21bd091060673a1177ae842c0ef8fe30893114d2", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Php73\\": "" - }, - "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 7.3+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php73/tree/v1.29.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-01-29T20:11:03+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/property-access", - "version": "v5.4.38", + "version": "v6.4.13", "source": { "type": "git", "url": "https://github.com/symfony/property-access.git", - "reference": "b58ea319e56b440b4daaa38201ee63ba9efa44d5" + "reference": "8cc779d88d12e440adaa26387bcfc25744064afe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-access/zipball/b58ea319e56b440b4daaa38201ee63ba9efa44d5", - "reference": "b58ea319e56b440b4daaa38201ee63ba9efa44d5", + "url": "https://api.github.com/repos/symfony/property-access/zipball/8cc779d88d12e440adaa26387bcfc25744064afe", + "reference": "8cc779d88d12e440adaa26387bcfc25744064afe", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-php80": "^1.16", - "symfony/property-info": "^5.2|^6.0" + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/property-info": "^5.4|^6.0|^7.0" }, "require-dev": { - "symfony/cache": "^4.4|^5.0|^6.0" - }, - "suggest": { - "psr/cache-implementation": "To cache access methods." + "symfony/cache": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -3454,7 +3319,7 @@ "reflection" ], "support": { - "source": "https://github.com/symfony/property-access/tree/v5.4.38" + "source": "https://github.com/symfony/property-access/tree/v6.4.13" }, "funding": [ { @@ -3470,46 +3335,39 @@ "type": "tidelift" } ], - "time": "2024-03-18T16:56:51+00:00" + "time": "2024-09-25T14:18:03+00:00" }, { "name": "symfony/property-info", - "version": "v5.4.38", + "version": "v6.4.17", "source": { "type": "git", "url": "https://github.com/symfony/property-info.git", - "reference": "f3e4b84e5a33e655222167894398b671e93322d0" + "reference": "38b125d78e67668159f75383a293ec0c5d3f2963" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-info/zipball/f3e4b84e5a33e655222167894398b671e93322d0", - "reference": "f3e4b84e5a33e655222167894398b671e93322d0", + "url": "https://api.github.com/repos/symfony/property-info/zipball/38b125d78e67668159f75383a293ec0c5d3f2963", + "reference": "38b125d78e67668159f75383a293ec0c5d3f2963", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-php80": "^1.16", - "symfony/string": "^5.1|^6.0" + "php": ">=8.1", + "symfony/string": "^5.4|^6.0|^7.0" }, "conflict": { - "phpdocumentor/reflection-docblock": "<3.2.2", - "phpdocumentor/type-resolver": "<1.4.0", - "symfony/dependency-injection": "<4.4" + "doctrine/annotations": "<1.12", + "phpdocumentor/reflection-docblock": "<5.2", + "phpdocumentor/type-resolver": "<1.5.1", + "symfony/dependency-injection": "<5.4|>=6.0,<6.4" }, "require-dev": { - "doctrine/annotations": "^1.10.4|^2", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "phpstan/phpdoc-parser": "^1.0", - "symfony/cache": "^4.4|^5.0|^6.0", - "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/serializer": "^4.4|^5.0|^6.0" - }, - "suggest": { - "phpdocumentor/reflection-docblock": "To use the PHPDoc", - "psr/cache-implementation": "To cache results", - "symfony/doctrine-bridge": "To use Doctrine metadata", - "symfony/serializer": "To use Serializer metadata" + "doctrine/annotations": "^1.12|^2", + "phpdocumentor/reflection-docblock": "^5.2", + "phpstan/phpdoc-parser": "^1.0|^2.0", + "symfony/cache": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/serializer": "^5.4|^6.4|^7.0" }, "type": "library", "autoload": { @@ -3545,7 +3403,7 @@ "validator" ], "support": { - "source": "https://github.com/symfony/property-info/tree/v5.4.38" + "source": "https://github.com/symfony/property-info/tree/v6.4.17" }, "funding": [ { @@ -3561,66 +3419,61 @@ "type": "tidelift" } ], - "time": "2024-03-21T07:26:31+00:00" + "time": "2024-12-26T19:01:29+00:00" }, { "name": "symfony/serializer", - "version": "v5.4.38", + "version": "v6.4.15", "source": { "type": "git", "url": "https://github.com/symfony/serializer.git", - "reference": "978c155c92601227c014be0291b0bf5b58a1204a" + "reference": "9d862d66198f3c2e30404228629ef4c18d5d608e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/serializer/zipball/978c155c92601227c014be0291b0bf5b58a1204a", - "reference": "978c155c92601227c014be0291b0bf5b58a1204a", + "url": "https://api.github.com/repos/symfony/serializer/zipball/9d862d66198f3c2e30404228629ef4c18d5d608e", + "reference": "9d862d66198f3c2e30404228629ef4c18d5d608e", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-ctype": "~1.8" }, "conflict": { "doctrine/annotations": "<1.12", "phpdocumentor/reflection-docblock": "<3.2.2", "phpdocumentor/type-resolver": "<1.4.0", - "symfony/dependency-injection": "<4.4", + "symfony/dependency-injection": "<5.4", "symfony/property-access": "<5.4", "symfony/property-info": "<5.4.24|>=6,<6.2.11", - "symfony/uid": "<5.3", - "symfony/yaml": "<4.4" + "symfony/uid": "<5.4", + "symfony/validator": "<6.4", + "symfony/yaml": "<5.4" }, "require-dev": { "doctrine/annotations": "^1.12|^2", "phpdocumentor/reflection-docblock": "^3.2|^4.0|^5.0", - "symfony/cache": "^4.4|^5.0|^6.0", - "symfony/config": "^4.4|^5.0|^6.0", - "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/error-handler": "^4.4|^5.0|^6.0", - "symfony/filesystem": "^4.4|^5.0|^6.0", - "symfony/form": "^4.4|^5.0|^6.0", - "symfony/http-foundation": "^4.4|^5.0|^6.0", - "symfony/http-kernel": "^4.4|^5.0|^6.0", - "symfony/mime": "^4.4|^5.0|^6.0", - "symfony/property-access": "^5.4.26|^6.3", - "symfony/property-info": "^5.4.24|^6.2.11", - "symfony/uid": "^5.3|^6.0", - "symfony/validator": "^4.4|^5.0|^6.0", - "symfony/var-dumper": "^4.4|^5.0|^6.0", - "symfony/var-exporter": "^4.4|^5.0|^6.0", - "symfony/yaml": "^4.4|^5.0|^6.0" - }, - "suggest": { - "psr/cache-implementation": "For using the metadata cache.", - "symfony/config": "For using the XML mapping loader.", - "symfony/mime": "For using a MIME type guesser within the DataUriNormalizer.", - "symfony/property-access": "For using the ObjectNormalizer.", - "symfony/property-info": "To deserialize relations.", - "symfony/var-exporter": "For using the metadata compiler.", - "symfony/yaml": "For using the default YAML mapping loader." + "seld/jsonlint": "^1.10", + "symfony/cache": "^5.4|^6.0|^7.0", + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/console": "^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/filesystem": "^5.4|^6.0|^7.0", + "symfony/form": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^5.4|^6.0|^7.0", + "symfony/http-kernel": "^5.4|^6.0|^7.0", + "symfony/messenger": "^5.4|^6.0|^7.0", + "symfony/mime": "^5.4|^6.0|^7.0", + "symfony/property-access": "^5.4.26|^6.3|^7.0", + "symfony/property-info": "^5.4.24|^6.2.11|^7.0", + "symfony/translation-contracts": "^2.5|^3", + "symfony/uid": "^5.4|^6.0|^7.0", + "symfony/validator": "^6.4|^7.0", + "symfony/var-dumper": "^5.4|^6.0|^7.0", + "symfony/var-exporter": "^5.4|^6.0|^7.0", + "symfony/yaml": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -3648,7 +3501,7 @@ "description": "Handles serializing and deserializing data structures, including object graphs, into array structures or other formats like XML and JSON.", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/serializer/tree/v5.4.38" + "source": "https://github.com/symfony/serializer/tree/v6.4.15" }, "funding": [ { @@ -3664,47 +3517,47 @@ "type": "tidelift" } ], - "time": "2024-03-19T09:55:32+00:00" + "time": "2024-10-23T13:25:59+00:00" }, { "name": "symfony/service-contracts", - "version": "v2.5.3", + "version": "v3.5.1", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "a2329596ddc8fd568900e3fc76cba42489ecc7f3" + "reference": "e53260aabf78fb3d63f8d79d69ece59f80d5eda0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/a2329596ddc8fd568900e3fc76cba42489ecc7f3", - "reference": "a2329596ddc8fd568900e3fc76cba42489ecc7f3", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/e53260aabf78fb3d63f8d79d69ece59f80d5eda0", + "reference": "e53260aabf78fb3d63f8d79d69ece59f80d5eda0", "shasum": "" }, "require": { - "php": ">=7.2.5", - "psr/container": "^1.1", - "symfony/deprecation-contracts": "^2.1|^3" + "php": ">=8.1", + "psr/container": "^1.1|^2.0", + "symfony/deprecation-contracts": "^2.5|^3" }, "conflict": { "ext-psr": "<1.1|>=2" }, - "suggest": { - "symfony/service-implementation": "" - }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "2.5-dev" - }, "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.5-dev" } }, "autoload": { "psr-4": { "Symfony\\Contracts\\Service\\": "" - } + }, + "exclude-from-classmap": [ + "/Test/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -3731,7 +3584,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v2.5.3" + "source": "https://github.com/symfony/service-contracts/tree/v3.5.1" }, "funding": [ { @@ -3747,38 +3600,38 @@ "type": "tidelift" } ], - "time": "2023-04-21T15:04:16+00:00" + "time": "2024-09-25T14:20:29+00:00" }, { "name": "symfony/string", - "version": "v5.4.36", + "version": "v6.4.15", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "4e232c83622bd8cd32b794216aa29d0d266d353b" + "reference": "73a5e66ea2e1677c98d4449177c5a9cf9d8b4c6f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/4e232c83622bd8cd32b794216aa29d0d266d353b", - "reference": "4e232c83622bd8cd32b794216aa29d0d266d353b", + "url": "https://api.github.com/repos/symfony/string/zipball/73a5e66ea2e1677c98d4449177c5a9cf9d8b4c6f", + "reference": "73a5e66ea2e1677c98d4449177c5a9cf9d8b4c6f", "shasum": "" }, "require": { - "php": ">=7.2.5", + "php": ">=8.1", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-intl-grapheme": "~1.0", "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "~1.15" + "symfony/polyfill-mbstring": "~1.0" }, "conflict": { - "symfony/translation-contracts": ">=3.0" + "symfony/translation-contracts": "<2.5" }, "require-dev": { - "symfony/error-handler": "^4.4|^5.0|^6.0", - "symfony/http-client": "^4.4|^5.0|^6.0", - "symfony/translation-contracts": "^1.1|^2", - "symfony/var-exporter": "^4.4|^5.0|^6.0" + "symfony/error-handler": "^5.4|^6.0|^7.0", + "symfony/http-client": "^5.4|^6.0|^7.0", + "symfony/intl": "^6.2|^7.0", + "symfony/translation-contracts": "^2.5|^3.0", + "symfony/var-exporter": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -3817,7 +3670,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v5.4.36" + "source": "https://github.com/symfony/string/tree/v6.4.15" }, "funding": [ { @@ -3833,35 +3686,32 @@ "type": "tidelift" } ], - "time": "2024-02-01T08:49:30+00:00" + "time": "2024-11-13T13:31:12+00:00" }, { "name": "symfony/yaml", - "version": "v5.4.35", + "version": "v6.4.13", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "e78db7f5c70a21f0417a31f414c4a95fe76c07e4" + "reference": "e99b4e94d124b29ee4cf3140e1b537d2dad8cec9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/e78db7f5c70a21f0417a31f414c4a95fe76c07e4", - "reference": "e78db7f5c70a21f0417a31f414c4a95fe76c07e4", + "url": "https://api.github.com/repos/symfony/yaml/zipball/e99b4e94d124b29ee4cf3140e1b537d2dad8cec9", + "reference": "e99b4e94d124b29ee4cf3140e1b537d2dad8cec9", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-ctype": "^1.8" }, "conflict": { - "symfony/console": "<5.3" + "symfony/console": "<5.4" }, "require-dev": { - "symfony/console": "^5.3|^6.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" @@ -3892,7 +3742,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v5.4.35" + "source": "https://github.com/symfony/yaml/tree/v6.4.13" }, "funding": [ { @@ -3908,7 +3758,7 @@ "type": "tidelift" } ], - "time": "2024-01-23T13:51:25+00:00" + "time": "2024-09-25T14:18:03+00:00" }, { "name": "theseer/tokenizer", @@ -3963,12 +3813,12 @@ ], "aliases": [], "minimum-stability": "stable", - "stability-flags": [], + "stability-flags": {}, "prefer-stable": false, "prefer-lowest": false, "platform": { - "php": "^7.3|^8.0" + "php": "^8.1" }, - "platform-dev": [], + "platform-dev": {}, "plugin-api-version": "2.6.0" } From cf300bf16380cec0a3f28f679afd9fda0a0baa39 Mon Sep 17 00:00:00 2001 From: Titouan Mathis Date: Fri, 17 Jan 2025 17:03:58 +0100 Subject: [PATCH 06/28] Fix some Twig deprecation --- src/Helpers/Html.php | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/Helpers/Html.php b/src/Helpers/Html.php index cc1dad0..2a729d7 100644 --- a/src/Helpers/Html.php +++ b/src/Helpers/Html.php @@ -8,6 +8,7 @@ namespace Studiometa\TwigToolkit\Helpers; use Twig\Environment; +use Twig\Runtime\EscaperRuntime; use Jawira\CaseConverter\Convert; /** @@ -206,7 +207,7 @@ public static function renderAttributes(Environment $env, array $attributes):str $value = json_encode($value); } - $value = twig_escape_filter($env, $value, 'html_attr', $env->getCharset()); + $value = $env->getRuntime(EscaperRuntime::class)->escape($value, 'html_attr', $env->getCharset()); // Do not add null & false attributes if (is_null($value) || $value === false) { @@ -240,10 +241,10 @@ public static function renderTag( Environment $env, string $name, array $attributes = [], - string $content = null + string|null $content = null ):string { $attributes = static::renderAttributes($env, $attributes); - $name = twig_escape_filter($env, $name, 'html_attr', $env->getCharset()); + $name = $env->getRuntime(EscaperRuntime::class)->escape($name, 'html_attr', $env->getCharset()); // Render self closing tags. if (in_array($name, self::SELF_CLOSING_TAGS)) { From 2299c90e2531a927a30481c484e352ab8ff01110 Mon Sep 17 00:00:00 2001 From: Titouan Mathis Date: Fri, 17 Jan 2025 17:05:12 +0100 Subject: [PATCH 07/28] Update dev dependencies --- composer.json | 6 +- composer.lock | 1622 ++++++++++++++++++++++++++++++++++++------------- 2 files changed, 1206 insertions(+), 422 deletions(-) diff --git a/composer.json b/composer.json index 60aaf0d..4ae40a0 100644 --- a/composer.json +++ b/composer.json @@ -9,10 +9,10 @@ "spatie/url": "^1.3" }, "require-dev": { - "phpstan/phpstan": "^0.12.88", + "phpstan/phpstan": "^2.0", "squizlabs/php_codesniffer": "^3.6", - "pestphp/pest": "^1.22", - "spatie/pest-plugin-snapshots": "^1.0" + "pestphp/pest": "^2.0", + "spatie/pest-plugin-snapshots": "^2.0" }, "scripts": { "phpcs": "phpcs", diff --git a/composer.lock b/composer.lock index 487bebc..ae6d098 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "5cff74fc560453aaa3983dd4d54b14f1", + "content-hash": "43396b393f6bfe6e7ec0d2f2131e289e", "packages": [ { "name": "jawira/case-converter", @@ -612,36 +612,58 @@ ], "packages-dev": [ { - "name": "doctrine/instantiator", - "version": "2.0.0", + "name": "brianium/paratest", + "version": "v7.3.1", "source": { "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0" + "url": "https://github.com/paratestphp/paratest.git", + "reference": "551f46f52a93177d873f3be08a1649ae886b4a30" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/c6222283fa3f4ac679f8b9ced9a4e23f163e80d0", - "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0", + "url": "https://api.github.com/repos/paratestphp/paratest/zipball/551f46f52a93177d873f3be08a1649ae886b4a30", + "reference": "551f46f52a93177d873f3be08a1649ae886b4a30", "shasum": "" }, "require": { - "php": "^8.1" + "ext-dom": "*", + "ext-pcre": "*", + "ext-reflection": "*", + "ext-simplexml": "*", + "fidry/cpu-core-counter": "^0.5.1 || ^1.0.0", + "jean85/pretty-package-versions": "^2.0.5", + "php": "~8.1.0 || ~8.2.0 || ~8.3.0", + "phpunit/php-code-coverage": "^10.1.7", + "phpunit/php-file-iterator": "^4.1.0", + "phpunit/php-timer": "^6.0", + "phpunit/phpunit": "^10.4.2", + "sebastian/environment": "^6.0.1", + "symfony/console": "^6.3.4 || ^7.0.0", + "symfony/process": "^6.3.4 || ^7.0.0" }, "require-dev": { - "doctrine/coding-standard": "^11", - "ext-pdo": "*", - "ext-phar": "*", - "phpbench/phpbench": "^1.2", - "phpstan/phpstan": "^1.9.4", - "phpstan/phpstan-phpunit": "^1.3", - "phpunit/phpunit": "^9.5.27", - "vimeo/psalm": "^5.4" + "doctrine/coding-standard": "^12.0.0", + "ext-pcov": "*", + "ext-posix": "*", + "infection/infection": "^0.27.6", + "phpstan/phpstan": "^1.10.40", + "phpstan/phpstan-deprecation-rules": "^1.1.4", + "phpstan/phpstan-phpunit": "^1.3.15", + "phpstan/phpstan-strict-rules": "^1.5.2", + "squizlabs/php_codesniffer": "^3.7.2", + "symfony/filesystem": "^6.3.1 || ^7.0.0" }, + "bin": [ + "bin/paratest", + "bin/paratest.bat", + "bin/paratest_for_phpstorm" + ], "type": "library", "autoload": { "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" + "ParaTest\\": [ + "src/" + ] } }, "notification-url": "https://packagist.org/downloads/", @@ -650,36 +672,145 @@ ], "authors": [ { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "https://ocramius.github.io/" + "name": "Brian Scaturro", + "email": "scaturrob@gmail.com", + "role": "Developer" + }, + { + "name": "Filippo Tessarotto", + "email": "zoeslam@gmail.com", + "role": "Developer" } ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://www.doctrine-project.org/projects/instantiator.html", + "description": "Parallel testing for PHP", + "homepage": "https://github.com/paratestphp/paratest", "keywords": [ - "constructor", - "instantiate" + "concurrent", + "parallel", + "phpunit", + "testing" ], "support": { - "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/2.0.0" + "issues": "https://github.com/paratestphp/paratest/issues", + "source": "https://github.com/paratestphp/paratest/tree/v7.3.1" }, "funding": [ { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" + "url": "https://github.com/sponsors/Slamdunk", + "type": "github" }, { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, + "url": "https://paypal.me/filippotessarotto", + "type": "paypal" + } + ], + "time": "2023-10-31T09:24:17+00:00" + }, + { + "name": "doctrine/deprecations", + "version": "1.1.4", + "source": { + "type": "git", + "url": "https://github.com/doctrine/deprecations.git", + "reference": "31610dbb31faa98e6b5447b62340826f54fbc4e9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/31610dbb31faa98e6b5447b62340826f54fbc4e9", + "reference": "31610dbb31faa98e6b5447b62340826f54fbc4e9", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^9 || ^12", + "phpstan/phpstan": "1.4.10 || 2.0.3", + "phpstan/phpstan-phpunit": "^1.0 || ^2", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "psr/log": "^1 || ^2 || ^3" + }, + "suggest": { + "psr/log": "Allows logging deprecations via PSR-3 logger implementation" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Deprecations\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.", + "homepage": "https://www.doctrine-project.org/", + "support": { + "issues": "https://github.com/doctrine/deprecations/issues", + "source": "https://github.com/doctrine/deprecations/tree/1.1.4" + }, + "time": "2024-12-07T21:18:45+00:00" + }, + { + "name": "fidry/cpu-core-counter", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/theofidry/cpu-core-counter.git", + "reference": "8520451a140d3f46ac33042715115e290cf5785f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/8520451a140d3f46ac33042715115e290cf5785f", + "reference": "8520451a140d3f46ac33042715115e290cf5785f", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "fidry/makefile": "^0.2.0", + "fidry/php-cs-fixer-config": "^1.1.2", + "phpstan/extension-installer": "^1.2.0", + "phpstan/phpstan": "^1.9.2", + "phpstan/phpstan-deprecation-rules": "^1.0.0", + "phpstan/phpstan-phpunit": "^1.2.2", + "phpstan/phpstan-strict-rules": "^1.4.4", + "phpunit/phpunit": "^8.5.31 || ^9.5.26", + "webmozarts/strict-phpunit": "^7.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Fidry\\CpuCoreCounter\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator", - "type": "tidelift" + "name": "Thรฉo FIDRY", + "email": "theo.fidry@gmail.com" + } + ], + "description": "Tiny utility to get the number of CPU cores.", + "keywords": [ + "CPU", + "core" + ], + "support": { + "issues": "https://github.com/theofidry/cpu-core-counter/issues", + "source": "https://github.com/theofidry/cpu-core-counter/tree/1.2.0" + }, + "funding": [ + { + "url": "https://github.com/theofidry", + "type": "github" } ], - "time": "2022-12-30T00:23:10+00:00" + "time": "2024-08-06T10:04:20+00:00" }, { "name": "filp/whoops", @@ -752,6 +883,65 @@ ], "time": "2024-09-25T12:00:00+00:00" }, + { + "name": "jean85/pretty-package-versions", + "version": "2.1.0", + "source": { + "type": "git", + "url": "https://github.com/Jean85/pretty-package-versions.git", + "reference": "3c4e5f62ba8d7de1734312e4fff32f67a8daaf10" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/3c4e5f62ba8d7de1734312e4fff32f67a8daaf10", + "reference": "3c4e5f62ba8d7de1734312e4fff32f67a8daaf10", + "shasum": "" + }, + "require": { + "composer-runtime-api": "^2.1.0", + "php": "^7.4|^8.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.2", + "jean85/composer-provided-replaced-stub-package": "^1.0", + "phpstan/phpstan": "^1.4", + "phpunit/phpunit": "^7.5|^8.5|^9.6", + "vimeo/psalm": "^4.3 || ^5.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Jean85\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Alessandro Lai", + "email": "alessandro.lai85@gmail.com" + } + ], + "description": "A library to get pretty versions strings of installed dependencies", + "keywords": [ + "composer", + "package", + "release", + "versions" + ], + "support": { + "issues": "https://github.com/Jean85/pretty-package-versions/issues", + "source": "https://github.com/Jean85/pretty-package-versions/tree/2.1.0" + }, + "time": "2024-11-18T16:19:46+00:00" + }, { "name": "myclabs/deep-copy", "version": "1.12.1", @@ -872,32 +1062,40 @@ }, { "name": "nunomaduro/collision", - "version": "v6.4.0", + "version": "v7.11.0", "source": { "type": "git", "url": "https://github.com/nunomaduro/collision.git", - "reference": "f05978827b9343cba381ca05b8c7deee346b6015" + "reference": "994ea93df5d4132f69d3f1bd74730509df6e8a05" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/f05978827b9343cba381ca05b8c7deee346b6015", - "reference": "f05978827b9343cba381ca05b8c7deee346b6015", + "url": "https://api.github.com/repos/nunomaduro/collision/zipball/994ea93df5d4132f69d3f1bd74730509df6e8a05", + "reference": "994ea93df5d4132f69d3f1bd74730509df6e8a05", "shasum": "" }, "require": { - "filp/whoops": "^2.14.5", - "php": "^8.0.0", - "symfony/console": "^6.0.2" + "filp/whoops": "^2.16.0", + "nunomaduro/termwind": "^1.15.1", + "php": "^8.1.0", + "symfony/console": "^6.4.12" + }, + "conflict": { + "laravel/framework": ">=11.0.0" }, "require-dev": { - "brianium/paratest": "^6.4.1", - "laravel/framework": "^9.26.1", - "laravel/pint": "^1.1.1", - "nunomaduro/larastan": "^1.0.3", - "nunomaduro/mock-final-classes": "^1.1.0", - "orchestra/testbench": "^7.7", - "phpunit/phpunit": "^9.5.23", - "spatie/ignition": "^1.4.1" + "brianium/paratest": "^7.3.1", + "laravel/framework": "^10.48.22", + "laravel/pint": "^1.18.1", + "laravel/sail": "^1.36.0", + "laravel/sanctum": "^3.3.3", + "laravel/tinker": "^2.10.0", + "nunomaduro/larastan": "^2.9.8", + "orchestra/testbench-core": "^8.28.3", + "pestphp/pest": "^2.35.1", + "phpunit/phpunit": "^10.5.36", + "sebastian/environment": "^6.1.0", + "spatie/laravel-ignition": "^2.8.0" }, "type": "library", "extra": { @@ -905,12 +1103,12 @@ "providers": [ "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" ] - }, - "branch-alias": { - "dev-develop": "6.x-dev" } }, "autoload": { + "files": [ + "./src/Adapters/Phpunit/Autoload.php" + ], "psr-4": { "NunoMaduro\\Collision\\": "src/" } @@ -956,34 +1154,126 @@ "type": "patreon" } ], - "time": "2023-01-03T12:54:54+00:00" + "time": "2024-10-15T15:12:40+00:00" + }, + { + "name": "nunomaduro/termwind", + "version": "v1.17.0", + "source": { + "type": "git", + "url": "https://github.com/nunomaduro/termwind.git", + "reference": "5369ef84d8142c1d87e4ec278711d4ece3cbf301" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/5369ef84d8142c1d87e4ec278711d4ece3cbf301", + "reference": "5369ef84d8142c1d87e4ec278711d4ece3cbf301", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "php": "^8.1", + "symfony/console": "^6.4.15" + }, + "require-dev": { + "illuminate/console": "^10.48.24", + "illuminate/support": "^10.48.24", + "laravel/pint": "^1.18.2", + "pestphp/pest": "^2.36.0", + "pestphp/pest-plugin-mock": "2.0.0", + "phpstan/phpstan": "^1.12.11", + "phpstan/phpstan-strict-rules": "^1.6.1", + "symfony/var-dumper": "^6.4.15", + "thecodingmachine/phpstan-strict-rules": "^1.0.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Termwind\\Laravel\\TermwindServiceProvider" + ] + } + }, + "autoload": { + "files": [ + "src/Functions.php" + ], + "psr-4": { + "Termwind\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "Its like Tailwind CSS, but for the console.", + "keywords": [ + "cli", + "console", + "css", + "package", + "php", + "style" + ], + "support": { + "issues": "https://github.com/nunomaduro/termwind/issues", + "source": "https://github.com/nunomaduro/termwind/tree/v1.17.0" + }, + "funding": [ + { + "url": "https://www.paypal.com/paypalme/enunomaduro", + "type": "custom" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + }, + { + "url": "https://github.com/xiCO2k", + "type": "github" + } + ], + "time": "2024-11-21T10:36:35+00:00" }, { "name": "pestphp/pest", - "version": "v1.23.1", + "version": "v2.36.0", "source": { "type": "git", "url": "https://github.com/pestphp/pest.git", - "reference": "5c56ad8772b89611c72a07e23f6e30aa29dc677a" + "reference": "f8c88bd14dc1772bfaf02169afb601ecdf2724cd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pestphp/pest/zipball/5c56ad8772b89611c72a07e23f6e30aa29dc677a", - "reference": "5c56ad8772b89611c72a07e23f6e30aa29dc677a", + "url": "https://api.github.com/repos/pestphp/pest/zipball/f8c88bd14dc1772bfaf02169afb601ecdf2724cd", + "reference": "f8c88bd14dc1772bfaf02169afb601ecdf2724cd", "shasum": "" }, "require": { - "nunomaduro/collision": "^5.11.0|^6.4.0", - "pestphp/pest-plugin": "^1.1.0", - "php": "^7.3 || ^8.0", - "phpunit/phpunit": "^9.6.10" + "brianium/paratest": "^7.3.1", + "nunomaduro/collision": "^7.11.0|^8.4.0", + "nunomaduro/termwind": "^1.16.0|^2.1.0", + "pestphp/pest-plugin": "^2.1.1", + "pestphp/pest-plugin-arch": "^2.7.0", + "php": "^8.1.0", + "phpunit/phpunit": "^10.5.36" + }, + "conflict": { + "filp/whoops": "<2.16.0", + "phpunit/phpunit": ">10.5.36", + "sebastian/exporter": "<5.1.0", + "webmozart/assert": "<1.11.0" }, "require-dev": { - "illuminate/console": "^8.83.27", - "illuminate/support": "^8.83.27", - "laravel/dusk": "^6.25.2", - "pestphp/pest-dev-tools": "^1.0.0", - "pestphp/pest-plugin-parallel": "^1.2.1" + "pestphp/pest-dev-tools": "^2.17.0", + "pestphp/pest-plugin-type-coverage": "^2.8.7", + "symfony/process": "^6.4.0|^7.1.5" }, "bin": [ "bin/pest" @@ -992,19 +1282,28 @@ "extra": { "pest": { "plugins": [ + "Pest\\Plugins\\Bail", + "Pest\\Plugins\\Cache", "Pest\\Plugins\\Coverage", "Pest\\Plugins\\Init", + "Pest\\Plugins\\Environment", + "Pest\\Plugins\\Help", + "Pest\\Plugins\\Memory", + "Pest\\Plugins\\Only", + "Pest\\Plugins\\Printer", + "Pest\\Plugins\\ProcessIsolation", + "Pest\\Plugins\\Profile", + "Pest\\Plugins\\Retry", + "Pest\\Plugins\\Snapshot", + "Pest\\Plugins\\Verbose", "Pest\\Plugins\\Version", - "Pest\\Plugins\\Environment" + "Pest\\Plugins\\Parallel" ] }, - "laravel": { - "providers": [ - "Pest\\Laravel\\PestServiceProvider" + "phpstan": { + "includes": [ + "extension.neon" ] - }, - "branch-alias": { - "dev-1.x": "1.x-dev" } }, "autoload": { @@ -1026,7 +1325,7 @@ "email": "enunomaduro@gmail.com" } ], - "description": "An elegant PHP Testing Framework.", + "description": "The elegant PHP Testing Framework.", "keywords": [ "framework", "pest", @@ -1037,7 +1336,7 @@ ], "support": { "issues": "https://github.com/pestphp/pest/issues", - "source": "https://github.com/pestphp/pest/tree/v1.23.1" + "source": "https://github.com/pestphp/pest/tree/v2.36.0" }, "funding": [ { @@ -1049,40 +1348,38 @@ "type": "github" } ], - "time": "2023-07-12T19:42:47+00:00" + "time": "2024-10-15T15:30:56+00:00" }, { "name": "pestphp/pest-plugin", - "version": "v1.1.0", + "version": "v2.1.1", "source": { "type": "git", "url": "https://github.com/pestphp/pest-plugin.git", - "reference": "606c5f79c6a339b49838ffbee0151ca519efe378" + "reference": "e05d2859e08c2567ee38ce8b005d044e72648c0b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pestphp/pest-plugin/zipball/606c5f79c6a339b49838ffbee0151ca519efe378", - "reference": "606c5f79c6a339b49838ffbee0151ca519efe378", + "url": "https://api.github.com/repos/pestphp/pest-plugin/zipball/e05d2859e08c2567ee38ce8b005d044e72648c0b", + "reference": "e05d2859e08c2567ee38ce8b005d044e72648c0b", "shasum": "" }, "require": { - "composer-plugin-api": "^1.1.0 || ^2.0.0", - "php": "^7.3 || ^8.0" + "composer-plugin-api": "^2.0.0", + "composer-runtime-api": "^2.2.2", + "php": "^8.1" }, "conflict": { - "pestphp/pest": "<1.0" + "pestphp/pest": "<2.2.3" }, "require-dev": { - "composer/composer": "^2.4.2", - "pestphp/pest": "^1.22.1", - "pestphp/pest-dev-tools": "^1.0.0" + "composer/composer": "^2.5.8", + "pestphp/pest": "^2.16.0", + "pestphp/pest-dev-tools": "^2.16.0" }, "type": "composer-plugin", "extra": { - "class": "Pest\\Plugin\\Manager", - "branch-alias": { - "dev-master": "1.x-dev" - } + "class": "Pest\\Plugin\\Manager" }, "autoload": { "psr-4": { @@ -1105,7 +1402,7 @@ "unit" ], "support": { - "source": "https://github.com/pestphp/pest-plugin/tree/v1.1.0" + "source": "https://github.com/pestphp/pest-plugin/tree/v2.1.1" }, "funding": [ { @@ -1121,7 +1418,78 @@ "type": "patreon" } ], - "time": "2022-09-18T13:18:17+00:00" + "time": "2023-08-22T08:40:06+00:00" + }, + { + "name": "pestphp/pest-plugin-arch", + "version": "v2.7.0", + "source": { + "type": "git", + "url": "https://github.com/pestphp/pest-plugin-arch.git", + "reference": "d23b2d7498475354522c3818c42ef355dca3fcda" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/pestphp/pest-plugin-arch/zipball/d23b2d7498475354522c3818c42ef355dca3fcda", + "reference": "d23b2d7498475354522c3818c42ef355dca3fcda", + "shasum": "" + }, + "require": { + "nunomaduro/collision": "^7.10.0|^8.1.0", + "pestphp/pest-plugin": "^2.1.1", + "php": "^8.1", + "ta-tikoma/phpunit-architecture-test": "^0.8.4" + }, + "require-dev": { + "pestphp/pest": "^2.33.0", + "pestphp/pest-dev-tools": "^2.16.0" + }, + "type": "library", + "extra": { + "pest": { + "plugins": [ + "Pest\\Arch\\Plugin" + ] + } + }, + "autoload": { + "files": [ + "src/Autoload.php" + ], + "psr-4": { + "Pest\\Arch\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "The Arch plugin for Pest PHP.", + "keywords": [ + "arch", + "architecture", + "framework", + "pest", + "php", + "plugin", + "test", + "testing", + "unit" + ], + "support": { + "source": "https://github.com/pestphp/pest-plugin-arch/tree/v2.7.0" + }, + "funding": [ + { + "url": "https://www.paypal.com/paypalme/enunomaduro", + "type": "custom" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + } + ], + "time": "2024-01-26T09:46:42+00:00" }, { "name": "phar-io/manifest", @@ -1241,22 +1609,244 @@ }, "time": "2022-02-21T01:04:05+00:00" }, + { + "name": "phpdocumentor/reflection-common", + "version": "2.2.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-2.x": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" + } + ], + "description": "Common reflection classes used by phpdocumentor to reflect the code structure", + "homepage": "http://www.phpdoc.org", + "keywords": [ + "FQSEN", + "phpDocumentor", + "phpdoc", + "reflection", + "static analysis" + ], + "support": { + "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", + "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" + }, + "time": "2020-06-27T09:03:43+00:00" + }, + { + "name": "phpdocumentor/reflection-docblock", + "version": "5.6.1", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "e5e784149a09bd69d9a5e3b01c5cbd2e2bd653d8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/e5e784149a09bd69d9a5e3b01c5cbd2e2bd653d8", + "reference": "e5e784149a09bd69d9a5e3b01c5cbd2e2bd653d8", + "shasum": "" + }, + "require": { + "doctrine/deprecations": "^1.1", + "ext-filter": "*", + "php": "^7.4 || ^8.0", + "phpdocumentor/reflection-common": "^2.2", + "phpdocumentor/type-resolver": "^1.7", + "phpstan/phpdoc-parser": "^1.7|^2.0", + "webmozart/assert": "^1.9.1" + }, + "require-dev": { + "mockery/mockery": "~1.3.5 || ~1.6.0", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-mockery": "^1.1", + "phpstan/phpstan-webmozart-assert": "^1.2", + "phpunit/phpunit": "^9.5", + "psalm/phar": "^5.26" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + }, + { + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" + } + ], + "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", + "support": { + "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", + "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.6.1" + }, + "time": "2024-12-07T09:39:29+00:00" + }, + { + "name": "phpdocumentor/type-resolver", + "version": "1.10.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "679e3ce485b99e84c775d28e2e96fade9a7fb50a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/679e3ce485b99e84c775d28e2e96fade9a7fb50a", + "reference": "679e3ce485b99e84c775d28e2e96fade9a7fb50a", + "shasum": "" + }, + "require": { + "doctrine/deprecations": "^1.0", + "php": "^7.3 || ^8.0", + "phpdocumentor/reflection-common": "^2.0", + "phpstan/phpdoc-parser": "^1.18|^2.0" + }, + "require-dev": { + "ext-tokenizer": "*", + "phpbench/phpbench": "^1.2", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-phpunit": "^1.1", + "phpunit/phpunit": "^9.5", + "rector/rector": "^0.13.9", + "vimeo/psalm": "^4.25" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-1.x": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ], + "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", + "support": { + "issues": "https://github.com/phpDocumentor/TypeResolver/issues", + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.10.0" + }, + "time": "2024-11-09T15:12:26+00:00" + }, + { + "name": "phpstan/phpdoc-parser", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/phpstan/phpdoc-parser.git", + "reference": "c00d78fb6b29658347f9d37ebe104bffadf36299" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/c00d78fb6b29658347f9d37ebe104bffadf36299", + "reference": "c00d78fb6b29658347f9d37ebe104bffadf36299", + "shasum": "" + }, + "require": { + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "doctrine/annotations": "^2.0", + "nikic/php-parser": "^5.3.0", + "php-parallel-lint/php-parallel-lint": "^1.2", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^2.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpstan/phpstan-strict-rules": "^2.0", + "phpunit/phpunit": "^9.6", + "symfony/process": "^5.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "PHPStan\\PhpDocParser\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "PHPDoc parser with support for nullable, intersection and generic types", + "support": { + "issues": "https://github.com/phpstan/phpdoc-parser/issues", + "source": "https://github.com/phpstan/phpdoc-parser/tree/2.0.0" + }, + "time": "2024-10-13T11:29:49+00:00" + }, { "name": "phpstan/phpstan", - "version": "0.12.100", + "version": "2.1.1", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "48236ddf823547081b2b153d1cd2994b784328c3" + "reference": "cd6e973e04b4c2b94c86e8612b5a65f0da0e08e7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/48236ddf823547081b2b153d1cd2994b784328c3", - "reference": "48236ddf823547081b2b153d1cd2994b784328c3", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/cd6e973e04b4c2b94c86e8612b5a65f0da0e08e7", + "reference": "cd6e973e04b4c2b94c86e8612b5a65f0da0e08e7", "shasum": "" }, "require": { - "php": "^7.1|^8.0" + "php": "^7.4|^8.0" }, "conflict": { "phpstan/phpstan-shim": "*" @@ -1266,11 +1856,6 @@ "phpstan.phar" ], "type": "library", - "extra": { - "branch-alias": { - "dev-master": "0.12-dev" - } - }, "autoload": { "files": [ "bootstrap.php" @@ -1281,9 +1866,16 @@ "MIT" ], "description": "PHPStan - PHP Static Analysis Tool", + "keywords": [ + "dev", + "static analysis" + ], "support": { + "docs": "https://phpstan.org/user-guide/getting-started", + "forum": "https://github.com/phpstan/phpstan/discussions", "issues": "https://github.com/phpstan/phpstan/issues", - "source": "https://github.com/phpstan/phpstan/tree/0.12.100" + "security": "https://github.com/phpstan/phpstan/security/policy", + "source": "https://github.com/phpstan/phpstan-src" }, "funding": [ { @@ -1293,26 +1885,22 @@ { "url": "https://github.com/phpstan", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpstan/phpstan", - "type": "tidelift" } ], - "time": "2022-11-01T09:52:08+00:00" + "time": "2025-01-05T16:43:48+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "9.2.32", + "version": "10.1.16", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "85402a822d1ecf1db1096959413d35e1c37cf1a5" + "reference": "7e308268858ed6baedc8704a304727d20bc07c77" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/85402a822d1ecf1db1096959413d35e1c37cf1a5", - "reference": "85402a822d1ecf1db1096959413d35e1c37cf1a5", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/7e308268858ed6baedc8704a304727d20bc07c77", + "reference": "7e308268858ed6baedc8704a304727d20bc07c77", "shasum": "" }, "require": { @@ -1320,18 +1908,18 @@ "ext-libxml": "*", "ext-xmlwriter": "*", "nikic/php-parser": "^4.19.1 || ^5.1.0", - "php": ">=7.3", - "phpunit/php-file-iterator": "^3.0.6", - "phpunit/php-text-template": "^2.0.4", - "sebastian/code-unit-reverse-lookup": "^2.0.3", - "sebastian/complexity": "^2.0.3", - "sebastian/environment": "^5.1.5", - "sebastian/lines-of-code": "^1.0.4", - "sebastian/version": "^3.0.2", + "php": ">=8.1", + "phpunit/php-file-iterator": "^4.1.0", + "phpunit/php-text-template": "^3.0.1", + "sebastian/code-unit-reverse-lookup": "^3.0.0", + "sebastian/complexity": "^3.2.0", + "sebastian/environment": "^6.1.0", + "sebastian/lines-of-code": "^2.0.2", + "sebastian/version": "^4.0.1", "theseer/tokenizer": "^1.2.3" }, "require-dev": { - "phpunit/phpunit": "^9.6" + "phpunit/phpunit": "^10.1" }, "suggest": { "ext-pcov": "PHP extension that provides line coverage", @@ -1340,7 +1928,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "9.2.x-dev" + "dev-main": "10.1.x-dev" } }, "autoload": { @@ -1369,7 +1957,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.32" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.16" }, "funding": [ { @@ -1377,32 +1965,32 @@ "type": "github" } ], - "time": "2024-08-22T04:23:01+00:00" + "time": "2024-08-22T04:31:57+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "3.0.6", + "version": "4.1.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" + "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/a95037b6d9e608ba092da1b23931e537cadc3c3c", + "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-main": "4.0-dev" } }, "autoload": { @@ -1429,7 +2017,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" + "security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy", + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/4.1.0" }, "funding": [ { @@ -1437,28 +2026,28 @@ "type": "github" } ], - "time": "2021-12-02T12:48:52+00:00" + "time": "2023-08-31T06:24:48+00:00" }, { "name": "phpunit/php-invoker", - "version": "3.1.1", + "version": "4.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" + "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7", + "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { "ext-pcntl": "*", - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "suggest": { "ext-pcntl": "*" @@ -1466,7 +2055,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.1-dev" + "dev-main": "4.0-dev" } }, "autoload": { @@ -1492,7 +2081,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-invoker/issues", - "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1" + "source": "https://github.com/sebastianbergmann/php-invoker/tree/4.0.0" }, "funding": [ { @@ -1500,32 +2089,32 @@ "type": "github" } ], - "time": "2020-09-28T05:58:55+00:00" + "time": "2023-02-03T06:56:09+00:00" }, { "name": "phpunit/php-text-template", - "version": "2.0.4", + "version": "3.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" + "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/0c7b06ff49e3d5072f057eb1fa59258bf287a748", + "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-main": "3.0-dev" } }, "autoload": { @@ -1551,7 +2140,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" + "security": "https://github.com/sebastianbergmann/php-text-template/security/policy", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/3.0.1" }, "funding": [ { @@ -1559,32 +2149,32 @@ "type": "github" } ], - "time": "2020-10-26T05:33:50+00:00" + "time": "2023-08-31T14:07:24+00:00" }, { "name": "phpunit/php-timer", - "version": "5.0.3", + "version": "6.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" + "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/e2a2d67966e740530f4a3343fe2e030ffdc1161d", + "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0-dev" + "dev-main": "6.0-dev" } }, "autoload": { @@ -1610,7 +2200,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-timer/issues", - "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3" + "source": "https://github.com/sebastianbergmann/php-timer/tree/6.0.0" }, "funding": [ { @@ -1618,54 +2208,52 @@ "type": "github" } ], - "time": "2020-10-26T13:16:10+00:00" + "time": "2023-02-03T06:57:52+00:00" }, { "name": "phpunit/phpunit", - "version": "9.6.22", + "version": "10.5.36", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "f80235cb4d3caa59ae09be3adf1ded27521d1a9c" + "reference": "aa0a8ce701ea7ee314b0dfaa8970dc94f3f8c870" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/f80235cb4d3caa59ae09be3adf1ded27521d1a9c", - "reference": "f80235cb4d3caa59ae09be3adf1ded27521d1a9c", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/aa0a8ce701ea7ee314b0dfaa8970dc94f3f8c870", + "reference": "aa0a8ce701ea7ee314b0dfaa8970dc94f3f8c870", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.5.0 || ^2", "ext-dom": "*", "ext-json": "*", "ext-libxml": "*", "ext-mbstring": "*", "ext-xml": "*", "ext-xmlwriter": "*", - "myclabs/deep-copy": "^1.12.1", + "myclabs/deep-copy": "^1.12.0", "phar-io/manifest": "^2.0.4", "phar-io/version": "^3.2.1", - "php": ">=7.3", - "phpunit/php-code-coverage": "^9.2.32", - "phpunit/php-file-iterator": "^3.0.6", - "phpunit/php-invoker": "^3.1.1", - "phpunit/php-text-template": "^2.0.4", - "phpunit/php-timer": "^5.0.3", - "sebastian/cli-parser": "^1.0.2", - "sebastian/code-unit": "^1.0.8", - "sebastian/comparator": "^4.0.8", - "sebastian/diff": "^4.0.6", - "sebastian/environment": "^5.1.5", - "sebastian/exporter": "^4.0.6", - "sebastian/global-state": "^5.0.7", - "sebastian/object-enumerator": "^4.0.4", - "sebastian/resource-operations": "^3.0.4", - "sebastian/type": "^3.2.1", - "sebastian/version": "^3.0.2" + "php": ">=8.1", + "phpunit/php-code-coverage": "^10.1.16", + "phpunit/php-file-iterator": "^4.1.0", + "phpunit/php-invoker": "^4.0.0", + "phpunit/php-text-template": "^3.0.1", + "phpunit/php-timer": "^6.0.0", + "sebastian/cli-parser": "^2.0.1", + "sebastian/code-unit": "^2.0.0", + "sebastian/comparator": "^5.0.2", + "sebastian/diff": "^5.1.1", + "sebastian/environment": "^6.1.0", + "sebastian/exporter": "^5.1.2", + "sebastian/global-state": "^6.0.2", + "sebastian/object-enumerator": "^5.0.0", + "sebastian/recursion-context": "^5.0.0", + "sebastian/type": "^4.0.0", + "sebastian/version": "^4.0.1" }, "suggest": { - "ext-soap": "To be able to generate mocks based on WSDL files", - "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" + "ext-soap": "To be able to generate mocks based on WSDL files" }, "bin": [ "phpunit" @@ -1673,7 +2261,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "9.6-dev" + "dev-main": "10.5-dev" } }, "autoload": { @@ -1705,7 +2293,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.22" + "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.36" }, "funding": [ { @@ -1721,7 +2309,7 @@ "type": "tidelift" } ], - "time": "2024-12-05T13:48:26+00:00" + "time": "2024-10-08T15:36:51+00:00" }, { "name": "psr/container", @@ -1828,28 +2416,28 @@ }, { "name": "sebastian/cli-parser", - "version": "1.0.2", + "version": "2.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "2b56bea83a09de3ac06bb18b92f068e60cc6f50b" + "reference": "c34583b87e7b7a8055bf6c450c2c77ce32a24084" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/2b56bea83a09de3ac06bb18b92f068e60cc6f50b", - "reference": "2b56bea83a09de3ac06bb18b92f068e60cc6f50b", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/c34583b87e7b7a8055bf6c450c2c77ce32a24084", + "reference": "c34583b87e7b7a8055bf6c450c2c77ce32a24084", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-main": "2.0-dev" } }, "autoload": { @@ -1872,7 +2460,8 @@ "homepage": "https://github.com/sebastianbergmann/cli-parser", "support": { "issues": "https://github.com/sebastianbergmann/cli-parser/issues", - "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.2" + "security": "https://github.com/sebastianbergmann/cli-parser/security/policy", + "source": "https://github.com/sebastianbergmann/cli-parser/tree/2.0.1" }, "funding": [ { @@ -1880,32 +2469,32 @@ "type": "github" } ], - "time": "2024-03-02T06:27:43+00:00" + "time": "2024-03-02T07:12:49+00:00" }, { "name": "sebastian/code-unit", - "version": "1.0.8", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" + "reference": "a81fee9eef0b7a76af11d121767abc44c104e503" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/a81fee9eef0b7a76af11d121767abc44c104e503", + "reference": "a81fee9eef0b7a76af11d121767abc44c104e503", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-main": "2.0-dev" } }, "autoload": { @@ -1928,7 +2517,7 @@ "homepage": "https://github.com/sebastianbergmann/code-unit", "support": { "issues": "https://github.com/sebastianbergmann/code-unit/issues", - "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8" + "source": "https://github.com/sebastianbergmann/code-unit/tree/2.0.0" }, "funding": [ { @@ -1936,32 +2525,32 @@ "type": "github" } ], - "time": "2020-10-26T13:08:54+00:00" + "time": "2023-02-03T06:58:43+00:00" }, { "name": "sebastian/code-unit-reverse-lookup", - "version": "2.0.3", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" + "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/5e3a687f7d8ae33fb362c5c0743794bbb2420a1d", + "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-main": "3.0-dev" } }, "autoload": { @@ -1983,7 +2572,7 @@ "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", "support": { "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", - "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3" + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/3.0.0" }, "funding": [ { @@ -1991,34 +2580,36 @@ "type": "github" } ], - "time": "2020-09-28T05:30:19+00:00" + "time": "2023-02-03T06:59:15+00:00" }, { "name": "sebastian/comparator", - "version": "4.0.8", + "version": "5.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "fa0f136dd2334583309d32b62544682ee972b51a" + "reference": "a18251eb0b7a2dcd2f7aa3d6078b18545ef0558e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/fa0f136dd2334583309d32b62544682ee972b51a", - "reference": "fa0f136dd2334583309d32b62544682ee972b51a", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/a18251eb0b7a2dcd2f7aa3d6078b18545ef0558e", + "reference": "a18251eb0b7a2dcd2f7aa3d6078b18545ef0558e", "shasum": "" }, "require": { - "php": ">=7.3", - "sebastian/diff": "^4.0", - "sebastian/exporter": "^4.0" + "ext-dom": "*", + "ext-mbstring": "*", + "php": ">=8.1", + "sebastian/diff": "^5.0", + "sebastian/exporter": "^5.0" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-main": "5.0-dev" } }, "autoload": { @@ -2057,7 +2648,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.8" + "security": "https://github.com/sebastianbergmann/comparator/security/policy", + "source": "https://github.com/sebastianbergmann/comparator/tree/5.0.3" }, "funding": [ { @@ -2065,33 +2657,33 @@ "type": "github" } ], - "time": "2022-09-14T12:41:17+00:00" + "time": "2024-10-18T14:56:07+00:00" }, { "name": "sebastian/complexity", - "version": "2.0.3", + "version": "3.2.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "25f207c40d62b8b7aa32f5ab026c53561964053a" + "reference": "68ff824baeae169ec9f2137158ee529584553799" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/25f207c40d62b8b7aa32f5ab026c53561964053a", - "reference": "25f207c40d62b8b7aa32f5ab026c53561964053a", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/68ff824baeae169ec9f2137158ee529584553799", + "reference": "68ff824baeae169ec9f2137158ee529584553799", "shasum": "" }, "require": { "nikic/php-parser": "^4.18 || ^5.0", - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-main": "3.2-dev" } }, "autoload": { @@ -2114,7 +2706,8 @@ "homepage": "https://github.com/sebastianbergmann/complexity", "support": { "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.3" + "security": "https://github.com/sebastianbergmann/complexity/security/policy", + "source": "https://github.com/sebastianbergmann/complexity/tree/3.2.0" }, "funding": [ { @@ -2122,33 +2715,33 @@ "type": "github" } ], - "time": "2023-12-22T06:19:30+00:00" + "time": "2023-12-21T08:37:17+00:00" }, { "name": "sebastian/diff", - "version": "4.0.6", + "version": "5.1.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "ba01945089c3a293b01ba9badc29ad55b106b0bc" + "reference": "c41e007b4b62af48218231d6c2275e4c9b975b2e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/ba01945089c3a293b01ba9badc29ad55b106b0bc", - "reference": "ba01945089c3a293b01ba9badc29ad55b106b0bc", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/c41e007b4b62af48218231d6c2275e4c9b975b2e", + "reference": "c41e007b4b62af48218231d6c2275e4c9b975b2e", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3", - "symfony/process": "^4.2 || ^5" + "phpunit/phpunit": "^10.0", + "symfony/process": "^6.4" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-main": "5.1-dev" } }, "autoload": { @@ -2180,7 +2773,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.6" + "security": "https://github.com/sebastianbergmann/diff/security/policy", + "source": "https://github.com/sebastianbergmann/diff/tree/5.1.1" }, "funding": [ { @@ -2188,27 +2782,27 @@ "type": "github" } ], - "time": "2024-03-02T06:30:58+00:00" + "time": "2024-03-02T07:15:17+00:00" }, { "name": "sebastian/environment", - "version": "5.1.5", + "version": "6.1.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed" + "reference": "8074dbcd93529b357029f5cc5058fd3e43666984" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", - "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/8074dbcd93529b357029f5cc5058fd3e43666984", + "reference": "8074dbcd93529b357029f5cc5058fd3e43666984", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "suggest": { "ext-posix": "*" @@ -2216,7 +2810,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "5.1-dev" + "dev-main": "6.1-dev" } }, "autoload": { @@ -2235,7 +2829,7 @@ } ], "description": "Provides functionality to handle HHVM/PHP environments", - "homepage": "http://www.github.com/sebastianbergmann/environment", + "homepage": "https://github.com/sebastianbergmann/environment", "keywords": [ "Xdebug", "environment", @@ -2243,7 +2837,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.5" + "security": "https://github.com/sebastianbergmann/environment/security/policy", + "source": "https://github.com/sebastianbergmann/environment/tree/6.1.0" }, "funding": [ { @@ -2251,34 +2846,34 @@ "type": "github" } ], - "time": "2023-02-03T06:03:51+00:00" + "time": "2024-03-23T08:47:14+00:00" }, { "name": "sebastian/exporter", - "version": "4.0.6", + "version": "5.1.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "78c00df8f170e02473b682df15bfcdacc3d32d72" + "reference": "955288482d97c19a372d3f31006ab3f37da47adf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/78c00df8f170e02473b682df15bfcdacc3d32d72", - "reference": "78c00df8f170e02473b682df15bfcdacc3d32d72", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/955288482d97c19a372d3f31006ab3f37da47adf", + "reference": "955288482d97c19a372d3f31006ab3f37da47adf", "shasum": "" }, "require": { - "php": ">=7.3", - "sebastian/recursion-context": "^4.0" + "ext-mbstring": "*", + "php": ">=8.1", + "sebastian/recursion-context": "^5.0" }, "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-main": "5.1-dev" } }, "autoload": { @@ -2320,7 +2915,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.6" + "security": "https://github.com/sebastianbergmann/exporter/security/policy", + "source": "https://github.com/sebastianbergmann/exporter/tree/5.1.2" }, "funding": [ { @@ -2328,38 +2924,35 @@ "type": "github" } ], - "time": "2024-03-02T06:33:00+00:00" + "time": "2024-03-02T07:17:12+00:00" }, { "name": "sebastian/global-state", - "version": "5.0.7", + "version": "6.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9" + "reference": "987bafff24ecc4c9ac418cab1145b96dd6e9cbd9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9", - "reference": "bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/987bafff24ecc4c9ac418cab1145b96dd6e9cbd9", + "reference": "987bafff24ecc4c9ac418cab1145b96dd6e9cbd9", "shasum": "" }, "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" + "php": ">=8.1", + "sebastian/object-reflector": "^3.0", + "sebastian/recursion-context": "^5.0" }, "require-dev": { "ext-dom": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-uopz": "*" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0-dev" + "dev-main": "6.0-dev" } }, "autoload": { @@ -2378,13 +2971,14 @@ } ], "description": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", + "homepage": "https://www.github.com/sebastianbergmann/global-state", "keywords": [ "global state" ], "support": { "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.7" + "security": "https://github.com/sebastianbergmann/global-state/security/policy", + "source": "https://github.com/sebastianbergmann/global-state/tree/6.0.2" }, "funding": [ { @@ -2392,33 +2986,33 @@ "type": "github" } ], - "time": "2024-03-02T06:35:11+00:00" + "time": "2024-03-02T07:19:19+00:00" }, { "name": "sebastian/lines-of-code", - "version": "1.0.4", + "version": "2.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "e1e4a170560925c26d424b6a03aed157e7dcc5c5" + "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/e1e4a170560925c26d424b6a03aed157e7dcc5c5", - "reference": "e1e4a170560925c26d424b6a03aed157e7dcc5c5", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/856e7f6a75a84e339195d48c556f23be2ebf75d0", + "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0", "shasum": "" }, "require": { "nikic/php-parser": "^4.18 || ^5.0", - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-main": "2.0-dev" } }, "autoload": { @@ -2441,7 +3035,8 @@ "homepage": "https://github.com/sebastianbergmann/lines-of-code", "support": { "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.4" + "security": "https://github.com/sebastianbergmann/lines-of-code/security/policy", + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/2.0.2" }, "funding": [ { @@ -2449,34 +3044,34 @@ "type": "github" } ], - "time": "2023-12-22T06:20:34+00:00" + "time": "2023-12-21T08:38:20+00:00" }, { "name": "sebastian/object-enumerator", - "version": "4.0.4", + "version": "5.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" + "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/202d0e344a580d7f7d04b3fafce6933e59dae906", + "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906", "shasum": "" }, "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" + "php": ">=8.1", + "sebastian/object-reflector": "^3.0", + "sebastian/recursion-context": "^5.0" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-main": "5.0-dev" } }, "autoload": { @@ -2498,7 +3093,7 @@ "homepage": "https://github.com/sebastianbergmann/object-enumerator/", "support": { "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", - "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4" + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/5.0.0" }, "funding": [ { @@ -2506,32 +3101,32 @@ "type": "github" } ], - "time": "2020-10-26T13:12:34+00:00" + "time": "2023-02-03T07:08:32+00:00" }, { "name": "sebastian/object-reflector", - "version": "2.0.4", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" + "reference": "24ed13d98130f0e7122df55d06c5c4942a577957" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/24ed13d98130f0e7122df55d06c5c4942a577957", + "reference": "24ed13d98130f0e7122df55d06c5c4942a577957", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-main": "3.0-dev" } }, "autoload": { @@ -2553,7 +3148,7 @@ "homepage": "https://github.com/sebastianbergmann/object-reflector/", "support": { "issues": "https://github.com/sebastianbergmann/object-reflector/issues", - "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4" + "source": "https://github.com/sebastianbergmann/object-reflector/tree/3.0.0" }, "funding": [ { @@ -2561,32 +3156,32 @@ "type": "github" } ], - "time": "2020-10-26T13:14:26+00:00" + "time": "2023-02-03T07:06:18+00:00" }, { "name": "sebastian/recursion-context", - "version": "4.0.5", + "version": "5.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1" + "reference": "05909fb5bc7df4c52992396d0116aed689f93712" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", - "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/05909fb5bc7df4c52992396d0116aed689f93712", + "reference": "05909fb5bc7df4c52992396d0116aed689f93712", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-main": "5.0-dev" } }, "autoload": { @@ -2616,61 +3211,7 @@ "homepage": "https://github.com/sebastianbergmann/recursion-context", "support": { "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.5" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-02-03T06:07:39+00:00" - }, - { - "name": "sebastian/resource-operations", - "version": "3.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "05d5692a7993ecccd56a03e40cd7e5b09b1d404e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/05d5692a7993ecccd56a03e40cd7e5b09b1d404e", - "reference": "05d5692a7993ecccd56a03e40cd7e5b09b1d404e", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "support": { - "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.4" + "source": "https://github.com/sebastianbergmann/recursion-context/tree/5.0.0" }, "funding": [ { @@ -2678,32 +3219,32 @@ "type": "github" } ], - "time": "2024-03-14T16:00:52+00:00" + "time": "2023-02-03T07:05:40+00:00" }, { "name": "sebastian/type", - "version": "3.2.1", + "version": "4.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/type.git", - "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7" + "reference": "462699a16464c3944eefc02ebdd77882bd3925bf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", - "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/462699a16464c3944eefc02ebdd77882bd3925bf", + "reference": "462699a16464c3944eefc02ebdd77882bd3925bf", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.5" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.2-dev" + "dev-main": "4.0-dev" } }, "autoload": { @@ -2726,7 +3267,7 @@ "homepage": "https://github.com/sebastianbergmann/type", "support": { "issues": "https://github.com/sebastianbergmann/type/issues", - "source": "https://github.com/sebastianbergmann/type/tree/3.2.1" + "source": "https://github.com/sebastianbergmann/type/tree/4.0.0" }, "funding": [ { @@ -2734,29 +3275,29 @@ "type": "github" } ], - "time": "2023-02-03T06:13:03+00:00" + "time": "2023-02-03T07:10:45+00:00" }, { "name": "sebastian/version", - "version": "3.0.2", + "version": "4.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c6c1022351a901512170118436c764e473f6de8c" + "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", - "reference": "c6c1022351a901512170118436c764e473f6de8c", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c51fa83a5d8f43f1402e3f32a005e6262244ef17", + "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-main": "4.0-dev" } }, "autoload": { @@ -2779,7 +3320,7 @@ "homepage": "https://github.com/sebastianbergmann/version", "support": { "issues": "https://github.com/sebastianbergmann/version/issues", - "source": "https://github.com/sebastianbergmann/version/tree/3.0.2" + "source": "https://github.com/sebastianbergmann/version/tree/4.0.1" }, "funding": [ { @@ -2787,36 +3328,28 @@ "type": "github" } ], - "time": "2020-09-28T06:39:44+00:00" + "time": "2023-02-07T11:34:05+00:00" }, { "name": "spatie/pest-plugin-snapshots", - "version": "1.1.0", + "version": "2.2.0", "source": { "type": "git", "url": "https://github.com/spatie/pest-plugin-snapshots.git", - "reference": "7932ba9a44f9c5d010bcda4dc06ceb0474e13d6d" + "reference": "f7e600811fe056cd2a29e7716edb48e8c4b96c96" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/pest-plugin-snapshots/zipball/7932ba9a44f9c5d010bcda4dc06ceb0474e13d6d", - "reference": "7932ba9a44f9c5d010bcda4dc06ceb0474e13d6d", + "url": "https://api.github.com/repos/spatie/pest-plugin-snapshots/zipball/f7e600811fe056cd2a29e7716edb48e8c4b96c96", + "reference": "f7e600811fe056cd2a29e7716edb48e8c4b96c96", "shasum": "" }, "require": { - "pestphp/pest": "^1.0", - "php": "^7.4 || ^8.0", - "spatie/phpunit-snapshot-assertions": "^4.2.2" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^3.0" + "pestphp/pest": "^2.0|^3.0", + "php": "^8.1", + "spatie/phpunit-snapshot-assertions": "^5.1" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, "autoload": { "files": [ "src/Functions.php" @@ -2845,7 +3378,7 @@ ], "support": { "issues": "https://github.com/spatie/pest-plugin-snapshots/issues", - "source": "https://github.com/spatie/pest-plugin-snapshots/tree/1.1.0" + "source": "https://github.com/spatie/pest-plugin-snapshots/tree/2.2.0" }, "funding": [ { @@ -2857,20 +3390,20 @@ "type": "github" } ], - "time": "2021-07-08T18:00:48+00:00" + "time": "2024-09-20T14:13:06+00:00" }, { "name": "spatie/phpunit-snapshot-assertions", - "version": "4.2.17", + "version": "5.1.7", "source": { "type": "git", "url": "https://github.com/spatie/phpunit-snapshot-assertions.git", - "reference": "29a03a81f4c289e4769d4f4a010432cbef6ce39d" + "reference": "5c7ae9d555c3b46bddd35f4e4bab9a6181aa1446" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/phpunit-snapshot-assertions/zipball/29a03a81f4c289e4769d4f4a010432cbef6ce39d", - "reference": "29a03a81f4c289e4769d4f4a010432cbef6ce39d", + "url": "https://api.github.com/repos/spatie/phpunit-snapshot-assertions/zipball/5c7ae9d555c3b46bddd35f4e4bab9a6181aa1446", + "reference": "5c7ae9d555c3b46bddd35f4e4bab9a6181aa1446", "shasum": "" }, "require": { @@ -2878,16 +3411,25 @@ "ext-dom": "*", "ext-json": "*", "ext-libxml": "*", - "php": "^7.3|^7.4|^8.0", - "phpunit/phpunit": "^8.3|^9.0", - "symfony/property-access": "^4.0|^5.0|^6.0|^7.0", - "symfony/serializer": "^4.0|^5.0|^6.0|^7.0", - "symfony/yaml": "^4.0|^5.0|^6.0|^7.0" + "php": "^8.1", + "phpunit/phpunit": "^10.0|^11.0", + "symfony/property-access": "^5.2|^6.2|^7.0", + "symfony/serializer": "^5.2|^6.2|^7.0", + "symfony/yaml": "^5.2|^6.2|^7.0" }, "require-dev": { - "phpunit/phpunit": "^9.1.0" + "spatie/pixelmatch-php": "dev-main", + "spatie/ray": "^1.37" + }, + "suggest": { + "spatie/pixelmatch-php": "Required to use the image snapshot assertions" }, "type": "library", + "extra": { + "branch-alias": { + "dev-v5": "5.0-dev" + } + }, "autoload": { "psr-4": { "Spatie\\Snapshots\\": "src" @@ -2917,7 +3459,7 @@ ], "support": { "issues": "https://github.com/spatie/phpunit-snapshot-assertions/issues", - "source": "https://github.com/spatie/phpunit-snapshot-assertions/tree/4.2.17" + "source": "https://github.com/spatie/phpunit-snapshot-assertions/tree/5.1.7" }, "funding": [ { @@ -2925,7 +3467,7 @@ "type": "custom" } ], - "time": "2024-05-03T07:52:41+00:00" + "time": "2024-12-09T15:47:41+00:00" }, { "name": "squizlabs/php_codesniffer", @@ -3101,6 +3643,70 @@ ], "time": "2024-12-07T12:07:30+00:00" }, + { + "name": "symfony/finder", + "version": "v6.4.17", + "source": { + "type": "git", + "url": "https://github.com/symfony/finder.git", + "reference": "1d0e8266248c5d9ab6a87e3789e6dc482af3c9c7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/finder/zipball/1d0e8266248c5d9ab6a87e3789e6dc482af3c9c7", + "reference": "1d0e8266248c5d9ab6a87e3789e6dc482af3c9c7", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "symfony/filesystem": "^6.0|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Finder\\": "" + }, + "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": "Finds files and directories via an intuitive fluent interface", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/finder/tree/v6.4.17" + }, + "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-12-29T13:51:37+00:00" + }, { "name": "symfony/polyfill-intl-grapheme", "version": "v1.31.0", @@ -3260,6 +3866,67 @@ ], "time": "2024-09-09T11:45:10+00:00" }, + { + "name": "symfony/process", + "version": "v6.4.15", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "3cb242f059c14ae08591c5c4087d1fe443564392" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/3cb242f059c14ae08591c5c4087d1fe443564392", + "reference": "3cb242f059c14ae08591c5c4087d1fe443564392", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Process\\": "" + }, + "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": "Executes commands in sub-processes", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/process/tree/v6.4.15" + }, + "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-11-06T14:19:14+00:00" + }, { "name": "symfony/property-access", "version": "v6.4.13", @@ -3760,6 +4427,65 @@ ], "time": "2024-09-25T14:18:03+00:00" }, + { + "name": "ta-tikoma/phpunit-architecture-test", + "version": "0.8.4", + "source": { + "type": "git", + "url": "https://github.com/ta-tikoma/phpunit-architecture-test.git", + "reference": "89f0dea1cb0f0d5744d3ec1764a286af5e006636" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ta-tikoma/phpunit-architecture-test/zipball/89f0dea1cb0f0d5744d3ec1764a286af5e006636", + "reference": "89f0dea1cb0f0d5744d3ec1764a286af5e006636", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^4.18.0 || ^5.0.0", + "php": "^8.1.0", + "phpdocumentor/reflection-docblock": "^5.3.0", + "phpunit/phpunit": "^10.5.5 || ^11.0.0", + "symfony/finder": "^6.4.0 || ^7.0.0" + }, + "require-dev": { + "laravel/pint": "^1.13.7", + "phpstan/phpstan": "^1.10.52" + }, + "type": "library", + "autoload": { + "psr-4": { + "PHPUnit\\Architecture\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ni Shi", + "email": "futik0ma011@gmail.com" + }, + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "Methods for testing application architecture", + "keywords": [ + "architecture", + "phpunit", + "stucture", + "test", + "testing" + ], + "support": { + "issues": "https://github.com/ta-tikoma/phpunit-architecture-test/issues", + "source": "https://github.com/ta-tikoma/phpunit-architecture-test/tree/0.8.4" + }, + "time": "2024-01-05T14:10:56+00:00" + }, { "name": "theseer/tokenizer", "version": "1.2.3", @@ -3809,6 +4535,64 @@ } ], "time": "2024-03-03T12:36:25+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" } ], "aliases": [], From ce570d19a30b1ef051511b7a436b3261efcffc2d Mon Sep 17 00:00:00 2001 From: Titouan Mathis Date: Fri, 17 Jan 2025 17:05:46 +0100 Subject: [PATCH 08/28] Update snapshots --- ..._Twig_tag_should_be_able_to_render_complex_attributes___1.txt} | 0 ...___Twig_tag_should_be_able_to_render_dynamic_elements___1.txt} | 0 ...____Twig_tag_should_be_able_to_render_single_elements___1.txt} | 0 ...l__element_____Twig_tag_should_render_with_attributes___1.txt} | 0 ...element_____Twig_tag_should_render_without_attributes___1.txt} | 0 ...e_extension_should_add_a__twig__toolkit__url__function__1.yml} | 0 ...ig_filter_should_merge_default_and_required_attributes__1.txt} | 0 ...e_default_and_required_attributes_with_named_arguments__1.txt} | 0 ...utes_______Twig_filter_should_merge_default_attributes__1.txt} | 0 ...utes_______Twig_filter_should_merge_default_attributes__2.txt} | 0 ...utes_______Twig_filter_should_merge_default_attributes__3.txt} | 0 ...tes_______Twig_filter_should_merge_required_attributes__1.txt} | 0 ...r_should_merge_required_attributes_with_named_argument__1.txt} | 0 ...______Twig_function_should_not_render_empty_attributes__1.txt} | 0 ...______Twig_function_should_not_render_falsy_attributes__1.txt} | 0 ...ributes_______Twig_function_should_prevent_XSS_attacks__1.txt} | 0 ...ttributes_______Twig_function_should_render_attributes__1.txt} | 0 ..._______Twig_function_should_accept_a_string_parameter___1.txt} | 0 ...g_function_should_accept_an_array_of_string_parameter___1.txt} | 0 ...sses_______Twig_function_should_accept_an_empty_array___1.txt} | 0 ..._______Twig_function_should_accept_an_object_parameter__1.txt} | 0 ...uld_work_with_an_array_of_string_and_object_parameter___1.txt} | 0 ...___Twig_function_should_work_with_dynamic_test_values___1.txt} | 0 ...__styles_______Twig_function_should_render_inline_CSS___1.txt} | 0 ...n_should_render_inline_CSS_with_CSS_custom_properties___1.txt} | 0 25 files changed, 0 insertions(+), 0 deletions(-) rename tests/__snapshots__/{ElementTokenParserTest__The__html_element__Twig_tag_should_be_able_to_render_complex_attributes.__1.txt => ElementTokenParserTest__The_____html__element_____Twig_tag_should_be_able_to_render_complex_attributes___1.txt} (100%) rename tests/__snapshots__/{ElementTokenParserTest__The__html_element__Twig_tag_should_be_able_to_render_dynamic_elements.__1.txt => ElementTokenParserTest__The_____html__element_____Twig_tag_should_be_able_to_render_dynamic_elements___1.txt} (100%) rename tests/__snapshots__/{ElementTokenParserTest__The__html_element__Twig_tag_should_be_able_to_render_single_elements.__1.txt => ElementTokenParserTest__The_____html__element_____Twig_tag_should_be_able_to_render_single_elements___1.txt} (100%) rename tests/__snapshots__/{ElementTokenParserTest__The__html_element__Twig_tag_should_render_with_attributes.__1.txt => ElementTokenParserTest__The_____html__element_____Twig_tag_should_render_with_attributes___1.txt} (100%) rename tests/__snapshots__/{ElementTokenParserTest__The__html_element__Twig_tag_should_render_without_attributes.__1.txt => ElementTokenParserTest__The_____html__element_____Twig_tag_should_render_without_attributes___1.txt} (100%) rename tests/__snapshots__/{ExtensionTest__The_extension_should_add_a_twig_toolkit_url_function__1.yml => ExtensionTest__The_extension_should_add_a__twig__toolkit__url__function__1.yml} (100%) rename tests/__snapshots__/{HtmlTest__The__attrmerge_html_attributes()__Twig_filter_should_merge_default_and_required_attributes__1.txt => HtmlTest__The_____attr_merge__html__attributes_______Twig_filter_should_merge_default_and_required_attributes__1.txt} (100%) rename tests/__snapshots__/{HtmlTest__The__attrmerge_html_attributes()__Twig_filter_should_merge_default_and_required_attributes_with_named_arguments__1.txt => HtmlTest__The_____attr_merge__html__attributes_______Twig_filter_should_merge_default_and_required_attributes_with_named_arguments__1.txt} (100%) rename tests/__snapshots__/{HtmlTest__The__attrmerge_html_attributes()__Twig_filter_should_merge_default_attributes__1.txt => HtmlTest__The_____attr_merge__html__attributes_______Twig_filter_should_merge_default_attributes__1.txt} (100%) rename tests/__snapshots__/{HtmlTest__The__attrmerge_html_attributes()__Twig_filter_should_merge_default_attributes__2.txt => HtmlTest__The_____attr_merge__html__attributes_______Twig_filter_should_merge_default_attributes__2.txt} (100%) rename tests/__snapshots__/{HtmlTest__The__attrmerge_html_attributes()__Twig_filter_should_merge_default_attributes__3.txt => HtmlTest__The_____attr_merge__html__attributes_______Twig_filter_should_merge_default_attributes__3.txt} (100%) rename tests/__snapshots__/{HtmlTest__The__attrmerge_html_attributes()__Twig_filter_should_merge_required_attributes__1.txt => HtmlTest__The_____attr_merge__html__attributes_______Twig_filter_should_merge_required_attributes__1.txt} (100%) rename tests/__snapshots__/{HtmlTest__The__attrmerge_html_attributes()__Twig_filter_should_merge_required_attributes_with_named_argument__1.txt => HtmlTest__The_____attr_merge__html__attributes_______Twig_filter_should_merge_required_attributes_with_named_argument__1.txt} (100%) rename tests/__snapshots__/{HtmlTest__The__html_attributes()__Twig_function_should_not_render_empty_attributes__1.txt => HtmlTest__The_____html__attributes_______Twig_function_should_not_render_empty_attributes__1.txt} (100%) rename tests/__snapshots__/{HtmlTest__The__html_attributes()__Twig_function_should_not_render_falsy_attributes__1.txt => HtmlTest__The_____html__attributes_______Twig_function_should_not_render_falsy_attributes__1.txt} (100%) rename tests/__snapshots__/{HtmlTest__The__html_attributes()__Twig_function_should_prevent_XSS_attacks__1.txt => HtmlTest__The_____html__attributes_______Twig_function_should_prevent_XSS_attacks__1.txt} (100%) rename tests/__snapshots__/{HtmlTest__The__html_attributes()__Twig_function_should_render_attributes__1.txt => HtmlTest__The_____html__attributes_______Twig_function_should_render_attributes__1.txt} (100%) rename tests/__snapshots__/{HtmlTest__The__html_classes()__Twig_function_should_accept_a_string_parameter.__1.txt => HtmlTest__The_____html__classes_______Twig_function_should_accept_a_string_parameter___1.txt} (100%) rename tests/__snapshots__/{HtmlTest__The__html_classes()__Twig_function_should_accept_an_array_of_string_parameter.__1.txt => HtmlTest__The_____html__classes_______Twig_function_should_accept_an_array_of_string_parameter___1.txt} (100%) rename tests/__snapshots__/{HtmlTest__The__html_classes()__Twig_function_should_accept_an_empty_array.__1.txt => HtmlTest__The_____html__classes_______Twig_function_should_accept_an_empty_array___1.txt} (100%) rename tests/__snapshots__/{HtmlTest__The__html_classes()__Twig_function_should_accept_an_object_parameter__1.txt => HtmlTest__The_____html__classes_______Twig_function_should_accept_an_object_parameter__1.txt} (100%) rename tests/__snapshots__/{HtmlTest__The__html_classes()__Twig_function_should_work_with_an_array_of_string_and_object_parameter.__1.txt => HtmlTest__The_____html__classes_______Twig_function_should_work_with_an_array_of_string_and_object_parameter___1.txt} (100%) rename tests/__snapshots__/{HtmlTest__The__html_classes()__Twig_function_should_work_with_dynamic_test_values.__1.txt => HtmlTest__The_____html__classes_______Twig_function_should_work_with_dynamic_test_values___1.txt} (100%) rename tests/__snapshots__/{HtmlTest__The__html_styles()__Twig_function_should_render_inline_CSS.__1.txt => HtmlTest__The_____html__styles_______Twig_function_should_render_inline_CSS___1.txt} (100%) rename tests/__snapshots__/{HtmlTest__The__html_styles()__Twig_function_should_render_inline_CSS_with_CSS_custom_properties.__1.txt => HtmlTest__The_____html__styles_______Twig_function_should_render_inline_CSS_with_CSS_custom_properties___1.txt} (100%) diff --git a/tests/__snapshots__/ElementTokenParserTest__The__html_element__Twig_tag_should_be_able_to_render_complex_attributes.__1.txt b/tests/__snapshots__/ElementTokenParserTest__The_____html__element_____Twig_tag_should_be_able_to_render_complex_attributes___1.txt similarity index 100% rename from tests/__snapshots__/ElementTokenParserTest__The__html_element__Twig_tag_should_be_able_to_render_complex_attributes.__1.txt rename to tests/__snapshots__/ElementTokenParserTest__The_____html__element_____Twig_tag_should_be_able_to_render_complex_attributes___1.txt diff --git a/tests/__snapshots__/ElementTokenParserTest__The__html_element__Twig_tag_should_be_able_to_render_dynamic_elements.__1.txt b/tests/__snapshots__/ElementTokenParserTest__The_____html__element_____Twig_tag_should_be_able_to_render_dynamic_elements___1.txt similarity index 100% rename from tests/__snapshots__/ElementTokenParserTest__The__html_element__Twig_tag_should_be_able_to_render_dynamic_elements.__1.txt rename to tests/__snapshots__/ElementTokenParserTest__The_____html__element_____Twig_tag_should_be_able_to_render_dynamic_elements___1.txt diff --git a/tests/__snapshots__/ElementTokenParserTest__The__html_element__Twig_tag_should_be_able_to_render_single_elements.__1.txt b/tests/__snapshots__/ElementTokenParserTest__The_____html__element_____Twig_tag_should_be_able_to_render_single_elements___1.txt similarity index 100% rename from tests/__snapshots__/ElementTokenParserTest__The__html_element__Twig_tag_should_be_able_to_render_single_elements.__1.txt rename to tests/__snapshots__/ElementTokenParserTest__The_____html__element_____Twig_tag_should_be_able_to_render_single_elements___1.txt diff --git a/tests/__snapshots__/ElementTokenParserTest__The__html_element__Twig_tag_should_render_with_attributes.__1.txt b/tests/__snapshots__/ElementTokenParserTest__The_____html__element_____Twig_tag_should_render_with_attributes___1.txt similarity index 100% rename from tests/__snapshots__/ElementTokenParserTest__The__html_element__Twig_tag_should_render_with_attributes.__1.txt rename to tests/__snapshots__/ElementTokenParserTest__The_____html__element_____Twig_tag_should_render_with_attributes___1.txt diff --git a/tests/__snapshots__/ElementTokenParserTest__The__html_element__Twig_tag_should_render_without_attributes.__1.txt b/tests/__snapshots__/ElementTokenParserTest__The_____html__element_____Twig_tag_should_render_without_attributes___1.txt similarity index 100% rename from tests/__snapshots__/ElementTokenParserTest__The__html_element__Twig_tag_should_render_without_attributes.__1.txt rename to tests/__snapshots__/ElementTokenParserTest__The_____html__element_____Twig_tag_should_render_without_attributes___1.txt diff --git a/tests/__snapshots__/ExtensionTest__The_extension_should_add_a_twig_toolkit_url_function__1.yml b/tests/__snapshots__/ExtensionTest__The_extension_should_add_a__twig__toolkit__url__function__1.yml similarity index 100% rename from tests/__snapshots__/ExtensionTest__The_extension_should_add_a_twig_toolkit_url_function__1.yml rename to tests/__snapshots__/ExtensionTest__The_extension_should_add_a__twig__toolkit__url__function__1.yml diff --git a/tests/__snapshots__/HtmlTest__The__attrmerge_html_attributes()__Twig_filter_should_merge_default_and_required_attributes__1.txt b/tests/__snapshots__/HtmlTest__The_____attr_merge__html__attributes_______Twig_filter_should_merge_default_and_required_attributes__1.txt similarity index 100% rename from tests/__snapshots__/HtmlTest__The__attrmerge_html_attributes()__Twig_filter_should_merge_default_and_required_attributes__1.txt rename to tests/__snapshots__/HtmlTest__The_____attr_merge__html__attributes_______Twig_filter_should_merge_default_and_required_attributes__1.txt diff --git a/tests/__snapshots__/HtmlTest__The__attrmerge_html_attributes()__Twig_filter_should_merge_default_and_required_attributes_with_named_arguments__1.txt b/tests/__snapshots__/HtmlTest__The_____attr_merge__html__attributes_______Twig_filter_should_merge_default_and_required_attributes_with_named_arguments__1.txt similarity index 100% rename from tests/__snapshots__/HtmlTest__The__attrmerge_html_attributes()__Twig_filter_should_merge_default_and_required_attributes_with_named_arguments__1.txt rename to tests/__snapshots__/HtmlTest__The_____attr_merge__html__attributes_______Twig_filter_should_merge_default_and_required_attributes_with_named_arguments__1.txt diff --git a/tests/__snapshots__/HtmlTest__The__attrmerge_html_attributes()__Twig_filter_should_merge_default_attributes__1.txt b/tests/__snapshots__/HtmlTest__The_____attr_merge__html__attributes_______Twig_filter_should_merge_default_attributes__1.txt similarity index 100% rename from tests/__snapshots__/HtmlTest__The__attrmerge_html_attributes()__Twig_filter_should_merge_default_attributes__1.txt rename to tests/__snapshots__/HtmlTest__The_____attr_merge__html__attributes_______Twig_filter_should_merge_default_attributes__1.txt diff --git a/tests/__snapshots__/HtmlTest__The__attrmerge_html_attributes()__Twig_filter_should_merge_default_attributes__2.txt b/tests/__snapshots__/HtmlTest__The_____attr_merge__html__attributes_______Twig_filter_should_merge_default_attributes__2.txt similarity index 100% rename from tests/__snapshots__/HtmlTest__The__attrmerge_html_attributes()__Twig_filter_should_merge_default_attributes__2.txt rename to tests/__snapshots__/HtmlTest__The_____attr_merge__html__attributes_______Twig_filter_should_merge_default_attributes__2.txt diff --git a/tests/__snapshots__/HtmlTest__The__attrmerge_html_attributes()__Twig_filter_should_merge_default_attributes__3.txt b/tests/__snapshots__/HtmlTest__The_____attr_merge__html__attributes_______Twig_filter_should_merge_default_attributes__3.txt similarity index 100% rename from tests/__snapshots__/HtmlTest__The__attrmerge_html_attributes()__Twig_filter_should_merge_default_attributes__3.txt rename to tests/__snapshots__/HtmlTest__The_____attr_merge__html__attributes_______Twig_filter_should_merge_default_attributes__3.txt diff --git a/tests/__snapshots__/HtmlTest__The__attrmerge_html_attributes()__Twig_filter_should_merge_required_attributes__1.txt b/tests/__snapshots__/HtmlTest__The_____attr_merge__html__attributes_______Twig_filter_should_merge_required_attributes__1.txt similarity index 100% rename from tests/__snapshots__/HtmlTest__The__attrmerge_html_attributes()__Twig_filter_should_merge_required_attributes__1.txt rename to tests/__snapshots__/HtmlTest__The_____attr_merge__html__attributes_______Twig_filter_should_merge_required_attributes__1.txt diff --git a/tests/__snapshots__/HtmlTest__The__attrmerge_html_attributes()__Twig_filter_should_merge_required_attributes_with_named_argument__1.txt b/tests/__snapshots__/HtmlTest__The_____attr_merge__html__attributes_______Twig_filter_should_merge_required_attributes_with_named_argument__1.txt similarity index 100% rename from tests/__snapshots__/HtmlTest__The__attrmerge_html_attributes()__Twig_filter_should_merge_required_attributes_with_named_argument__1.txt rename to tests/__snapshots__/HtmlTest__The_____attr_merge__html__attributes_______Twig_filter_should_merge_required_attributes_with_named_argument__1.txt diff --git a/tests/__snapshots__/HtmlTest__The__html_attributes()__Twig_function_should_not_render_empty_attributes__1.txt b/tests/__snapshots__/HtmlTest__The_____html__attributes_______Twig_function_should_not_render_empty_attributes__1.txt similarity index 100% rename from tests/__snapshots__/HtmlTest__The__html_attributes()__Twig_function_should_not_render_empty_attributes__1.txt rename to tests/__snapshots__/HtmlTest__The_____html__attributes_______Twig_function_should_not_render_empty_attributes__1.txt diff --git a/tests/__snapshots__/HtmlTest__The__html_attributes()__Twig_function_should_not_render_falsy_attributes__1.txt b/tests/__snapshots__/HtmlTest__The_____html__attributes_______Twig_function_should_not_render_falsy_attributes__1.txt similarity index 100% rename from tests/__snapshots__/HtmlTest__The__html_attributes()__Twig_function_should_not_render_falsy_attributes__1.txt rename to tests/__snapshots__/HtmlTest__The_____html__attributes_______Twig_function_should_not_render_falsy_attributes__1.txt diff --git a/tests/__snapshots__/HtmlTest__The__html_attributes()__Twig_function_should_prevent_XSS_attacks__1.txt b/tests/__snapshots__/HtmlTest__The_____html__attributes_______Twig_function_should_prevent_XSS_attacks__1.txt similarity index 100% rename from tests/__snapshots__/HtmlTest__The__html_attributes()__Twig_function_should_prevent_XSS_attacks__1.txt rename to tests/__snapshots__/HtmlTest__The_____html__attributes_______Twig_function_should_prevent_XSS_attacks__1.txt diff --git a/tests/__snapshots__/HtmlTest__The__html_attributes()__Twig_function_should_render_attributes__1.txt b/tests/__snapshots__/HtmlTest__The_____html__attributes_______Twig_function_should_render_attributes__1.txt similarity index 100% rename from tests/__snapshots__/HtmlTest__The__html_attributes()__Twig_function_should_render_attributes__1.txt rename to tests/__snapshots__/HtmlTest__The_____html__attributes_______Twig_function_should_render_attributes__1.txt diff --git a/tests/__snapshots__/HtmlTest__The__html_classes()__Twig_function_should_accept_a_string_parameter.__1.txt b/tests/__snapshots__/HtmlTest__The_____html__classes_______Twig_function_should_accept_a_string_parameter___1.txt similarity index 100% rename from tests/__snapshots__/HtmlTest__The__html_classes()__Twig_function_should_accept_a_string_parameter.__1.txt rename to tests/__snapshots__/HtmlTest__The_____html__classes_______Twig_function_should_accept_a_string_parameter___1.txt diff --git a/tests/__snapshots__/HtmlTest__The__html_classes()__Twig_function_should_accept_an_array_of_string_parameter.__1.txt b/tests/__snapshots__/HtmlTest__The_____html__classes_______Twig_function_should_accept_an_array_of_string_parameter___1.txt similarity index 100% rename from tests/__snapshots__/HtmlTest__The__html_classes()__Twig_function_should_accept_an_array_of_string_parameter.__1.txt rename to tests/__snapshots__/HtmlTest__The_____html__classes_______Twig_function_should_accept_an_array_of_string_parameter___1.txt diff --git a/tests/__snapshots__/HtmlTest__The__html_classes()__Twig_function_should_accept_an_empty_array.__1.txt b/tests/__snapshots__/HtmlTest__The_____html__classes_______Twig_function_should_accept_an_empty_array___1.txt similarity index 100% rename from tests/__snapshots__/HtmlTest__The__html_classes()__Twig_function_should_accept_an_empty_array.__1.txt rename to tests/__snapshots__/HtmlTest__The_____html__classes_______Twig_function_should_accept_an_empty_array___1.txt diff --git a/tests/__snapshots__/HtmlTest__The__html_classes()__Twig_function_should_accept_an_object_parameter__1.txt b/tests/__snapshots__/HtmlTest__The_____html__classes_______Twig_function_should_accept_an_object_parameter__1.txt similarity index 100% rename from tests/__snapshots__/HtmlTest__The__html_classes()__Twig_function_should_accept_an_object_parameter__1.txt rename to tests/__snapshots__/HtmlTest__The_____html__classes_______Twig_function_should_accept_an_object_parameter__1.txt diff --git a/tests/__snapshots__/HtmlTest__The__html_classes()__Twig_function_should_work_with_an_array_of_string_and_object_parameter.__1.txt b/tests/__snapshots__/HtmlTest__The_____html__classes_______Twig_function_should_work_with_an_array_of_string_and_object_parameter___1.txt similarity index 100% rename from tests/__snapshots__/HtmlTest__The__html_classes()__Twig_function_should_work_with_an_array_of_string_and_object_parameter.__1.txt rename to tests/__snapshots__/HtmlTest__The_____html__classes_______Twig_function_should_work_with_an_array_of_string_and_object_parameter___1.txt diff --git a/tests/__snapshots__/HtmlTest__The__html_classes()__Twig_function_should_work_with_dynamic_test_values.__1.txt b/tests/__snapshots__/HtmlTest__The_____html__classes_______Twig_function_should_work_with_dynamic_test_values___1.txt similarity index 100% rename from tests/__snapshots__/HtmlTest__The__html_classes()__Twig_function_should_work_with_dynamic_test_values.__1.txt rename to tests/__snapshots__/HtmlTest__The_____html__classes_______Twig_function_should_work_with_dynamic_test_values___1.txt diff --git a/tests/__snapshots__/HtmlTest__The__html_styles()__Twig_function_should_render_inline_CSS.__1.txt b/tests/__snapshots__/HtmlTest__The_____html__styles_______Twig_function_should_render_inline_CSS___1.txt similarity index 100% rename from tests/__snapshots__/HtmlTest__The__html_styles()__Twig_function_should_render_inline_CSS.__1.txt rename to tests/__snapshots__/HtmlTest__The_____html__styles_______Twig_function_should_render_inline_CSS___1.txt diff --git a/tests/__snapshots__/HtmlTest__The__html_styles()__Twig_function_should_render_inline_CSS_with_CSS_custom_properties.__1.txt b/tests/__snapshots__/HtmlTest__The_____html__styles_______Twig_function_should_render_inline_CSS_with_CSS_custom_properties___1.txt similarity index 100% rename from tests/__snapshots__/HtmlTest__The__html_styles()__Twig_function_should_render_inline_CSS_with_CSS_custom_properties.__1.txt rename to tests/__snapshots__/HtmlTest__The_____html__styles_______Twig_function_should_render_inline_CSS_with_CSS_custom_properties___1.txt From 05a297bb4b216e078c9b19e07ca6d96c5c5f3ae7 Mon Sep 17 00:00:00 2001 From: Titouan Mathis Date: Fri, 17 Jan 2025 17:06:54 +0100 Subject: [PATCH 09/28] Update Pest configuration --- .gitignore | 1 + phpunit.xml | 28 ++++++++++++---------------- 2 files changed, 13 insertions(+), 16 deletions(-) diff --git a/.gitignore b/.gitignore index 1a2f1bd..e15135c 100644 --- a/.gitignore +++ b/.gitignore @@ -9,4 +9,5 @@ /vendor/ .phpunit.result.cache +/.phpunit.cache/ coverage.xml diff --git a/phpunit.xml b/phpunit.xml index d44818e..da0b9a6 100644 --- a/phpunit.xml +++ b/phpunit.xml @@ -1,18 +1,14 @@ - - - - ./tests - - - - - ./app - ./src - - + + + + ./tests + + + + + ./app + ./src + + From ecc45c043d4a3c2798bc1320beda3bf3b7382bc0 Mon Sep 17 00:00:00 2001 From: Titouan Mathis Date: Fri, 17 Jan 2025 17:10:51 +0100 Subject: [PATCH 10/28] Migrate deprecated Twig features --- src/Node/ElementNode.php | 27 ++++++++++---------------- src/TokenParser/ElementTokenParser.php | 2 +- 2 files changed, 11 insertions(+), 18 deletions(-) diff --git a/src/Node/ElementNode.php b/src/Node/ElementNode.php index 49d7e4e..224e950 100644 --- a/src/Node/ElementNode.php +++ b/src/Node/ElementNode.php @@ -17,6 +17,7 @@ * @author Studio Meta * @since 1.0.0 */ +#[\Twig\Attribute\YieldReady] class ElementNode extends Node implements NodeCaptureInterface { /** @@ -25,22 +26,14 @@ class ElementNode extends Node implements NodeCaptureInterface public function compile(Compiler $compiler) { if ($this->getAttribute('capture')) { - if (class_exists('Twig\Node\CaptureNode')) { - $compiler->write('$body = '); - $node = new \Twig\Node\CaptureNode( - $this->getNode('body'), - $this->getNode('body')->lineno, - $this->getNode('body')->tag - ); - $node->setAttribute('with_blocks', true); - $compiler->subcompile($node); - } else { - $compiler->write("ob_start();\n"); - $compiler->subcompile($this->getNode('body')); - $compiler->write( - '$body = ("" === $tmp = ob_get_clean()) ? null : new Markup($tmp, $this->env->getCharset());' - ); - } + $compiler->write('$body = '); + $node = new \Twig\Node\CaptureNode( + $this->getNode('body'), + $this->getNode('body')->lineno, + $this->getNode('body')->tag + ); + $node->setAttribute('with_blocks', true); + $compiler->subcompile($node); $compiler->raw("\n"); } else { $compiler->write('$body = null;')->raw("\n"); @@ -49,7 +42,7 @@ public function compile(Compiler $compiler) // Element $compiler ->addDebugInfo($this) - ->write('echo $dom = \Studiometa\TwigToolkit\Helpers\Html::renderTag($this->env, ') + ->write('yield $dom = \Studiometa\TwigToolkit\Helpers\Html::renderTag($this->env, ') ->subcompile($this->getNode('element')) ->raw(', '); diff --git a/src/TokenParser/ElementTokenParser.php b/src/TokenParser/ElementTokenParser.php index 8eb106c..9106893 100644 --- a/src/TokenParser/ElementTokenParser.php +++ b/src/TokenParser/ElementTokenParser.php @@ -58,7 +58,7 @@ public function parse(Token $token) $stream->expect(Token::BLOCK_END_TYPE); } - return new ElementNode($nodes, ['capture' => $capture], $token->getLine(), $this->getTag()); + return new ElementNode($nodes, ['capture' => $capture], $token->getLine()); } /** From 603851d0872853edb636073029bd3af898785969 Mon Sep 17 00:00:00 2001 From: Titouan Mathis Date: Fri, 17 Jan 2025 17:11:38 +0100 Subject: [PATCH 11/28] Update PHP version in GitHub Actions --- .github/workflows/tests.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index a756fb0..44efc82 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -31,7 +31,7 @@ jobs: strategy: fail-fast: false matrix: - php-versions: ['7.4', '8.0', '8.1', '8.2', '8.3'] + php-versions: ['8.1', '8.2', '8.3', '8.4'] steps: - uses: actions/checkout@v2 @@ -64,8 +64,8 @@ jobs: strategy: fail-fast: false matrix: - php-versions: ['7.4', '8.0', '8.1', '8.2', '8.3'] - twig-versions: ['^2.10', '^3'] + php-versions: ['8.1', '8.2', '8.3', '8.4'] + twig-versions: ['^3.0'] env: PHP_VERSION: ${{ matrix.php-versions }} TWIG_VERSION: ${{ matrix.twig-versions }} From 9923e405e553d0ae46b1df559ed7d2bbf2f4e362 Mon Sep 17 00:00:00 2001 From: Titouan Mathis Date: Fri, 17 Jan 2025 17:12:18 +0100 Subject: [PATCH 12/28] Add a PR template --- .github/PULL_REQUEST_TEMPLATE.md | 35 ++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 .github/PULL_REQUEST_TEMPLATE.md diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..d877bfc --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,35 @@ + + +### ๐Ÿ”— Linked issue + + + +### โ“ Type of change + + + +- [ ] ๐Ÿ“– Documentation (updates to the documentation, readme or JSdoc annotations) +- [ ] ๐Ÿž Bug fix (a non-breaking change that fixes an issue) +- [ ] ๐Ÿ‘Œ Enhancement (improving an existing functionality like performance) +- [ ] โœจ New feature (a non-breaking change that adds functionality) +- [ ] ๐Ÿงน Chore (updates to the build process or auxiliary tools and libraries) +- [ ] โš ๏ธ Breaking change (fix or feature that would cause existing functionality to change) + +### ๐Ÿ“š Description + + + + + +### ๐Ÿ“ Checklist + + + + + +- [ ] I have linked an issue or discussion. +- [ ] I have added tests (if possible). +- [ ] I have updated the documentation accordingly. +- [ ] I have updated the changelog. From 3f5f365c7619af1f299b1bdad296975a604e21a1 Mon Sep 17 00:00:00 2001 From: Titouan Mathis Date: Mon, 20 Jan 2025 10:22:27 +0100 Subject: [PATCH 13/28] Fix Twig v3 compatibility --- src/Node/ElementNode.php | 38 ++++++++++++++++++++++---- src/TokenParser/ElementTokenParser.php | 26 ++++++------------ 2 files changed, 41 insertions(+), 23 deletions(-) diff --git a/src/Node/ElementNode.php b/src/Node/ElementNode.php index 224e950..031113a 100644 --- a/src/Node/ElementNode.php +++ b/src/Node/ElementNode.php @@ -10,6 +10,8 @@ use Twig\Compiler; use Twig\Node\Node; use Twig\Node\NodeCaptureInterface; +use Twig\Attribute\YieldReady; +use Twig\Node\Expression\AbstractExpression; /** * Class ElementNode @@ -17,20 +19,44 @@ * @author Studio Meta * @since 1.0.0 */ -#[\Twig\Attribute\YieldReady] +#[YieldReady] class ElementNode extends Node implements NodeCaptureInterface { + public function __construct( + AbstractExpression $name, + Node $body, + ?AbstractExpression $variables, + int $lineno, + ) { + $nodes = [ + 'name' => $name, + 'body' => $body, + ]; + if (null !== $variables) { + $nodes['variables'] = $variables; + } + + $capture = $body->count() > 0; + + if ($body->hasAttribute('data')) { + $data = $body->getAttribute('data'); + $capture = is_string($data) ? !empty(trim($data)) : $capture; + } + + parent::__construct($nodes, ['capture' => $capture], $lineno); + } /** * @inheritdoc */ public function compile(Compiler $compiler) { + $compiler->addDebugInfo($this); + if ($this->getAttribute('capture')) { $compiler->write('$body = '); $node = new \Twig\Node\CaptureNode( $this->getNode('body'), - $this->getNode('body')->lineno, - $this->getNode('body')->tag + $this->getNode('body')->getTemplateLine() ); $node->setAttribute('with_blocks', true); $compiler->subcompile($node); @@ -43,11 +69,11 @@ public function compile(Compiler $compiler) $compiler ->addDebugInfo($this) ->write('yield $dom = \Studiometa\TwigToolkit\Helpers\Html::renderTag($this->env, ') - ->subcompile($this->getNode('element')) + ->subcompile($this->getNode('name')) ->raw(', '); - if ($this->hasNode('attrs')) { - $compiler->subcompile($this->getNode('attrs')); + if ($this->hasNode('variables')) { + $compiler->subcompile($this->getNode('variables')); } else { $compiler->raw('[]'); } diff --git a/src/TokenParser/ElementTokenParser.php b/src/TokenParser/ElementTokenParser.php index 9106893..d8b4245 100644 --- a/src/TokenParser/ElementTokenParser.php +++ b/src/TokenParser/ElementTokenParser.php @@ -8,10 +8,8 @@ namespace Studiometa\TwigToolkit\TokenParser; use Studiometa\TwigToolkit\Node\ElementNode; -use Twig\Parser; use Twig\Token; use Twig\TokenParser\AbstractTokenParser; -use Twig\TokenStream; /** * Class ElementTokenParser. @@ -38,27 +36,21 @@ public function parse(Token $token) { $stream = $this->parser->getStream(); - // Get element name - $element = $this->parser->getExpressionParser()->parseExpression(); - $nodes = [ - 'element' => $element, - ]; + /** @var \Twig\Node\Expression\AbstractExpression */ + $name = $this->parser->getExpressionParser()->parseExpression(); - // Get attributes + /** @var null|\Twig\Node\Expression\AbstractExpression */ + $variables = null; if ($stream->nextIf(Token::NAME_TYPE, 'with')) { - $nodes['attrs'] = $this->parser->getExpressionParser()->parseExpression(); + /** @var \Twig\Node\Expression\AbstractExpression */ + $variables = $this->parser->getExpressionParser()->parseExpression(); } + $stream->expect(Token::BLOCK_END_TYPE); + $body = $this->parser->subparse([$this, 'decideBlockEnd'], true); $stream->expect(Token::BLOCK_END_TYPE); - // @todo detect self-closing tags to avoid parsing the content - $capture = true; - if ($capture) { - $nodes['body'] = $this->parser->subparse([$this, 'decideBlockEnd'], true); - $stream->expect(Token::BLOCK_END_TYPE); - } - - return new ElementNode($nodes, ['capture' => $capture], $token->getLine()); + return new ElementNode($name, $body, $variables, $token->getLine()); } /** From 3d2b5c984c06c55878159778f5e36b303c25f9e2 Mon Sep 17 00:00:00 2001 From: Titouan Mathis Date: Mon, 20 Jan 2025 10:41:24 +0100 Subject: [PATCH 14/28] Fix PHPStan errors --- src/Extension.php | 2 +- src/Helpers/Html.php | 10 +++++++--- src/Helpers/QueryParameterBag.php | 14 ++++++++++---- src/Helpers/Url.php | 3 ++- 4 files changed, 20 insertions(+), 9 deletions(-) diff --git a/src/Extension.php b/src/Extension.php index 9014ebb..ced1720 100644 --- a/src/Extension.php +++ b/src/Extension.php @@ -31,7 +31,7 @@ class Extension extends AbstractExtension * * @param FilesystemLoader|null $loader The Twig FilesystemLoader instance. */ - public function __construct(FilesystemLoader $loader = null) + public function __construct(FilesystemLoader|null $loader = null) { if ($loader) { Template::addMetaNamespace($loader); diff --git a/src/Helpers/Html.php b/src/Helpers/Html.php index 2a729d7..591bc93 100644 --- a/src/Helpers/Html.php +++ b/src/Helpers/Html.php @@ -54,8 +54,8 @@ class Html * Html::renderClass(['foo', ['bar' => true, 'baz' => false]]); * ``` * - * @param array|string $class The class description. - * @return string A string of classes. + * @param array|string $class The class description. + * @return string A string of classes. */ public static function renderClass($class):string { @@ -103,6 +103,8 @@ public static function renderClass($class):string public static function renderStyleAttribute(array $styles):string { $renderedStyle = []; + /** @var array */ + $styles = $styles; foreach ($styles as $property => $value) { // Skip boolean values that are not true and empty strings @@ -194,7 +196,7 @@ public static function renderAttributes(Environment $env, array $attributes):str } // Format class attributes - if ($key === 'class') { + if ($key === 'class' && (is_array($value) || is_string($value))) { $value = static::renderClass($value); } @@ -207,6 +209,7 @@ public static function renderAttributes(Environment $env, array $attributes):str $value = json_encode($value); } + /** @var null|false|string */ $value = $env->getRuntime(EscaperRuntime::class)->escape($value, 'html_attr', $env->getCharset()); // Do not add null & false attributes @@ -244,6 +247,7 @@ public static function renderTag( string|null $content = null ):string { $attributes = static::renderAttributes($env, $attributes); + /** @var string */ $name = $env->getRuntime(EscaperRuntime::class)->escape($name, 'html_attr', $env->getCharset()); // Render self closing tags. diff --git a/src/Helpers/QueryParameterBag.php b/src/Helpers/QueryParameterBag.php index 0aeacd7..3771fd8 100644 --- a/src/Helpers/QueryParameterBag.php +++ b/src/Helpers/QueryParameterBag.php @@ -25,10 +25,16 @@ class QueryParameterBag extends QueryParameterBagCore */ public function __toString() { - $keyValuePairs = Arr::map($this->parameters, function ($value, $key) { - return "{$key}=$value"; - }); + /** @var string[] */ + $parts = []; - return implode('&', $keyValuePairs); + /** @var array */ + $parameters = $this->parameters; + + foreach ($parameters as $key => $value) { + $parts[] = "{$key}={$value}"; + } + + return implode('&', $parts); } } diff --git a/src/Helpers/Url.php b/src/Helpers/Url.php index 4e0a817..74f2c1d 100644 --- a/src/Helpers/Url.php +++ b/src/Helpers/Url.php @@ -31,9 +31,10 @@ public function __construct() */ public static function fromString(?string $url) { + /** @var Url */ $url = parent::fromString($url ?? ''); - if (empty($url)) { + if (empty((string)$url)) { return $url; } From eb469d50295c953b574b419296b805c496aab8b6 Mon Sep 17 00:00:00 2001 From: Titouan Mathis Date: Mon, 20 Jan 2025 10:42:00 +0100 Subject: [PATCH 15/28] Update linting scripts --- composer.json | 9 ++++++--- composer.lock | 2 +- phpstan.neon | 5 +---- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/composer.json b/composer.json index 4ae40a0..0aa96f7 100644 --- a/composer.json +++ b/composer.json @@ -11,12 +11,15 @@ "require-dev": { "phpstan/phpstan": "^2.0", "squizlabs/php_codesniffer": "^3.6", - "pestphp/pest": "^2.0", + "pestphp/pest": "^2.0|^3.0", "spatie/pest-plugin-snapshots": "^2.0" }, "scripts": { - "phpcs": "phpcs", - "phpstan": "phpstan analyse", + "lint": ["@lint:style", "@lint:static"], + "lint:style": "phpcs", + "lint:static": "phpstan analyse --memory-limit=1024M", + "fix": ["@fix:style"], + "fix:style": "phpcbf", "pest": "pest" }, "autoload": { diff --git a/composer.lock b/composer.lock index ae6d098..df7c3bc 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "43396b393f6bfe6e7ec0d2f2131e289e", + "content-hash": "971ab1fb7cc76e86b1fd4f6963c21849", "packages": [ { "name": "jawira/case-converter", diff --git a/phpstan.neon b/phpstan.neon index b512d2e..b742692 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -1,11 +1,8 @@ -#$ vendor/bin/phpstan analyze parameters: level: max paths: - src - checkMissingIterableValueType: false scanDirectories: - ./vendor/twig/twig/src/Extension/ ignoreErrors: - - message: '#^If condition is always true\.#' - path: ./src/TokenParser/ElementTokenParser.php + - identifier: missingType.iterableValue From b2fef46a5df702073de296745b205de2558f03dc Mon Sep 17 00:00:00 2001 From: Titouan Mathis Date: Mon, 20 Jan 2025 11:06:08 +0100 Subject: [PATCH 16/28] Fix GitHub actions --- .github/workflows/code-quality.yml | 75 ++++++++++++++++++++++++++++++ .github/workflows/tests.yml | 65 +++----------------------- 2 files changed, 82 insertions(+), 58 deletions(-) create mode 100644 .github/workflows/code-quality.yml diff --git a/.github/workflows/code-quality.yml b/.github/workflows/code-quality.yml new file mode 100644 index 0000000..f5b2d32 --- /dev/null +++ b/.github/workflows/code-quality.yml @@ -0,0 +1,75 @@ +name: code-quality + +on: + push: + branches: + - master + - develop + pull_request: + +jobs: + phpcs: + name: phpcs + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + php-versions: ['8.1', '8.2', '8.3', '8.4'] + steps: + - uses: actions/checkout@v2 + + - name: Setup PHP, with composer and xdebug + uses: shivammathur/setup-php@v2 #https://github.com/shivammathur/setup-php + with: + php-version: ${{ matrix.php-versions }} + coverage: xdebug + + - name: Get composer cache directory + id: composer-cache + run: echo "::set-output name=dir::$(composer config cache-files-dir)" + + - name: Cache composer dependencies + uses: actions/cache@v2 + with: + path: ${{ steps.composer-cache.outputs.dir }} + key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} + restore-keys: ${{ runner.os }}-composer- + + - name: Install Composer dependencies + run: composer install --no-progress --prefer-dist --optimize-autoloader --ignore-platform-reqs + + - name: PHPCS + run: composer run lint:style + + phpstan: + name: phpstan + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + php-versions: ['8.1', '8.2', '8.3', '8.4'] + steps: + - uses: actions/checkout@v2 + + - name: Setup PHP, with composer and xdebug + uses: shivammathur/setup-php@v2 #https://github.com/shivammathur/setup-php + with: + php-version: ${{ matrix.php-versions }} + coverage: xdebug + + - name: Get composer cache directory + id: composer-cache + run: echo "::set-output name=dir::$(composer config cache-files-dir)" + + - name: Cache composer dependencies + uses: actions/cache@v2 + with: + path: ${{ steps.composer-cache.outputs.dir }} + key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} + restore-keys: ${{ runner.os }}-composer- + + - name: Install Composer dependencies + run: composer install --no-progress --prefer-dist --optimize-autoloader --ignore-platform-reqs + + - name: PHPStan + run: composer run lint:static diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 44efc82..c0e4a9e 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -1,4 +1,4 @@ -name: Tests +name: tests on: push: @@ -8,67 +8,15 @@ on: pull_request: jobs: - phpcs: - name: PHPCS - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - - name: Cache Composer dependencies - uses: actions/cache@v2 - with: - path: /tmp/composer-cache - key: ${{ runner.os }}-${{ hashFiles('**/composer.lock') }} - - - uses: php-actions/composer@v5 - - - name: PHPCS - run: composer run phpcs - - phpstan: - name: PHPStan - runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - php-versions: ['8.1', '8.2', '8.3', '8.4'] - steps: - - uses: actions/checkout@v2 - - - name: Setup PHP, with composer and xdebug - uses: shivammathur/setup-php@v2 #https://github.com/shivammathur/setup-php - with: - php-version: ${{ matrix.php-versions }} - coverage: xdebug - - - name: Get composer cache directory - id: composer-cache - run: echo "::set-output name=dir::$(composer config cache-files-dir)" - - - name: Cache composer dependencies - uses: actions/cache@v2 - with: - path: ${{ steps.composer-cache.outputs.dir }} - key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} - restore-keys: ${{ runner.os }}-composer- - - - name: Install Composer dependencies - run: composer install --no-progress --prefer-dist --optimize-autoloader - - - name: PHPStan - run: composer run phpstan - test: - name: Unit test + name: pest runs-on: ubuntu-latest strategy: fail-fast: false matrix: php-versions: ['8.1', '8.2', '8.3', '8.4'] - twig-versions: ['^3.0'] env: PHP_VERSION: ${{ matrix.php-versions }} - TWIG_VERSION: ${{ matrix.twig-versions }} steps: - uses: actions/checkout@v2 @@ -90,10 +38,11 @@ jobs: restore-keys: ${{ runner.os }}-composer- - name: Install Composer dependencies - run: composer install --no-progress --prefer-dist --optimize-autoloader + run: composer install --no-progress --prefer-dist --optimize-autoloader --ignore-platform-reqs - - name: Install Twig specific version - run: composer require twig/twig:${{ matrix.twig-versions }} + - name: Install Pest v3 + run: composer require pest/pest:^3.0 + if: ${{ matrix.php-version == '8.4' }} - name: Pest run: php -v && XDEBUG_MODE=coverage ./vendor/bin/pest --coverage --coverage-clover='coverage.xml' @@ -102,7 +51,7 @@ jobs: uses: codecov/codecov-action@v4 with: token: ${{ secrets.CODECOV_TOKEN }} - env_vars: PHP_VERSION,TWIG_VERSION + env_vars: PHP_VERSION file: ./coverage.xml flags: unittests fail_ci_if_error: false From ee6caeafb3ab527c23a9363fd28fb98d3f8bf17f Mon Sep 17 00:00:00 2001 From: Titouan Mathis Date: Mon, 20 Jan 2025 11:21:47 +0100 Subject: [PATCH 17/28] Update changelog --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 49f7291..795d7b5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,11 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ## [Unreleased] +### Changed + +- โš ๏ธ Update minimum Twig version to 3.0 ([#30](https://github.com/studiometa/twig-toolkit/pull/30)) +- โš ๏ธ Update minimum PHP version to 8.1 ([#30](https://github.com/studiometa/twig-toolkit/pull/30), [6134a42](https://github.com/studiometa/twig-toolkit/commit/6134a42)) + ## v1.3.7 (2024-09-18) ### Fixed From 81a64f5f70453e1f153e02907d13b9677b89830e Mon Sep 17 00:00:00 2001 From: Titouan Mathis Date: Mon, 20 Jan 2025 11:30:31 +0100 Subject: [PATCH 18/28] Update badges --- README.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index b768b8a..a5d010c 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,10 @@ # Twig toolkit -[![Packagist Version](https://img.shields.io/github/v/release/studiometa/twig-toolkit?include_prereleases&label=packagist&style=flat-square)](https://packagist.org/packages/studiometa/twig-toolkit) -[![License MIT](https://img.shields.io/packagist/l/studiometa/twig-toolkit?style=flat-square)](https://github.com/studiometa/twig-toolkit/blob/master/LICENSE) +[![Packagist Version](https://img.shields.io/github/v/release/studiometa/twig-toolkit?style=flat&colorB=3e63dd&colorA=414853&label=packagist)](https://packagist.org/packages/studiometa/twig-toolkit) +[![Downloads](https://img.shields.io/packagist/dm/studiometa/twig-toolkit?style=flat&colorB=3e63dd&colorA=414853)](https://packagist.org/packages/studiometa/twig-toolkit) +[![Dependency Status](https://img.shields.io/librariesio/github/studiometa/twig-toolkit?style=flat&colorB=3e63dd&colorA=414853)](https://packagist.org/packages/studiometa/twig-toolkit) +![Codecov](https://img.shields.io/codecov/c/github/studiometa/twig-toolkit?style=flat&colorB=3e63dd&colorA=414853) +[![License MIT](https://img.shields.io/packagist/l/studiometa/twig-toolkit?style=flat&colorB=3e63dd&colorA=414853)](https://github.com/studiometa/twig-toolkit/blob/master/LICENSE) > A set of useful extension and components for Twig. From bfa3cd1bd8ef38ad0e06269d91a8d7d2593f77f6 Mon Sep 17 00:00:00 2001 From: Titouan Mathis Date: Mon, 20 Jan 2025 11:39:14 +0100 Subject: [PATCH 19/28] Update README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a5d010c..f60273b 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Twig toolkit +# studiometa/twig-toolkit [![Packagist Version](https://img.shields.io/github/v/release/studiometa/twig-toolkit?style=flat&colorB=3e63dd&colorA=414853&label=packagist)](https://packagist.org/packages/studiometa/twig-toolkit) [![Downloads](https://img.shields.io/packagist/dm/studiometa/twig-toolkit?style=flat&colorB=3e63dd&colorA=414853)](https://packagist.org/packages/studiometa/twig-toolkit) From 88ede6db0d8004199bac40ad3e43e1742c8769c7 Mon Sep 17 00:00:00 2001 From: Titouan Mathis Date: Mon, 20 Jan 2025 11:39:40 +0100 Subject: [PATCH 20/28] Remove deprecated templates --- src/Extension.php | 12 ----------- src/Helpers/Template.php | 28 ------------------------- templates/components/signature.mock.yml | 2 -- templates/components/signature.twig | 1 - 4 files changed, 43 deletions(-) delete mode 100644 src/Helpers/Template.php delete mode 100644 templates/components/signature.mock.yml delete mode 100644 templates/components/signature.twig diff --git a/src/Extension.php b/src/Extension.php index ced1720..8d9e51d 100644 --- a/src/Extension.php +++ b/src/Extension.php @@ -26,18 +26,6 @@ */ class Extension extends AbstractExtension { - /** - * Register the `@meta` namespace if the $loader parameter is specifier. - * - * @param FilesystemLoader|null $loader The Twig FilesystemLoader instance. - */ - public function __construct(FilesystemLoader|null $loader = null) - { - if ($loader) { - Template::addMetaNamespace($loader); - } - } - /** * Returns the token parser instances to add to the existing list. * diff --git a/src/Helpers/Template.php b/src/Helpers/Template.php deleted file mode 100644 index d2622f0..0000000 --- a/src/Helpers/Template.php +++ /dev/null @@ -1,28 +0,0 @@ - - * @since 1.0.0 - */ -class Template -{ - /** - * Add the component's path to the given Twig file system loader. - * @param \Twig\Loader\FilesystemLoader $loader The loader to extend. - */ - public static function addMetaNamespace(FilesystemLoader $loader):void - { - $loader->addPath(__DIR__ . '/../../templates', 'meta'); - } -} diff --git a/templates/components/signature.mock.yml b/templates/components/signature.mock.yml deleted file mode 100644 index 5942c07..0000000 --- a/templates/components/signature.mock.yml +++ /dev/null @@ -1,2 +0,0 @@ -context: - foo: diff --git a/templates/components/signature.twig b/templates/components/signature.twig deleted file mode 100644 index ecfea2b..0000000 --- a/templates/components/signature.twig +++ /dev/null @@ -1 +0,0 @@ -

Made with โค๏ธ by Studio Meta

\ No newline at end of file From b1d5a48e337da2e159c6132a3c1330fd2bf789de Mon Sep 17 00:00:00 2001 From: Titouan Mathis Date: Mon, 20 Jan 2025 11:39:57 +0100 Subject: [PATCH 21/28] Remove deprecated functions and filters --- src/Extension.php | 25 ------------------------- 1 file changed, 25 deletions(-) diff --git a/src/Extension.php b/src/Extension.php index 8d9e51d..f0c7d59 100644 --- a/src/Extension.php +++ b/src/Extension.php @@ -8,14 +8,10 @@ namespace Studiometa\TwigToolkit; use Studiometa\TwigToolkit\Helpers\Html; -use Studiometa\TwigToolkit\Helpers\Template; use Studiometa\TwigToolkit\Helpers\Url; -use Studiometa\TwigToolkit\Node\ElementNode; use Studiometa\TwigToolkit\TokenParser\ElementTokenParser; use Twig\Extension\AbstractExtension; -use Twig\Loader\FilesystemLoader; use Twig\TokenParser\TokenParserInterface; -use Twig\TwigFilter; use Twig\TwigFunction; /** @@ -46,15 +42,6 @@ public function getTokenParsers() public function getFunctions() { return [ - /** @deprecated 1.0.1 Use the `html_classes` function instead. */ - new TwigFunction('class', [Html::class, 'renderClass']), - /** @deprecated 1.0.1 Use the `html_attributrs` function instead. */ - new TwigFunction( - 'attributes', - [Html::class, 'renderAttributes'], - ['needs_environment' => true, 'is_safe' => ['html']] - ), - new TwigFunction('html_classes', [Html::class, 'renderClass']), new TwigFunction('html_styles', [Html::class, 'renderStyleAttribute']), new TwigFunction( @@ -72,16 +59,4 @@ public function getFunctions() ), ]; } - - /** - * Return a list of filters. - * - * @return TwigFilter[] - */ - public function getFilters() - { - return [ - new TwigFilter('merge_html_attributes', [Html::class, 'mergeAttributes']), - ]; - } } From 6519ed657d44a3e2eb28cd15c96df2b6ec82986b Mon Sep 17 00:00:00 2001 From: Titouan Mathis Date: Mon, 20 Jan 2025 11:44:58 +0100 Subject: [PATCH 22/28] Update tests --- tests/ExtensionTest.php | 32 ++----------------- tests/Helpers/HtmlTest.php | 24 +++++++------- tests/Helpers/TemplateTest.php | 19 ----------- ...ed_attributes_with_named_arguments__1.txt} | 0 ...ge_default_and_required_attributes__1.txt} | 0 ...on_should_merge_default_attributes__1.txt} | 0 ...on_should_merge_default_attributes__2.txt} | 0 ...on_should_merge_default_attributes__3.txt} | 0 ...n_should_merge_required_attributes__1.txt} | 0 ...red_attributes_with_named_argument__1.txt} | 0 10 files changed, 14 insertions(+), 61 deletions(-) delete mode 100644 tests/Helpers/TemplateTest.php rename tests/__snapshots__/{HtmlTest__The_____attr_merge__html__attributes_______Twig_filter_should_merge_default_and_required_attributes__1.txt => HtmlTest__The_____merge__html__attributes_attr______Twig_filter_should_merge_default_and_required_attributes_with_named_arguments__1.txt} (100%) rename tests/__snapshots__/{HtmlTest__The_____attr_merge__html__attributes_______Twig_filter_should_merge_default_and_required_attributes_with_named_arguments__1.txt => HtmlTest__The_____merge__html__attributes_attr______Twig_function_should_merge_default_and_required_attributes__1.txt} (100%) rename tests/__snapshots__/{HtmlTest__The_____attr_merge__html__attributes_______Twig_filter_should_merge_default_attributes__1.txt => HtmlTest__The_____merge__html__attributes_attr______Twig_function_should_merge_default_attributes__1.txt} (100%) rename tests/__snapshots__/{HtmlTest__The_____attr_merge__html__attributes_______Twig_filter_should_merge_default_attributes__2.txt => HtmlTest__The_____merge__html__attributes_attr______Twig_function_should_merge_default_attributes__2.txt} (100%) rename tests/__snapshots__/{HtmlTest__The_____attr_merge__html__attributes_______Twig_filter_should_merge_default_attributes__3.txt => HtmlTest__The_____merge__html__attributes_attr______Twig_function_should_merge_default_attributes__3.txt} (100%) rename tests/__snapshots__/{HtmlTest__The_____attr_merge__html__attributes_______Twig_filter_should_merge_required_attributes__1.txt => HtmlTest__The_____merge__html__attributes_attr______Twig_function_should_merge_required_attributes__1.txt} (100%) rename tests/__snapshots__/{HtmlTest__The_____attr_merge__html__attributes_______Twig_filter_should_merge_required_attributes_with_named_argument__1.txt => HtmlTest__The_____merge__html__attributes_attr______Twig_function_should_merge_required_attributes_with_named_argument__1.txt} (100%) diff --git a/tests/ExtensionTest.php b/tests/ExtensionTest.php index b843d81..4d480c3 100644 --- a/tests/ExtensionTest.php +++ b/tests/ExtensionTest.php @@ -10,29 +10,7 @@ test()->twig = $twig; }); -test('The extension should add the `@meta` namespace when given a `$loader`.', function () { - $loader = new \Twig\Loader\FilesystemLoader(); - $twig = new \Twig\Environment($loader); - $twig->addExtension(new \Studiometa\TwigToolkit\Extension($loader)); - expect($loader->getNamespaces())->toEqual(['meta']); -}); - -test('The extension should *not* add the `@meta` namespace when *not* given a `$loader`.', function () { - $loader = new \Twig\Loader\FilesystemLoader(); - $twig = new \Twig\Environment($loader); - $twig->addExtension(new \Studiometa\TwigToolkit\Extension()); - expect($loader->getNamespaces())->not->toEqual(['meta']); -}); - -test('The extension should add the `merge_html_attributes` filter.', function () { - $tpl = <<loader->setTemplate('index', $tpl); - expect(test()->twig->render('index'))->toEqual(' id="baz"'); -}); - -test('The `merge_html_attributes` filter can be used as a function.', function () { +test('The `merge_html_attributes` function merges attributes.', function () { $tpl = <<twig->render('index'))->toEqual(' id="baz"'); }); -test('The `merge_html_attributes` filter can be used with one or multiple undefined parameters.', function () { - $tpl = <<loader->setTemplate('index', $tpl); - expect(test()->twig->render('index'))->toEqual(' id="baz"'); - +test('The `merge_html_attributes` function can be used with one or multiple undefined parameters.', function () { $tpl = <<twig->render('index')); }); -test('The `{{ attr|merge_html_attributes() }}` Twig filter should merge default attributes', function () { +test('The `{{ merge_html_attributes(attr) }}` Twig function should merge default attributes', function () { $tpl = <<twig->render('index')); }); -test('The `{{ attr|merge_html_attributes() }}` Twig filter should merge required attributes', function () { +test('The `{{ merge_html_attributes(attr) }}` Twig function should merge required attributes', function () { $tpl = <<twig->render('index')); }); -test('The `{{ attr|merge_html_attributes() }}` Twig filter should merge required attributes with named argument', function () { +test('The `{{ merge_html_attributes(attr) }}` Twig function should merge required attributes with named argument', function () { $tpl = <<twig->render('index')); }); -test('The `{{ attr|merge_html_attributes() }}` Twig filter should merge default and required attributes', function () { +test('The `{{ merge_html_attributes(attr) }}` Twig function should merge default and required attributes', function () { $tpl = <<loader->setTemplate('index', $tpl); assertMatchesSnapshot(test()->twig->render('index')); }); -test('The `{{ attr|merge_html_attributes() }}` Twig filter should merge default and required attributes with named arguments', function () { +test('The `{{ merge_html_attributes(attr) }}` Twig filter should merge default and required attributes with named arguments', function () { $tpl = <<loader->setTemplate('index', $tpl); assertMatchesSnapshot(test()->twig->render('index')); diff --git a/tests/Helpers/TemplateTest.php b/tests/Helpers/TemplateTest.php deleted file mode 100644 index f7b74d0..0000000 --- a/tests/Helpers/TemplateTest.php +++ /dev/null @@ -1,19 +0,0 @@ -loader = $loader; - $this->twig = $twig; -}); - -test('The `Template::addMetaNamespace` method should add the `@meta` Twig namespace.', function () { - \Studiometa\TwigToolkit\Helpers\Template::addMetaNamespace($this->loader); - expect($this->loader->getNamespaces())->toEqual(['meta']); -}); - -test('The `@meta` Twig namespace should resolve to the `templates/` folder.', function () { - \Studiometa\TwigToolkit\Helpers\Template::addMetaNamespace($this->loader); - $packageRoot = dirname(dirname(__DIR__)); - expect($this->loader->getPaths('meta'))->toEqual([$packageRoot . '/src/Helpers/../../templates']); -}); diff --git a/tests/__snapshots__/HtmlTest__The_____attr_merge__html__attributes_______Twig_filter_should_merge_default_and_required_attributes__1.txt b/tests/__snapshots__/HtmlTest__The_____merge__html__attributes_attr______Twig_filter_should_merge_default_and_required_attributes_with_named_arguments__1.txt similarity index 100% rename from tests/__snapshots__/HtmlTest__The_____attr_merge__html__attributes_______Twig_filter_should_merge_default_and_required_attributes__1.txt rename to tests/__snapshots__/HtmlTest__The_____merge__html__attributes_attr______Twig_filter_should_merge_default_and_required_attributes_with_named_arguments__1.txt diff --git a/tests/__snapshots__/HtmlTest__The_____attr_merge__html__attributes_______Twig_filter_should_merge_default_and_required_attributes_with_named_arguments__1.txt b/tests/__snapshots__/HtmlTest__The_____merge__html__attributes_attr______Twig_function_should_merge_default_and_required_attributes__1.txt similarity index 100% rename from tests/__snapshots__/HtmlTest__The_____attr_merge__html__attributes_______Twig_filter_should_merge_default_and_required_attributes_with_named_arguments__1.txt rename to tests/__snapshots__/HtmlTest__The_____merge__html__attributes_attr______Twig_function_should_merge_default_and_required_attributes__1.txt diff --git a/tests/__snapshots__/HtmlTest__The_____attr_merge__html__attributes_______Twig_filter_should_merge_default_attributes__1.txt b/tests/__snapshots__/HtmlTest__The_____merge__html__attributes_attr______Twig_function_should_merge_default_attributes__1.txt similarity index 100% rename from tests/__snapshots__/HtmlTest__The_____attr_merge__html__attributes_______Twig_filter_should_merge_default_attributes__1.txt rename to tests/__snapshots__/HtmlTest__The_____merge__html__attributes_attr______Twig_function_should_merge_default_attributes__1.txt diff --git a/tests/__snapshots__/HtmlTest__The_____attr_merge__html__attributes_______Twig_filter_should_merge_default_attributes__2.txt b/tests/__snapshots__/HtmlTest__The_____merge__html__attributes_attr______Twig_function_should_merge_default_attributes__2.txt similarity index 100% rename from tests/__snapshots__/HtmlTest__The_____attr_merge__html__attributes_______Twig_filter_should_merge_default_attributes__2.txt rename to tests/__snapshots__/HtmlTest__The_____merge__html__attributes_attr______Twig_function_should_merge_default_attributes__2.txt diff --git a/tests/__snapshots__/HtmlTest__The_____attr_merge__html__attributes_______Twig_filter_should_merge_default_attributes__3.txt b/tests/__snapshots__/HtmlTest__The_____merge__html__attributes_attr______Twig_function_should_merge_default_attributes__3.txt similarity index 100% rename from tests/__snapshots__/HtmlTest__The_____attr_merge__html__attributes_______Twig_filter_should_merge_default_attributes__3.txt rename to tests/__snapshots__/HtmlTest__The_____merge__html__attributes_attr______Twig_function_should_merge_default_attributes__3.txt diff --git a/tests/__snapshots__/HtmlTest__The_____attr_merge__html__attributes_______Twig_filter_should_merge_required_attributes__1.txt b/tests/__snapshots__/HtmlTest__The_____merge__html__attributes_attr______Twig_function_should_merge_required_attributes__1.txt similarity index 100% rename from tests/__snapshots__/HtmlTest__The_____attr_merge__html__attributes_______Twig_filter_should_merge_required_attributes__1.txt rename to tests/__snapshots__/HtmlTest__The_____merge__html__attributes_attr______Twig_function_should_merge_required_attributes__1.txt diff --git a/tests/__snapshots__/HtmlTest__The_____attr_merge__html__attributes_______Twig_filter_should_merge_required_attributes_with_named_argument__1.txt b/tests/__snapshots__/HtmlTest__The_____merge__html__attributes_attr______Twig_function_should_merge_required_attributes_with_named_argument__1.txt similarity index 100% rename from tests/__snapshots__/HtmlTest__The_____attr_merge__html__attributes_______Twig_filter_should_merge_required_attributes_with_named_argument__1.txt rename to tests/__snapshots__/HtmlTest__The_____merge__html__attributes_attr______Twig_function_should_merge_required_attributes_with_named_argument__1.txt From cfb0ba3afbf9e807c2b60a96821f2fff99c327a6 Mon Sep 17 00:00:00 2001 From: Titouan Mathis Date: Mon, 20 Jan 2025 11:49:25 +0100 Subject: [PATCH 23/28] Update the changelog --- CHANGELOG.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 795d7b5..fa3c73c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,13 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - โš ๏ธ Update minimum Twig version to 3.0 ([#30](https://github.com/studiometa/twig-toolkit/pull/30)) - โš ๏ธ Update minimum PHP version to 8.1 ([#30](https://github.com/studiometa/twig-toolkit/pull/30), [6134a42](https://github.com/studiometa/twig-toolkit/commit/6134a42)) +### Removed + +- โš ๏ธ Removes the `merge_html_attributes()` Twig filter, use the `merge_html_attributes` function instead ([#31](https://github.com/studiometa/twig-toolkit/pull/31)) +- โš ๏ธ Removes the `class` Twig function, use the `html_classes` function instead ([#31](https://github.com/studiometa/twig-toolkit/pull/31)) +- โš ๏ธ Removes the `attributes` Twig function, use the `html_attributes` function instead ([#31](https://github.com/studiometa/twig-toolkit/pull/31)) +- โš ๏ธ Removes the `@meta` alias without replacement ([#31](https://github.com/studiometa/twig-toolkit/pull/31)) + ## v1.3.7 (2024-09-18) ### Fixed From ad1a81d510dfdb436afd1efc084c1594a3f955c4 Mon Sep 17 00:00:00 2001 From: Titouan Mathis Date: Mon, 20 Jan 2025 11:50:20 +0100 Subject: [PATCH 24/28] Update docs --- README.md | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/README.md b/README.md index f60273b..78382f2 100644 --- a/README.md +++ b/README.md @@ -24,22 +24,8 @@ $twig = new \Twig\Environment($loader); $twig->addExtension(new \Studiometa\TwigToolkit\Extension()); ``` -If you pass a `Twig\Loader\FilesystemLoader` instance to the extension constructor, a `meta` namespace pointing to the `templates/` folder of this package will be added. You will then be able to include components from this package with the `@meta` alias: - -```twig -{% include '@meta/components/signature' %} -``` - ## Reference -### Namespace - -When provided with a `\Twig\Loader\FilesystemLoader` parameter, the extension will register a `@meta` namespace referring to the `templates` folder of this package. You will be able to import file in this folder directly from you project's templates: - -```twig -{% include '@meta/components/signature.twig' %} -``` - ### Functions #### `{{ html_classes() }}` From ffcf361263f24c30ed3237fc850388d3b9d31a36 Mon Sep 17 00:00:00 2001 From: Titouan Mathis Date: Mon, 20 Jan 2025 11:59:10 +0100 Subject: [PATCH 25/28] Update spatie/url to ^2.4 --- composer.json | 2 +- composer.lock | 32 +++++++++++++++++++++----------- src/Helpers/Url.php | 15 ++++----------- 3 files changed, 26 insertions(+), 23 deletions(-) diff --git a/composer.json b/composer.json index 0aa96f7..06b3808 100644 --- a/composer.json +++ b/composer.json @@ -6,7 +6,7 @@ "php": "^8.1", "twig/twig": "^3.0", "jawira/case-converter": "^3.4", - "spatie/url": "^1.3" + "spatie/url": "^2.4" }, "require-dev": { "phpstan/phpstan": "^2.0", diff --git a/composer.lock b/composer.lock index df7c3bc..19e0ffa 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "971ab1fb7cc76e86b1fd4f6963c21849", + "content-hash": "1983e55b8db690c868e4f823e094d6ee", "packages": [ { "name": "jawira/case-converter", @@ -177,25 +177,25 @@ }, { "name": "spatie/url", - "version": "1.3.5", + "version": "2.4.0", "source": { "type": "git", "url": "https://github.com/spatie/url.git", - "reference": "3633de58e0709ea98cecceff61ee51caf1fde7e3" + "reference": "93a51db743cdec22b081c64593e193887c9cd395" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/url/zipball/3633de58e0709ea98cecceff61ee51caf1fde7e3", - "reference": "3633de58e0709ea98cecceff61ee51caf1fde7e3", + "url": "https://api.github.com/repos/spatie/url/zipball/93a51db743cdec22b081c64593e193887c9cd395", + "reference": "93a51db743cdec22b081c64593e193887c9cd395", "shasum": "" }, "require": { - "php": "^7.2|^8.0", - "psr/http-message": "^1.0", - "spatie/macroable": "^1.0.1" + "php": "^8.0", + "psr/http-message": "^1.0 || ^2.0", + "spatie/macroable": "^1.0 || ^2.0" }, "require-dev": { - "phpunit/phpunit": "^8.0|^9.3" + "pestphp/pest": "^1.21" }, "type": "library", "autoload": { @@ -223,9 +223,19 @@ ], "support": { "issues": "https://github.com/spatie/url/issues", - "source": "https://github.com/spatie/url/tree/1.3.5" + "source": "https://github.com/spatie/url/tree/2.4.0" }, - "time": "2020-11-03T10:36:20+00:00" + "funding": [ + { + "url": "https://spatie.be/open-source/support-us", + "type": "custom" + }, + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2024-03-08T11:35:19+00:00" }, { "name": "symfony/deprecation-contracts", diff --git a/src/Helpers/Url.php b/src/Helpers/Url.php index 74f2c1d..51943a8 100644 --- a/src/Helpers/Url.php +++ b/src/Helpers/Url.php @@ -7,7 +7,6 @@ namespace Studiometa\TwigToolkit\Helpers; -use Twig\Environment; use Spatie\Url\Url as UrlCore; /** @@ -23,16 +22,13 @@ class Url extends UrlCore */ public function __construct() { + parent::__construct(); $this->query = new QueryParameterBag(); } - /** - * @return self - */ - public static function fromString(?string $url) + public static function fromString(?string $url, ?array $allowedSchemes = null): static { - /** @var Url */ - $url = parent::fromString($url ?? ''); + $url = parent::fromString($url ?? '', $allowedSchemes); if (empty((string)$url)) { return $url; @@ -47,10 +43,7 @@ public static function fromString(?string $url) return $url; } - /** - * @return self - */ - public function withQuery($query) + public function withQuery($query):static { $url = clone $this; From 2b8fa0040f12d390dfba35daec7a54d0fead0030 Mon Sep 17 00:00:00 2001 From: Titouan Mathis Date: Mon, 20 Jan 2025 12:00:10 +0100 Subject: [PATCH 26/28] Bump version number --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index fa3c73c..2175492 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ## [Unreleased] +## v2.0.0 (2025-01-20) + ### Changed - โš ๏ธ Update minimum Twig version to 3.0 ([#30](https://github.com/studiometa/twig-toolkit/pull/30)) From 7d9c9e998c9b686e6a9b8d4f5e1dff7a2473abe4 Mon Sep 17 00:00:00 2001 From: Titouan Mathis Date: Mon, 20 Jan 2025 12:01:41 +0100 Subject: [PATCH 27/28] Update changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2175492..5f26a57 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - โš ๏ธ Update minimum Twig version to 3.0 ([#30](https://github.com/studiometa/twig-toolkit/pull/30)) - โš ๏ธ Update minimum PHP version to 8.1 ([#30](https://github.com/studiometa/twig-toolkit/pull/30), [6134a42](https://github.com/studiometa/twig-toolkit/commit/6134a42)) +- Update spatie/url to ^2.4 ([ffcf361](https://github.com/studiometa/twig-toolkit/commit/ffcf361)) ### Removed From 9b22971beaca1f41d32d834fdeef07e17dedc2ca Mon Sep 17 00:00:00 2001 From: Titouan Mathis Date: Mon, 20 Jan 2025 12:09:46 +0100 Subject: [PATCH 28/28] Update GitHub actions --- .github/workflows/code-quality.yml | 4 ++-- .github/workflows/release.yml | 35 ++++++++++-------------------- .github/workflows/tests.yml | 2 +- 3 files changed, 14 insertions(+), 27 deletions(-) diff --git a/.github/workflows/code-quality.yml b/.github/workflows/code-quality.yml index f5b2d32..7228a38 100644 --- a/.github/workflows/code-quality.yml +++ b/.github/workflows/code-quality.yml @@ -16,7 +16,7 @@ jobs: matrix: php-versions: ['8.1', '8.2', '8.3', '8.4'] steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: Setup PHP, with composer and xdebug uses: shivammathur/setup-php@v2 #https://github.com/shivammathur/setup-php @@ -49,7 +49,7 @@ jobs: matrix: php-versions: ['8.1', '8.2', '8.3', '8.4'] steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: Setup PHP, with composer and xdebug uses: shivammathur/setup-php@v2 #https://github.com/shivammathur/setup-php diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 0978cb1..3e92427 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,4 +1,4 @@ -name: Release +name: release on: push: @@ -9,32 +9,19 @@ jobs: release: runs-on: macos-latest steps: - - uses: actions/checkout@v2 - with: - fetch-depth: '0' + - uses: actions/checkout@v4 - # @see https://github.com/actions/create-release/issues/38#issuecomment-715327220 - # @see https://docs.github.com/en/free-pro-team@latest/actions/reference/workflow-commands-for-github-actions#environment-files - - name: Prepare the changelog from the tag message - id: prepare_changelog - run: | - PRERELEASE=false - # Check release type + - run: | + IS_PRERELEASE=false if [[ $GITHUB_REF_NAME =~ 'alpha' || $GITHUB_REF_NAME =~ 'beta' || $GITHUB_REF_NAME =~ 'rc' ]]; then - echo "This is a prerelease." - PRERELEASE=true + IS_PRERELEASE=true fi - echo "is_prerelease=$PRERELEASE" >> $GITHUB_ENV + echo "IS_PRERELEASE=$IS_PRERELEASE" >> $GITHUB_ENV - # @see https://github.com/actions/create-release - - name: Create Release - id: create_release - uses: actions/create-release@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - uses: ncipollo/release-action@v1 with: - tag_name: ${{ github.ref }} - release_name: v${{ github.ref_name }} - body: Please refer to [CHANGELOG.md](https://github.com/studiometa/twig-toolkit/blob/${{ github.ref_name }}/CHANGELOG.md) for details. + tag: ${{ github.ref }} + name: v${{ github.ref_name }} + body: Please refer to [CHANGELOG.md](https://github.com/${{ github.repository }}/blob/${{ github.ref_name }}/CHANGELOG.md) for details. draft: false - prerelease: ${{ env.is_prerelease }} + prerelease: ${{ env.IS_PRERELEASE }} diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index c0e4a9e..5b8e835 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -18,7 +18,7 @@ jobs: env: PHP_VERSION: ${{ matrix.php-versions }} steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: Setup PHP, with composer and xdebug uses: shivammathur/setup-php@v2 #https://github.com/shivammathur/setup-php