From 1a1d8537e1c0c02832e6b678044735dd521c8e9d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20=C5=A0pa=C4=8Dek?= Date: Thu, 11 Apr 2024 00:21:42 +0200 Subject: [PATCH] Update packages - nette/forms updated from v3.2.1 to v3.2.2 patch See changes: https://github.com/nette/forms/compare/v3.2.1...v3.2.2 Release notes: https://github.com/nette/forms/releases/tag/v3.2.2 - phpstan/phpdoc-parser updated from 1.27.0 to 1.28.0 minor See changes: https://github.com/phpstan/phpdoc-parser/compare/1.27.0...1.28.0 Release notes: https://github.com/phpstan/phpdoc-parser/releases/tag/1.28.0 - roave/security-advisories updated from dev-latest@6900b81 to dev-latest@31f3738 See changes: https://github.com/Roave/SecurityAdvisories/compare/6900b81...31f3738 - spaze/phpcs-phar updated from 3.9.0 to 3.9.1 patch See changes: https://github.com/spaze/phpcs-phar/compare/3.9.0...3.9.1 Release notes: https://github.com/spaze/phpcs-phar/releases/tag/3.9.1 - spaze/phpinfo updated from v1.1.1 to v1.2.0 minor See changes: https://github.com/spaze/phpinfo/compare/v1.1.1...v1.2.0 Release notes: https://github.com/spaze/phpinfo/releases/tag/v1.2.0 - symfony/cache updated from v7.0.4 to v7.0.6 patch See changes: https://github.com/symfony/cache/compare/v7.0.4...v7.0.6 Release notes: https://github.com/symfony/cache/releases/tag/v7.0.6 - symfony/cache-contracts updated from v3.4.0 to v3.4.2 patch See changes: https://github.com/symfony/cache-contracts/compare/v3.4.0...v3.4.2 Release notes: https://github.com/symfony/cache-contracts/releases/tag/v3.4.2 - symfony/config updated from v7.0.4 to v7.0.6 patch See changes: https://github.com/symfony/config/compare/v7.0.4...v7.0.6 Release notes: https://github.com/symfony/config/releases/tag/v7.0.6 - symfony/filesystem updated from v7.0.3 to v7.0.6 patch See changes: https://github.com/symfony/filesystem/compare/v7.0.3...v7.0.6 Release notes: https://github.com/symfony/filesystem/releases/tag/v7.0.6 - symfony/service-contracts updated from v3.4.1 to v3.4.2 patch See changes: https://github.com/symfony/service-contracts/compare/v3.4.1...v3.4.2 Release notes: https://github.com/symfony/service-contracts/releases/tag/v3.4.2 - symfony/translation-contracts updated from v3.4.1 to v3.4.2 patch See changes: https://github.com/symfony/translation-contracts/compare/v3.4.1...v3.4.2 Release notes: https://github.com/symfony/translation-contracts/releases/tag/v3.4.2 - symfony/var-exporter updated from v7.0.4 to v7.0.6 patch See changes: https://github.com/symfony/var-exporter/compare/v7.0.4...v7.0.6 Release notes: https://github.com/symfony/var-exporter/releases/tag/v7.0.6 - tracy/tracy updated from v2.10.5 to v2.10.6 patch See changes: https://github.com/nette/tracy/compare/v2.10.5...v2.10.6 Release notes: https://github.com/nette/tracy/releases/tag/v2.10.6 --- site/composer.json | 2 +- site/composer.lock | 181 ++++++++-------- site/phpstan-vendor.neon | 1 - site/vendor/composer/installed.json | 203 +++++++++--------- site/vendor/composer/installed.php | 78 +++---- .../nette/forms/src/Forms/Blueprint.php | 1 - .../nette/forms/src/Forms/Container.php | 2 +- .../src/Forms/Controls/DateTimeControl.php | 7 +- .../forms/src/Forms/Controls/SelectBox.php | 29 ++- site/vendor/nette/forms/src/Forms/Form.php | 2 +- .../phpdoc-parser/src/Parser/PhpDocParser.php | 18 +- site/vendor/spaze/phpcs-phar/composer.json | 4 +- site/vendor/spaze/phpcs-phar/phpcs.phar | Bin 1451685 -> 1460731 bytes site/vendor/spaze/phpcs-phar/phpcs.phar.asc | Bin 595 -> 595 bytes site/vendor/spaze/phpinfo/README.md | 15 ++ site/vendor/spaze/phpinfo/composer.json | 2 +- site/vendor/spaze/phpinfo/src/PhpInfo.php | 33 +-- .../phpinfo/src/SensitiveValueSanitizer.php | 51 +++++ .../cache-contracts/CacheInterface.php | 2 +- .../symfony/cache-contracts/CacheTrait.php | 4 +- .../symfony/cache/Adapter/PdoAdapter.php | 4 +- .../symfony/cache/Traits/Redis6Proxy.php | 16 +- .../symfony/cache/Traits/Redis6ProxyTrait.php | 51 +++++ .../cache/Traits/RedisCluster6Proxy.php | 11 +- .../cache/Traits/RedisCluster6ProxyTrait.php | 41 ++++ .../Definition/Dumper/YamlReferenceDumper.php | 25 +-- site/vendor/symfony/filesystem/Filesystem.php | 5 +- .../Test/ServiceLocatorTestCase.php | 16 +- .../Test/TranslatorTest.php | 3 +- .../TranslatableInterface.php | 2 +- .../TranslatorInterface.php | 2 +- .../translation-contracts/TranslatorTrait.php | 2 +- .../var-exporter/Internal/LazyObjectTrait.php | 4 + .../symfony/var-exporter/LazyGhostTrait.php | 3 + .../symfony/var-exporter/LazyProxyTrait.php | 2 + .../vendor/symfony/var-exporter/composer.json | 2 + .../src/Bridges/Nette/TracyExtension.php | 4 +- .../tracy/tracy/src/Tracy/Bar/assets/bar.js | 4 +- .../src/Tracy/Bar/panels/info.panel.phtml | 4 +- .../tracy/src/Tracy/Debugger/Debugger.php | 7 +- site/vendor/tracy/tracy/src/Tracy/Helpers.php | 92 ++++---- .../tracy/tracy/src/Tracy/assets/toggle.js | 2 +- 42 files changed, 546 insertions(+), 391 deletions(-) create mode 100644 site/vendor/spaze/phpinfo/src/SensitiveValueSanitizer.php create mode 100644 site/vendor/symfony/cache/Traits/Redis6ProxyTrait.php create mode 100644 site/vendor/symfony/cache/Traits/RedisCluster6ProxyTrait.php diff --git a/site/composer.json b/site/composer.json index e6321c866..e46c52095 100644 --- a/site/composer.json +++ b/site/composer.json @@ -40,7 +40,7 @@ "spaze/feed-exports": "^1.0", "spaze/mysql-session-handler": "^3.0", "spaze/nonce-generator": "^4.0", - "spaze/phpinfo": "^1.1", + "spaze/phpinfo": "^1.2", "spaze/sri-macros": "^2.0", "spaze/svg-icons-latte": "^1.0", "symfony/cache": "^7.0", diff --git a/site/composer.lock b/site/composer.lock index 749795139..85735ac75 100644 --- a/site/composer.lock +++ b/site/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": "081141013a8152346b0be57f45d21aa8", + "content-hash": "b2ff93dc7cb64da52b0ed57b1fea0633", "packages": [ { "name": "contributte/translation", @@ -697,16 +697,16 @@ }, { "name": "nette/forms", - "version": "v3.2.1", + "version": "v3.2.2", "source": { "type": "git", "url": "https://github.com/nette/forms.git", - "reference": "88c1ffb717cedd40f7c7bcaf04e40ed02264ee98" + "reference": "a20fdb1f81f5b406cdc99a450e0a327d5790f9b5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/forms/zipball/88c1ffb717cedd40f7c7bcaf04e40ed02264ee98", - "reference": "88c1ffb717cedd40f7c7bcaf04e40ed02264ee98", + "url": "https://api.github.com/repos/nette/forms/zipball/a20fdb1f81f5b406cdc99a450e0a327d5790f9b5", + "reference": "a20fdb1f81f5b406cdc99a450e0a327d5790f9b5", "shasum": "" }, "require": { @@ -768,9 +768,9 @@ ], "support": { "issues": "https://github.com/nette/forms/issues", - "source": "https://github.com/nette/forms/tree/v3.2.1" + "source": "https://github.com/nette/forms/tree/v3.2.2" }, - "time": "2024-03-06T10:01:29+00:00" + "time": "2024-04-01T01:05:00+00:00" }, { "name": "nette/http", @@ -2071,20 +2071,20 @@ }, { "name": "spaze/phpinfo", - "version": "v1.1.1", + "version": "v1.2.0", "source": { "type": "git", "url": "https://github.com/spaze/phpinfo.git", - "reference": "a8db03663903c942f46ad6b395e31c7752620455" + "reference": "be627cc50c001cc6ddc0945f5518a0303df84681" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spaze/phpinfo/zipball/a8db03663903c942f46ad6b395e31c7752620455", - "reference": "a8db03663903c942f46ad6b395e31c7752620455", + "url": "https://api.github.com/repos/spaze/phpinfo/zipball/be627cc50c001cc6ddc0945f5518a0303df84681", + "reference": "be627cc50c001cc6ddc0945f5518a0303df84681", "shasum": "" }, "require": { - "php": "^8.0" + "php": "^7.4 || ^8.0" }, "require-dev": { "nette/tester": "^2.4", @@ -2117,9 +2117,9 @@ ], "support": { "issues": "https://github.com/spaze/phpinfo/issues", - "source": "https://github.com/spaze/phpinfo/tree/v1.1.1" + "source": "https://github.com/spaze/phpinfo/tree/v1.2.0" }, - "time": "2024-03-24T23:29:12+00:00" + "time": "2024-04-10T02:34:12+00:00" }, { "name": "spaze/sri-macros", @@ -2230,16 +2230,16 @@ }, { "name": "symfony/cache", - "version": "v7.0.4", + "version": "v7.0.6", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "fc822951dd360a593224bb2cef90a087d0dff60f" + "reference": "2d0d3f92c74c445410d05374908b03e0a1131e2b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/fc822951dd360a593224bb2cef90a087d0dff60f", - "reference": "fc822951dd360a593224bb2cef90a087d0dff60f", + "url": "https://api.github.com/repos/symfony/cache/zipball/2d0d3f92c74c445410d05374908b03e0a1131e2b", + "reference": "2d0d3f92c74c445410d05374908b03e0a1131e2b", "shasum": "" }, "require": { @@ -2306,7 +2306,7 @@ "psr6" ], "support": { - "source": "https://github.com/symfony/cache/tree/v7.0.4" + "source": "https://github.com/symfony/cache/tree/v7.0.6" }, "funding": [ { @@ -2322,20 +2322,20 @@ "type": "tidelift" } ], - "time": "2024-02-22T20:27:20+00:00" + "time": "2024-03-27T19:55:25+00:00" }, { "name": "symfony/cache-contracts", - "version": "v3.4.0", + "version": "v3.4.2", "source": { "type": "git", "url": "https://github.com/symfony/cache-contracts.git", - "reference": "1d74b127da04ffa87aa940abe15446fa89653778" + "reference": "2c9db6509a1b21dad229606897639d3284f54b2a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/1d74b127da04ffa87aa940abe15446fa89653778", - "reference": "1d74b127da04ffa87aa940abe15446fa89653778", + "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/2c9db6509a1b21dad229606897639d3284f54b2a", + "reference": "2c9db6509a1b21dad229606897639d3284f54b2a", "shasum": "" }, "require": { @@ -2382,7 +2382,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/cache-contracts/tree/v3.4.0" + "source": "https://github.com/symfony/cache-contracts/tree/v3.4.2" }, "funding": [ { @@ -2398,20 +2398,20 @@ "type": "tidelift" } ], - "time": "2023-09-25T12:52:38+00:00" + "time": "2024-01-23T14:51:35+00:00" }, { "name": "symfony/config", - "version": "v7.0.4", + "version": "v7.0.6", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "44deeba7233f08f383185ffa37dace3b3bc87364" + "reference": "7fc7e18a73ec8125fd95928c0340470d64760deb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/44deeba7233f08f383185ffa37dace3b3bc87364", - "reference": "44deeba7233f08f383185ffa37dace3b3bc87364", + "url": "https://api.github.com/repos/symfony/config/zipball/7fc7e18a73ec8125fd95928c0340470d64760deb", + "reference": "7fc7e18a73ec8125fd95928c0340470d64760deb", "shasum": "" }, "require": { @@ -2457,7 +2457,7 @@ "description": "Helps you find, load, combine, autofill and validate configuration values of any kind", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/config/tree/v7.0.4" + "source": "https://github.com/symfony/config/tree/v7.0.6" }, "funding": [ { @@ -2473,7 +2473,7 @@ "type": "tidelift" } ], - "time": "2024-02-26T07:52:39+00:00" + "time": "2024-03-27T19:55:25+00:00" }, { "name": "symfony/deprecation-contracts", @@ -2544,16 +2544,16 @@ }, { "name": "symfony/filesystem", - "version": "v7.0.3", + "version": "v7.0.6", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "2890e3a825bc0c0558526c04499c13f83e1b6b12" + "reference": "408105dff4c104454100730bdfd1a9cdd993f04d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/2890e3a825bc0c0558526c04499c13f83e1b6b12", - "reference": "2890e3a825bc0c0558526c04499c13f83e1b6b12", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/408105dff4c104454100730bdfd1a9cdd993f04d", + "reference": "408105dff4c104454100730bdfd1a9cdd993f04d", "shasum": "" }, "require": { @@ -2587,7 +2587,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v7.0.3" + "source": "https://github.com/symfony/filesystem/tree/v7.0.6" }, "funding": [ { @@ -2603,20 +2603,20 @@ "type": "tidelift" } ], - "time": "2024-01-23T15:02:46+00:00" + "time": "2024-03-21T19:37:36+00:00" }, { "name": "symfony/service-contracts", - "version": "v3.4.1", + "version": "v3.4.2", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "fe07cbc8d837f60caf7018068e350cc5163681a0" + "reference": "11bbf19a0fb7b36345861e85c5768844c552906e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/fe07cbc8d837f60caf7018068e350cc5163681a0", - "reference": "fe07cbc8d837f60caf7018068e350cc5163681a0", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/11bbf19a0fb7b36345861e85c5768844c552906e", + "reference": "11bbf19a0fb7b36345861e85c5768844c552906e", "shasum": "" }, "require": { @@ -2669,7 +2669,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.4.1" + "source": "https://github.com/symfony/service-contracts/tree/v3.4.2" }, "funding": [ { @@ -2685,7 +2685,7 @@ "type": "tidelift" } ], - "time": "2023-12-26T14:02:43+00:00" + "time": "2023-12-19T21:51:00+00:00" }, { "name": "symfony/translation", @@ -2783,16 +2783,16 @@ }, { "name": "symfony/translation-contracts", - "version": "v3.4.1", + "version": "v3.4.2", "source": { "type": "git", "url": "https://github.com/symfony/translation-contracts.git", - "reference": "06450585bf65e978026bda220cdebca3f867fde7" + "reference": "43810bdb2ddb5400e5c5e778e27b210a0ca83b6b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/06450585bf65e978026bda220cdebca3f867fde7", - "reference": "06450585bf65e978026bda220cdebca3f867fde7", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/43810bdb2ddb5400e5c5e778e27b210a0ca83b6b", + "reference": "43810bdb2ddb5400e5c5e778e27b210a0ca83b6b", "shasum": "" }, "require": { @@ -2841,7 +2841,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v3.4.1" + "source": "https://github.com/symfony/translation-contracts/tree/v3.4.2" }, "funding": [ { @@ -2857,26 +2857,28 @@ "type": "tidelift" } ], - "time": "2023-12-26T14:02:43+00:00" + "time": "2024-01-23T14:51:35+00:00" }, { "name": "symfony/var-exporter", - "version": "v7.0.4", + "version": "v7.0.6", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", - "reference": "dfb0acb6803eb714f05d97dd4c5abe6d5fa9fe41" + "reference": "c74c568d2a15a1d407cf40d61ea82bc2d521e27b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/dfb0acb6803eb714f05d97dd4c5abe6d5fa9fe41", - "reference": "dfb0acb6803eb714f05d97dd4c5abe6d5fa9fe41", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/c74c568d2a15a1d407cf40d61ea82bc2d521e27b", + "reference": "c74c568d2a15a1d407cf40d61ea82bc2d521e27b", "shasum": "" }, "require": { "php": ">=8.2" }, "require-dev": { + "symfony/property-access": "^6.4|^7.0", + "symfony/serializer": "^6.4|^7.0", "symfony/var-dumper": "^6.4|^7.0" }, "type": "library", @@ -2915,7 +2917,7 @@ "serialize" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/v7.0.4" + "source": "https://github.com/symfony/var-exporter/tree/v7.0.6" }, "funding": [ { @@ -2931,7 +2933,7 @@ "type": "tidelift" } ], - "time": "2024-02-26T10:35:24+00:00" + "time": "2024-03-20T21:25:22+00:00" }, { "name": "texy/texy", @@ -3004,16 +3006,16 @@ }, { "name": "tracy/tracy", - "version": "v2.10.5", + "version": "v2.10.6", "source": { "type": "git", "url": "https://github.com/nette/tracy.git", - "reference": "86bdba4aa0f707d3f125933931d3df6e5c7aad79" + "reference": "64435e3d5d5e3172e48c026b6b57349d49cbfd49" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/tracy/zipball/86bdba4aa0f707d3f125933931d3df6e5c7aad79", - "reference": "86bdba4aa0f707d3f125933931d3df6e5c7aad79", + "url": "https://api.github.com/repos/nette/tracy/zipball/64435e3d5d5e3172e48c026b6b57349d49cbfd49", + "reference": "64435e3d5d5e3172e48c026b6b57349d49cbfd49", "shasum": "" }, "require": { @@ -3073,9 +3075,9 @@ ], "support": { "issues": "https://github.com/nette/tracy/issues", - "source": "https://github.com/nette/tracy/tree/v2.10.5" + "source": "https://github.com/nette/tracy/tree/v2.10.6" }, - "time": "2023-10-16T21:54:18+00:00" + "time": "2024-03-31T17:03:25+00:00" } ], "packages-dev": [ @@ -3425,16 +3427,16 @@ }, { "name": "phpstan/phpdoc-parser", - "version": "1.27.0", + "version": "1.28.0", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "86e4d5a4b036f8f0be1464522f4c6b584c452757" + "reference": "cd06d6b1a1b3c75b0b83f97577869fd85a3cd4fb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/86e4d5a4b036f8f0be1464522f4c6b584c452757", - "reference": "86e4d5a4b036f8f0be1464522f4c6b584c452757", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/cd06d6b1a1b3c75b0b83f97577869fd85a3cd4fb", + "reference": "cd06d6b1a1b3c75b0b83f97577869fd85a3cd4fb", "shasum": "" }, "require": { @@ -3466,9 +3468,9 @@ "description": "PHPDoc parser with support for nullable, intersection and generic types", "support": { "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/1.27.0" + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.28.0" }, - "time": "2024-03-21T13:14:53+00:00" + "time": "2024-04-03T18:51:33+00:00" }, { "name": "phpstan/phpstan", @@ -3683,12 +3685,12 @@ "source": { "type": "git", "url": "https://github.com/Roave/SecurityAdvisories.git", - "reference": "6900b812a02fbea68608e13e112d1e0a9b02a370" + "reference": "31f373849a62ccfe23cba594e91b488e3ec2270b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/6900b812a02fbea68608e13e112d1e0a9b02a370", - "reference": "6900b812a02fbea68608e13e112d1e0a9b02a370", + "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/31f373849a62ccfe23cba594e91b488e3ec2270b", + "reference": "31f373849a62ccfe23cba594e91b488e3ec2270b", "shasum": "" }, "conflict": { @@ -3704,7 +3706,7 @@ "alterphp/easyadmin-extension-bundle": ">=1.2,<1.2.11|>=1.3,<1.3.1", "amazing/media2click": ">=1,<1.3.3", "amphp/artax": "<1.0.6|>=2,<2.0.6", - "amphp/http": "<1.0.1", + "amphp/http": "<=1.7.2|>=2,<=2.1", "amphp/http-client": ">=4,<4.4", "anchorcms/anchor-cms": "<=0.12.7", "andreapollastri/cipi": "<=3.1.15", @@ -3758,8 +3760,9 @@ "cart2quote/module-quotation": ">=4.1.6,<=4.4.5|>=5,<5.4.4", "cartalyst/sentry": "<=2.1.6", "catfan/medoo": "<1.7.5", + "causal/oidc": "<2.1", "cecil/cecil": "<7.47.1", - "centreon/centreon": "<22.10.0.0-beta1", + "centreon/centreon": "<22.10.15", "cesnet/simplesamlphp-module-proxystatistics": "<3.1", "chriskacerguis/codeigniter-restserver": "<=2.7.1", "civicrm/civicrm-core": ">=4.2,<4.2.9|>=4.3,<4.3.3", @@ -3771,12 +3774,13 @@ "codeigniter4/shield": "<1.0.0.0-beta8", "codiad/codiad": "<=2.8.4", "composer/composer": "<1.10.27|>=2,<2.2.23|>=2.3,<2.7", - "concrete5/concrete5": "<9.2.7", + "concrete5/concrete5": "<9.2.8", "concrete5/core": "<8.5.8|>=9,<9.1", "contao-components/mediaelement": ">=2.14.2,<2.21.1", + "contao/comments-bundle": ">=2,<4.13.40|>=5.0.0.0-RC1-dev,<5.3.4", "contao/contao": ">=4,<4.4.56|>=4.5,<4.9.40|>=4.10,<4.11.7|>=4.13,<4.13.21|>=5.1,<5.1.4", "contao/core": ">=2,<3.5.39", - "contao/core-bundle": ">=3,<3.5.35|>=4,<4.9.42|>=4.10,<4.13.28|>=5,<5.1.10", + "contao/core-bundle": "<4.13.40|>=5,<5.3.4", "contao/listing-bundle": ">=4,<4.4.8", "contao/managed-edition": "<=1.5", "corveda/phpsandbox": "<1.3.5", @@ -3804,7 +3808,7 @@ "doctrine/mongodb-odm": "<1.0.2", "doctrine/mongodb-odm-bundle": "<3.0.1", "doctrine/orm": ">=2,<2.4.8|>=2.5,<2.5.1|>=2.8.3,<2.8.4", - "dolibarr/dolibarr": "<18.0.2", + "dolibarr/dolibarr": "<=19", "dompdf/dompdf": "<2.0.4", "doublethreedigital/guest-entries": "<3.1.2", "drupal/core": ">=6,<6.38|>=7,<7.96|>=8,<10.1.8|>=10.2,<10.2.2", @@ -3866,7 +3870,7 @@ "fooman/tcpdf": "<6.2.22", "forkcms/forkcms": "<5.11.1", "fossar/tcpdf-parser": "<6.2.22", - "francoisjacquet/rosariosis": "<11", + "francoisjacquet/rosariosis": "<=11.5.1", "frappant/frp-form-answers": "<3.1.2|>=4,<4.0.2", "friendsofsymfony/oauth2-php": "<1.3", "friendsofsymfony/rest-bundle": ">=1.2,<1.2.2", @@ -4151,8 +4155,8 @@ "serluck/phpwhois": "<=4.2.6", "sfroemken/url_redirect": "<=1.2.1", "sheng/yiicms": "<=1.2", - "shopware/core": "<=6.5.7.3", - "shopware/platform": "<=6.5.7.3|>=6.5.8,<6.5.8.7-dev", + "shopware/core": "<6.5.8.8-dev|>=6.6.0.0-RC1-dev,<6.6.1", + "shopware/platform": "<6.5.8.8-dev|>=6.6.0.0-RC1-dev,<6.6.1", "shopware/production": "<=6.3.5.2", "shopware/shopware": "<=5.7.17", "shopware/storefront": "<=6.4.8.1|>=6.5.8,<6.5.8.7-dev", @@ -4299,6 +4303,7 @@ "userfrosting/userfrosting": ">=0.3.1,<4.6.3", "usmanhalalit/pixie": "<1.0.3|>=2,<2.0.2", "uvdesk/community-skeleton": "<=1.1.1", + "uvdesk/core-framework": "<=1.1.1", "vanilla/safecurl": "<0.9.2", "verot/class.upload.php": "<=2.1.6", "vova07/yii2-fileapi-widget": "<0.1.9", @@ -4418,7 +4423,7 @@ "type": "tidelift" } ], - "time": "2024-03-29T21:04:02+00:00" + "time": "2024-04-09T19:04:27+00:00" }, { "name": "shipmonk/composer-dependency-analyser", @@ -4598,22 +4603,22 @@ }, { "name": "spaze/phpcs-phar", - "version": "3.9.0", + "version": "3.9.1", "source": { "type": "git", "url": "https://github.com/spaze/phpcs-phar.git", - "reference": "07c678e294c2cf5843da1d94f88669274f3a3f0f" + "reference": "d48336bed24d06c1e3bc2212e4e8964a8b56e2f4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spaze/phpcs-phar/zipball/07c678e294c2cf5843da1d94f88669274f3a3f0f", - "reference": "07c678e294c2cf5843da1d94f88669274f3a3f0f", + "url": "https://api.github.com/repos/spaze/phpcs-phar/zipball/d48336bed24d06c1e3bc2212e4e8964a8b56e2f4", + "reference": "d48336bed24d06c1e3bc2212e4e8964a8b56e2f4", "shasum": "" }, "replace": { "dealerdirect/phpcodesniffer-composer-installer": "*", - "phpcsstandards/php_codesniffer": "3.9.0", - "squizlabs/php_codesniffer": "3.9.0" + "phpcsstandards/php_codesniffer": "3.9.1", + "squizlabs/php_codesniffer": "3.9.1" }, "bin": [ "phpcbf", @@ -4637,9 +4642,9 @@ ], "support": { "issues": "https://github.com/spaze/phpcs-phar/issues", - "source": "https://github.com/spaze/phpcs-phar/tree/3.9.0" + "source": "https://github.com/spaze/phpcs-phar/tree/3.9.1" }, - "time": "2024-02-16T16:22:48+00:00" + "time": "2024-03-31T22:20:50+00:00" }, { "name": "spaze/phpstan-disallowed-calls", diff --git a/site/phpstan-vendor.neon b/site/phpstan-vendor.neon index ab20b8366..056bd04c8 100644 --- a/site/phpstan-vendor.neon +++ b/site/phpstan-vendor.neon @@ -38,7 +38,6 @@ parameters: - message: '#^Cannot access constant#' paths: - - vendor/nette/forms/src/Forms/Controls/DateTimeControl.php # https://github.com/nette/forms/pull/325 - vendor/symfony/cache/Adapter/DoctrineDbalAdapter.php - vendor/symfony/cache/DependencyInjection/CachePoolPass.php - vendor/symfony/cache/Traits/AbstractAdapterTrait.php diff --git a/site/vendor/composer/installed.json b/site/vendor/composer/installed.json index 0df3053d5..e3b52ed1b 100644 --- a/site/vendor/composer/installed.json +++ b/site/vendor/composer/installed.json @@ -883,17 +883,17 @@ }, { "name": "nette/forms", - "version": "v3.2.1", - "version_normalized": "3.2.1.0", + "version": "v3.2.2", + "version_normalized": "3.2.2.0", "source": { "type": "git", "url": "https://github.com/nette/forms.git", - "reference": "88c1ffb717cedd40f7c7bcaf04e40ed02264ee98" + "reference": "a20fdb1f81f5b406cdc99a450e0a327d5790f9b5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/forms/zipball/88c1ffb717cedd40f7c7bcaf04e40ed02264ee98", - "reference": "88c1ffb717cedd40f7c7bcaf04e40ed02264ee98", + "url": "https://api.github.com/repos/nette/forms/zipball/a20fdb1f81f5b406cdc99a450e0a327d5790f9b5", + "reference": "a20fdb1f81f5b406cdc99a450e0a327d5790f9b5", "shasum": "" }, "require": { @@ -916,7 +916,7 @@ "suggest": { "ext-intl": "to use date/time controls" }, - "time": "2024-03-06T10:01:29+00:00", + "time": "2024-04-01T01:05:00+00:00", "type": "library", "extra": { "branch-alias": { @@ -957,7 +957,7 @@ ], "support": { "issues": "https://github.com/nette/forms/issues", - "source": "https://github.com/nette/forms/tree/v3.2.1" + "source": "https://github.com/nette/forms/tree/v3.2.2" }, "install-path": "../nette/forms" }, @@ -2071,17 +2071,17 @@ }, { "name": "phpstan/phpdoc-parser", - "version": "1.27.0", - "version_normalized": "1.27.0.0", + "version": "1.28.0", + "version_normalized": "1.28.0.0", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "86e4d5a4b036f8f0be1464522f4c6b584c452757" + "reference": "cd06d6b1a1b3c75b0b83f97577869fd85a3cd4fb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/86e4d5a4b036f8f0be1464522f4c6b584c452757", - "reference": "86e4d5a4b036f8f0be1464522f4c6b584c452757", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/cd06d6b1a1b3c75b0b83f97577869fd85a3cd4fb", + "reference": "cd06d6b1a1b3c75b0b83f97577869fd85a3cd4fb", "shasum": "" }, "require": { @@ -2098,7 +2098,7 @@ "phpunit/phpunit": "^9.5", "symfony/process": "^5.2" }, - "time": "2024-03-21T13:14:53+00:00", + "time": "2024-04-03T18:51:33+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -2115,7 +2115,7 @@ "description": "PHPDoc parser with support for nullable, intersection and generic types", "support": { "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/1.27.0" + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.28.0" }, "install-path": "../phpstan/phpdoc-parser" }, @@ -2506,12 +2506,12 @@ "source": { "type": "git", "url": "https://github.com/Roave/SecurityAdvisories.git", - "reference": "6900b812a02fbea68608e13e112d1e0a9b02a370" + "reference": "31f373849a62ccfe23cba594e91b488e3ec2270b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/6900b812a02fbea68608e13e112d1e0a9b02a370", - "reference": "6900b812a02fbea68608e13e112d1e0a9b02a370", + "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/31f373849a62ccfe23cba594e91b488e3ec2270b", + "reference": "31f373849a62ccfe23cba594e91b488e3ec2270b", "shasum": "" }, "conflict": { @@ -2527,7 +2527,7 @@ "alterphp/easyadmin-extension-bundle": ">=1.2,<1.2.11|>=1.3,<1.3.1", "amazing/media2click": ">=1,<1.3.3", "amphp/artax": "<1.0.6|>=2,<2.0.6", - "amphp/http": "<1.0.1", + "amphp/http": "<=1.7.2|>=2,<=2.1", "amphp/http-client": ">=4,<4.4", "anchorcms/anchor-cms": "<=0.12.7", "andreapollastri/cipi": "<=3.1.15", @@ -2581,8 +2581,9 @@ "cart2quote/module-quotation": ">=4.1.6,<=4.4.5|>=5,<5.4.4", "cartalyst/sentry": "<=2.1.6", "catfan/medoo": "<1.7.5", + "causal/oidc": "<2.1", "cecil/cecil": "<7.47.1", - "centreon/centreon": "<22.10.0.0-beta1", + "centreon/centreon": "<22.10.15", "cesnet/simplesamlphp-module-proxystatistics": "<3.1", "chriskacerguis/codeigniter-restserver": "<=2.7.1", "civicrm/civicrm-core": ">=4.2,<4.2.9|>=4.3,<4.3.3", @@ -2594,12 +2595,13 @@ "codeigniter4/shield": "<1.0.0.0-beta8", "codiad/codiad": "<=2.8.4", "composer/composer": "<1.10.27|>=2,<2.2.23|>=2.3,<2.7", - "concrete5/concrete5": "<9.2.7", + "concrete5/concrete5": "<9.2.8", "concrete5/core": "<8.5.8|>=9,<9.1", "contao-components/mediaelement": ">=2.14.2,<2.21.1", + "contao/comments-bundle": ">=2,<4.13.40|>=5.0.0.0-RC1-dev,<5.3.4", "contao/contao": ">=4,<4.4.56|>=4.5,<4.9.40|>=4.10,<4.11.7|>=4.13,<4.13.21|>=5.1,<5.1.4", "contao/core": ">=2,<3.5.39", - "contao/core-bundle": ">=3,<3.5.35|>=4,<4.9.42|>=4.10,<4.13.28|>=5,<5.1.10", + "contao/core-bundle": "<4.13.40|>=5,<5.3.4", "contao/listing-bundle": ">=4,<4.4.8", "contao/managed-edition": "<=1.5", "corveda/phpsandbox": "<1.3.5", @@ -2627,7 +2629,7 @@ "doctrine/mongodb-odm": "<1.0.2", "doctrine/mongodb-odm-bundle": "<3.0.1", "doctrine/orm": ">=2,<2.4.8|>=2.5,<2.5.1|>=2.8.3,<2.8.4", - "dolibarr/dolibarr": "<18.0.2", + "dolibarr/dolibarr": "<=19", "dompdf/dompdf": "<2.0.4", "doublethreedigital/guest-entries": "<3.1.2", "drupal/core": ">=6,<6.38|>=7,<7.96|>=8,<10.1.8|>=10.2,<10.2.2", @@ -2689,7 +2691,7 @@ "fooman/tcpdf": "<6.2.22", "forkcms/forkcms": "<5.11.1", "fossar/tcpdf-parser": "<6.2.22", - "francoisjacquet/rosariosis": "<11", + "francoisjacquet/rosariosis": "<=11.5.1", "frappant/frp-form-answers": "<3.1.2|>=4,<4.0.2", "friendsofsymfony/oauth2-php": "<1.3", "friendsofsymfony/rest-bundle": ">=1.2,<1.2.2", @@ -2974,8 +2976,8 @@ "serluck/phpwhois": "<=4.2.6", "sfroemken/url_redirect": "<=1.2.1", "sheng/yiicms": "<=1.2", - "shopware/core": "<=6.5.7.3", - "shopware/platform": "<=6.5.7.3|>=6.5.8,<6.5.8.7-dev", + "shopware/core": "<6.5.8.8-dev|>=6.6.0.0-RC1-dev,<6.6.1", + "shopware/platform": "<6.5.8.8-dev|>=6.6.0.0-RC1-dev,<6.6.1", "shopware/production": "<=6.3.5.2", "shopware/shopware": "<=5.7.17", "shopware/storefront": "<=6.4.8.1|>=6.5.8,<6.5.8.7-dev", @@ -3122,6 +3124,7 @@ "userfrosting/userfrosting": ">=0.3.1,<4.6.3", "usmanhalalit/pixie": "<1.0.3|>=2,<2.0.2", "uvdesk/community-skeleton": "<=1.1.1", + "uvdesk/core-framework": "<=1.1.1", "vanilla/safecurl": "<0.9.2", "verot/class.upload.php": "<=2.1.6", "vova07/yii2-fileapi-widget": "<0.1.9", @@ -3205,7 +3208,7 @@ "zfr/zfr-oauth2-server-module": "<0.1.2", "zoujingli/thinkadmin": "<=6.1.53" }, - "time": "2024-03-29T21:04:02+00:00", + "time": "2024-04-09T19:04:27+00:00", "default-branch": true, "type": "metapackage", "notification-url": "https://packagist.org/downloads/", @@ -3715,25 +3718,25 @@ }, { "name": "spaze/phpcs-phar", - "version": "3.9.0", - "version_normalized": "3.9.0.0", + "version": "3.9.1", + "version_normalized": "3.9.1.0", "source": { "type": "git", "url": "https://github.com/spaze/phpcs-phar.git", - "reference": "07c678e294c2cf5843da1d94f88669274f3a3f0f" + "reference": "d48336bed24d06c1e3bc2212e4e8964a8b56e2f4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spaze/phpcs-phar/zipball/07c678e294c2cf5843da1d94f88669274f3a3f0f", - "reference": "07c678e294c2cf5843da1d94f88669274f3a3f0f", + "url": "https://api.github.com/repos/spaze/phpcs-phar/zipball/d48336bed24d06c1e3bc2212e4e8964a8b56e2f4", + "reference": "d48336bed24d06c1e3bc2212e4e8964a8b56e2f4", "shasum": "" }, "replace": { "dealerdirect/phpcodesniffer-composer-installer": "*", - "phpcsstandards/php_codesniffer": "3.9.0", - "squizlabs/php_codesniffer": "3.9.0" + "phpcsstandards/php_codesniffer": "3.9.1", + "squizlabs/php_codesniffer": "3.9.1" }, - "time": "2024-02-16T16:22:48+00:00", + "time": "2024-03-31T22:20:50+00:00", "bin": [ "phpcbf", "phpcs" @@ -3757,27 +3760,27 @@ ], "support": { "issues": "https://github.com/spaze/phpcs-phar/issues", - "source": "https://github.com/spaze/phpcs-phar/tree/3.9.0" + "source": "https://github.com/spaze/phpcs-phar/tree/3.9.1" }, "install-path": "../spaze/phpcs-phar" }, { "name": "spaze/phpinfo", - "version": "v1.1.1", - "version_normalized": "1.1.1.0", + "version": "v1.2.0", + "version_normalized": "1.2.0.0", "source": { "type": "git", "url": "https://github.com/spaze/phpinfo.git", - "reference": "a8db03663903c942f46ad6b395e31c7752620455" + "reference": "be627cc50c001cc6ddc0945f5518a0303df84681" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spaze/phpinfo/zipball/a8db03663903c942f46ad6b395e31c7752620455", - "reference": "a8db03663903c942f46ad6b395e31c7752620455", + "url": "https://api.github.com/repos/spaze/phpinfo/zipball/be627cc50c001cc6ddc0945f5518a0303df84681", + "reference": "be627cc50c001cc6ddc0945f5518a0303df84681", "shasum": "" }, "require": { - "php": "^8.0" + "php": "^7.4 || ^8.0" }, "require-dev": { "nette/tester": "^2.4", @@ -3786,7 +3789,7 @@ "phpstan/phpstan": "^1.9", "spaze/coding-standard": "^1.3" }, - "time": "2024-03-24T23:29:12+00:00", + "time": "2024-04-10T02:34:12+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -3812,7 +3815,7 @@ ], "support": { "issues": "https://github.com/spaze/phpinfo/issues", - "source": "https://github.com/spaze/phpinfo/tree/v1.1.1" + "source": "https://github.com/spaze/phpinfo/tree/v1.2.0" }, "install-path": "../spaze/phpinfo" }, @@ -4043,17 +4046,17 @@ }, { "name": "symfony/cache", - "version": "v7.0.4", - "version_normalized": "7.0.4.0", + "version": "v7.0.6", + "version_normalized": "7.0.6.0", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "fc822951dd360a593224bb2cef90a087d0dff60f" + "reference": "2d0d3f92c74c445410d05374908b03e0a1131e2b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/fc822951dd360a593224bb2cef90a087d0dff60f", - "reference": "fc822951dd360a593224bb2cef90a087d0dff60f", + "url": "https://api.github.com/repos/symfony/cache/zipball/2d0d3f92c74c445410d05374908b03e0a1131e2b", + "reference": "2d0d3f92c74c445410d05374908b03e0a1131e2b", "shasum": "" }, "require": { @@ -4087,7 +4090,7 @@ "symfony/messenger": "^6.4|^7.0", "symfony/var-dumper": "^6.4|^7.0" }, - "time": "2024-02-22T20:27:20+00:00", + "time": "2024-03-27T19:55:25+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -4122,7 +4125,7 @@ "psr6" ], "support": { - "source": "https://github.com/symfony/cache/tree/v7.0.4" + "source": "https://github.com/symfony/cache/tree/v7.0.6" }, "funding": [ { @@ -4142,24 +4145,24 @@ }, { "name": "symfony/cache-contracts", - "version": "v3.4.0", - "version_normalized": "3.4.0.0", + "version": "v3.4.2", + "version_normalized": "3.4.2.0", "source": { "type": "git", "url": "https://github.com/symfony/cache-contracts.git", - "reference": "1d74b127da04ffa87aa940abe15446fa89653778" + "reference": "2c9db6509a1b21dad229606897639d3284f54b2a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/1d74b127da04ffa87aa940abe15446fa89653778", - "reference": "1d74b127da04ffa87aa940abe15446fa89653778", + "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/2c9db6509a1b21dad229606897639d3284f54b2a", + "reference": "2c9db6509a1b21dad229606897639d3284f54b2a", "shasum": "" }, "require": { "php": ">=8.1", "psr/cache": "^3.0" }, - "time": "2023-09-25T12:52:38+00:00", + "time": "2024-01-23T14:51:35+00:00", "type": "library", "extra": { "branch-alias": { @@ -4201,7 +4204,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/cache-contracts/tree/v3.4.0" + "source": "https://github.com/symfony/cache-contracts/tree/v3.4.2" }, "funding": [ { @@ -4221,17 +4224,17 @@ }, { "name": "symfony/config", - "version": "v7.0.4", - "version_normalized": "7.0.4.0", + "version": "v7.0.6", + "version_normalized": "7.0.6.0", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "44deeba7233f08f383185ffa37dace3b3bc87364" + "reference": "7fc7e18a73ec8125fd95928c0340470d64760deb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/44deeba7233f08f383185ffa37dace3b3bc87364", - "reference": "44deeba7233f08f383185ffa37dace3b3bc87364", + "url": "https://api.github.com/repos/symfony/config/zipball/7fc7e18a73ec8125fd95928c0340470d64760deb", + "reference": "7fc7e18a73ec8125fd95928c0340470d64760deb", "shasum": "" }, "require": { @@ -4251,7 +4254,7 @@ "symfony/service-contracts": "^2.5|^3", "symfony/yaml": "^6.4|^7.0" }, - "time": "2024-02-26T07:52:39+00:00", + "time": "2024-03-27T19:55:25+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -4279,7 +4282,7 @@ "description": "Helps you find, load, combine, autofill and validate configuration values of any kind", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/config/tree/v7.0.4" + "source": "https://github.com/symfony/config/tree/v7.0.6" }, "funding": [ { @@ -4369,17 +4372,17 @@ }, { "name": "symfony/filesystem", - "version": "v7.0.3", - "version_normalized": "7.0.3.0", + "version": "v7.0.6", + "version_normalized": "7.0.6.0", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "2890e3a825bc0c0558526c04499c13f83e1b6b12" + "reference": "408105dff4c104454100730bdfd1a9cdd993f04d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/2890e3a825bc0c0558526c04499c13f83e1b6b12", - "reference": "2890e3a825bc0c0558526c04499c13f83e1b6b12", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/408105dff4c104454100730bdfd1a9cdd993f04d", + "reference": "408105dff4c104454100730bdfd1a9cdd993f04d", "shasum": "" }, "require": { @@ -4387,7 +4390,7 @@ "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.8" }, - "time": "2024-01-23T15:02:46+00:00", + "time": "2024-03-21T19:37:36+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -4415,7 +4418,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v7.0.3" + "source": "https://github.com/symfony/filesystem/tree/v7.0.6" }, "funding": [ { @@ -4435,17 +4438,17 @@ }, { "name": "symfony/service-contracts", - "version": "v3.4.1", - "version_normalized": "3.4.1.0", + "version": "v3.4.2", + "version_normalized": "3.4.2.0", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "fe07cbc8d837f60caf7018068e350cc5163681a0" + "reference": "11bbf19a0fb7b36345861e85c5768844c552906e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/fe07cbc8d837f60caf7018068e350cc5163681a0", - "reference": "fe07cbc8d837f60caf7018068e350cc5163681a0", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/11bbf19a0fb7b36345861e85c5768844c552906e", + "reference": "11bbf19a0fb7b36345861e85c5768844c552906e", "shasum": "" }, "require": { @@ -4455,7 +4458,7 @@ "conflict": { "ext-psr": "<1.1|>=2" }, - "time": "2023-12-26T14:02:43+00:00", + "time": "2023-12-19T21:51:00+00:00", "type": "library", "extra": { "branch-alias": { @@ -4500,7 +4503,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.4.1" + "source": "https://github.com/symfony/service-contracts/tree/v3.4.2" }, "funding": [ { @@ -4617,23 +4620,23 @@ }, { "name": "symfony/translation-contracts", - "version": "v3.4.1", - "version_normalized": "3.4.1.0", + "version": "v3.4.2", + "version_normalized": "3.4.2.0", "source": { "type": "git", "url": "https://github.com/symfony/translation-contracts.git", - "reference": "06450585bf65e978026bda220cdebca3f867fde7" + "reference": "43810bdb2ddb5400e5c5e778e27b210a0ca83b6b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/06450585bf65e978026bda220cdebca3f867fde7", - "reference": "06450585bf65e978026bda220cdebca3f867fde7", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/43810bdb2ddb5400e5c5e778e27b210a0ca83b6b", + "reference": "43810bdb2ddb5400e5c5e778e27b210a0ca83b6b", "shasum": "" }, "require": { "php": ">=8.1" }, - "time": "2023-12-26T14:02:43+00:00", + "time": "2024-01-23T14:51:35+00:00", "type": "library", "extra": { "branch-alias": { @@ -4678,7 +4681,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v3.4.1" + "source": "https://github.com/symfony/translation-contracts/tree/v3.4.2" }, "funding": [ { @@ -4698,26 +4701,28 @@ }, { "name": "symfony/var-exporter", - "version": "v7.0.4", - "version_normalized": "7.0.4.0", + "version": "v7.0.6", + "version_normalized": "7.0.6.0", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", - "reference": "dfb0acb6803eb714f05d97dd4c5abe6d5fa9fe41" + "reference": "c74c568d2a15a1d407cf40d61ea82bc2d521e27b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/dfb0acb6803eb714f05d97dd4c5abe6d5fa9fe41", - "reference": "dfb0acb6803eb714f05d97dd4c5abe6d5fa9fe41", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/c74c568d2a15a1d407cf40d61ea82bc2d521e27b", + "reference": "c74c568d2a15a1d407cf40d61ea82bc2d521e27b", "shasum": "" }, "require": { "php": ">=8.2" }, "require-dev": { + "symfony/property-access": "^6.4|^7.0", + "symfony/serializer": "^6.4|^7.0", "symfony/var-dumper": "^6.4|^7.0" }, - "time": "2024-02-26T10:35:24+00:00", + "time": "2024-03-20T21:25:22+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -4755,7 +4760,7 @@ "serialize" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/v7.0.4" + "source": "https://github.com/symfony/var-exporter/tree/v7.0.6" }, "funding": [ { @@ -4847,17 +4852,17 @@ }, { "name": "tracy/tracy", - "version": "v2.10.5", - "version_normalized": "2.10.5.0", + "version": "v2.10.6", + "version_normalized": "2.10.6.0", "source": { "type": "git", "url": "https://github.com/nette/tracy.git", - "reference": "86bdba4aa0f707d3f125933931d3df6e5c7aad79" + "reference": "64435e3d5d5e3172e48c026b6b57349d49cbfd49" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/tracy/zipball/86bdba4aa0f707d3f125933931d3df6e5c7aad79", - "reference": "86bdba4aa0f707d3f125933931d3df6e5c7aad79", + "url": "https://api.github.com/repos/nette/tracy/zipball/64435e3d5d5e3172e48c026b6b57349d49cbfd49", + "reference": "64435e3d5d5e3172e48c026b6b57349d49cbfd49", "shasum": "" }, "require": { @@ -4878,7 +4883,7 @@ "phpstan/phpstan": "^1.0", "psr/log": "^1.0 || ^2.0 || ^3.0" }, - "time": "2023-10-16T21:54:18+00:00", + "time": "2024-03-31T17:03:25+00:00", "type": "library", "extra": { "branch-alias": { @@ -4919,7 +4924,7 @@ ], "support": { "issues": "https://github.com/nette/tracy/issues", - "source": "https://github.com/nette/tracy/tree/v2.10.5" + "source": "https://github.com/nette/tracy/tree/v2.10.6" }, "install-path": "../tracy/tracy" } diff --git a/site/vendor/composer/installed.php b/site/vendor/composer/installed.php index 6174020f7..7da38374f 100644 --- a/site/vendor/composer/installed.php +++ b/site/vendor/composer/installed.php @@ -161,9 +161,9 @@ ), ), 'nette/forms' => array( - 'pretty_version' => 'v3.2.1', - 'version' => '3.2.1.0', - 'reference' => '88c1ffb717cedd40f7c7bcaf04e40ed02264ee98', + 'pretty_version' => 'v3.2.2', + 'version' => '3.2.2.0', + 'reference' => 'a20fdb1f81f5b406cdc99a450e0a327d5790f9b5', 'type' => 'library', 'install_path' => __DIR__ . '/../nette/forms', 'aliases' => array(), @@ -328,13 +328,13 @@ 'phpcsstandards/php_codesniffer' => array( 'dev_requirement' => true, 'replaced' => array( - 0 => '3.9.0', + 0 => '3.9.1', ), ), 'phpstan/phpdoc-parser' => array( - 'pretty_version' => '1.27.0', - 'version' => '1.27.0.0', - 'reference' => '86e4d5a4b036f8f0be1464522f4c6b584c452757', + 'pretty_version' => '1.28.0', + 'version' => '1.28.0.0', + 'reference' => 'cd06d6b1a1b3c75b0b83f97577869fd85a3cd4fb', 'type' => 'library', 'install_path' => __DIR__ . '/../phpstan/phpdoc-parser', 'aliases' => array(), @@ -418,7 +418,7 @@ 'roave/security-advisories' => array( 'pretty_version' => 'dev-latest', 'version' => 'dev-latest', - 'reference' => '6900b812a02fbea68608e13e112d1e0a9b02a370', + 'reference' => '31f373849a62ccfe23cba594e91b488e3ec2270b', 'type' => 'metapackage', 'install_path' => null, 'aliases' => array( @@ -508,18 +508,18 @@ 'dev_requirement' => false, ), 'spaze/phpcs-phar' => array( - 'pretty_version' => '3.9.0', - 'version' => '3.9.0.0', - 'reference' => '07c678e294c2cf5843da1d94f88669274f3a3f0f', + 'pretty_version' => '3.9.1', + 'version' => '3.9.1.0', + 'reference' => 'd48336bed24d06c1e3bc2212e4e8964a8b56e2f4', 'type' => 'library', 'install_path' => __DIR__ . '/../spaze/phpcs-phar', 'aliases' => array(), 'dev_requirement' => true, ), 'spaze/phpinfo' => array( - 'pretty_version' => 'v1.1.1', - 'version' => '1.1.1.0', - 'reference' => 'a8db03663903c942f46ad6b395e31c7752620455', + 'pretty_version' => 'v1.2.0', + 'version' => '1.2.0.0', + 'reference' => 'be627cc50c001cc6ddc0945f5518a0303df84681', 'type' => 'library', 'install_path' => __DIR__ . '/../spaze/phpinfo', 'aliases' => array(), @@ -564,22 +564,22 @@ 'squizlabs/php_codesniffer' => array( 'dev_requirement' => true, 'replaced' => array( - 0 => '3.9.0', + 0 => '3.9.1', ), ), 'symfony/cache' => array( - 'pretty_version' => 'v7.0.4', - 'version' => '7.0.4.0', - 'reference' => 'fc822951dd360a593224bb2cef90a087d0dff60f', + 'pretty_version' => 'v7.0.6', + 'version' => '7.0.6.0', + 'reference' => '2d0d3f92c74c445410d05374908b03e0a1131e2b', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/cache', 'aliases' => array(), 'dev_requirement' => false, ), 'symfony/cache-contracts' => array( - 'pretty_version' => 'v3.4.0', - 'version' => '3.4.0.0', - 'reference' => '1d74b127da04ffa87aa940abe15446fa89653778', + 'pretty_version' => 'v3.4.2', + 'version' => '3.4.2.0', + 'reference' => '2c9db6509a1b21dad229606897639d3284f54b2a', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/cache-contracts', 'aliases' => array(), @@ -592,9 +592,9 @@ ), ), 'symfony/config' => array( - 'pretty_version' => 'v7.0.4', - 'version' => '7.0.4.0', - 'reference' => '44deeba7233f08f383185ffa37dace3b3bc87364', + 'pretty_version' => 'v7.0.6', + 'version' => '7.0.6.0', + 'reference' => '7fc7e18a73ec8125fd95928c0340470d64760deb', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/config', 'aliases' => array(), @@ -610,9 +610,9 @@ 'dev_requirement' => false, ), 'symfony/filesystem' => array( - 'pretty_version' => 'v7.0.3', - 'version' => '7.0.3.0', - 'reference' => '2890e3a825bc0c0558526c04499c13f83e1b6b12', + 'pretty_version' => 'v7.0.6', + 'version' => '7.0.6.0', + 'reference' => '408105dff4c104454100730bdfd1a9cdd993f04d', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/filesystem', 'aliases' => array(), @@ -649,9 +649,9 @@ ), ), 'symfony/service-contracts' => array( - 'pretty_version' => 'v3.4.1', - 'version' => '3.4.1.0', - 'reference' => 'fe07cbc8d837f60caf7018068e350cc5163681a0', + 'pretty_version' => 'v3.4.2', + 'version' => '3.4.2.0', + 'reference' => '11bbf19a0fb7b36345861e85c5768844c552906e', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/service-contracts', 'aliases' => array(), @@ -667,9 +667,9 @@ 'dev_requirement' => false, ), 'symfony/translation-contracts' => array( - 'pretty_version' => 'v3.4.1', - 'version' => '3.4.1.0', - 'reference' => '06450585bf65e978026bda220cdebca3f867fde7', + 'pretty_version' => 'v3.4.2', + 'version' => '3.4.2.0', + 'reference' => '43810bdb2ddb5400e5c5e778e27b210a0ca83b6b', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/translation-contracts', 'aliases' => array(), @@ -682,9 +682,9 @@ ), ), 'symfony/var-exporter' => array( - 'pretty_version' => 'v7.0.4', - 'version' => '7.0.4.0', - 'reference' => 'dfb0acb6803eb714f05d97dd4c5abe6d5fa9fe41', + 'pretty_version' => 'v7.0.6', + 'version' => '7.0.6.0', + 'reference' => 'c74c568d2a15a1d407cf40d61ea82bc2d521e27b', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/var-exporter', 'aliases' => array(), @@ -700,9 +700,9 @@ 'dev_requirement' => false, ), 'tracy/tracy' => array( - 'pretty_version' => 'v2.10.5', - 'version' => '2.10.5.0', - 'reference' => '86bdba4aa0f707d3f125933931d3df6e5c7aad79', + 'pretty_version' => 'v2.10.6', + 'version' => '2.10.6.0', + 'reference' => '64435e3d5d5e3172e48c026b6b57349d49cbfd49', 'type' => 'library', 'install_path' => __DIR__ . '/../tracy/tracy', 'aliases' => array(), diff --git a/site/vendor/nette/forms/src/Forms/Blueprint.php b/site/vendor/nette/forms/src/Forms/Blueprint.php index 67ace2956..42aec6e49 100644 --- a/site/vendor/nette/forms/src/Forms/Blueprint.php +++ b/site/vendor/nette/forms/src/Forms/Blueprint.php @@ -46,7 +46,6 @@ public static function dataClass(Form $form, bool $exit = true): void $blueprint->printHeader('Form Data Class ' . $form->getName()); $blueprint->printCode($blueprint->generateDataClass($form), 'php'); $blueprint->printCode($blueprint->generateDataClass($form, true), 'php'); - $bp->printEnd(); $blueprint->printEnd(); if ($exit) { exit; diff --git a/site/vendor/nette/forms/src/Forms/Container.php b/site/vendor/nette/forms/src/Forms/Container.php index f1cbb629e..e412c1b41 100644 --- a/site/vendor/nette/forms/src/Forms/Container.php +++ b/site/vendor/nette/forms/src/Forms/Container.php @@ -219,7 +219,7 @@ public function isValid(): bool /** * Performs the server side validation. - * @param Control[]|null $controls + * @param (Control|self)[]|null $controls */ public function validate(?array $controls = null): void { diff --git a/site/vendor/nette/forms/src/Forms/Controls/DateTimeControl.php b/site/vendor/nette/forms/src/Forms/Controls/DateTimeControl.php index c1eff5aaa..1881a877e 100644 --- a/site/vendor/nette/forms/src/Forms/Controls/DateTimeControl.php +++ b/site/vendor/nette/forms/src/Forms/Controls/DateTimeControl.php @@ -33,8 +33,11 @@ class DateTimeControl extends BaseControl private string $format = self::FormatObject; - public function __construct(string|Stringable|null $label = null, int $type = self::Date, bool $withSeconds = false) - { + public function __construct( + string|Stringable|null $label = null, + int $type = self::TypeDate, + bool $withSeconds = false, + ) { $this->type = $type; $this->withSeconds = $withSeconds; parent::__construct($label); diff --git a/site/vendor/nette/forms/src/Forms/Controls/SelectBox.php b/site/vendor/nette/forms/src/Forms/Controls/SelectBox.php index 6d9741888..7207c2c2d 100644 --- a/site/vendor/nette/forms/src/Forms/Controls/SelectBox.php +++ b/site/vendor/nette/forms/src/Forms/Controls/SelectBox.php @@ -53,7 +53,7 @@ public function setPrompt(string|Stringable|false $prompt): static /** - * Returns first prompt item? + * Returns first prompt item. */ public function getPrompt(): string|Stringable|false { @@ -90,18 +90,29 @@ public function setItems(array $items, bool $useKeys = true) public function getControl(): Nette\Utils\Html { - $items = $this->prompt === false ? [] : ['' => $this->translate($this->prompt)]; + $items = []; foreach ($this->options as $key => $value) { $items[is_array($value) ? $this->translate($key) : $key] = $this->translate($value); } - return Nette\Forms\Helpers::createSelectBox( - $items, - [ - 'disabled:' => is_array($this->disabled) ? $this->disabled : null, - ] + $this->optionAttributes, - $this->value, - )->addAttributes(parent::getControl()->attrs); + $attrs = $this->optionAttributes; + $attrs['disabled:'] = is_array($this->disabled) ? $this->disabled : []; + + $selected = $this->value; + if ($this->prompt !== false) { + $promptKey = ''; + while (isset($items[$promptKey])) { + $promptKey .= "\x1"; + } + $items = [$promptKey => $this->translate($this->prompt)] + $items; + if ($this->isRequired()) { + $attrs['hidden:'][$promptKey] = $attrs['disabled:'][$promptKey] = true; + $selected ??= $promptKey; // disabled & selected for Safari, hidden for other browsers + } + } + + return Nette\Forms\Helpers::createSelectBox($items, $attrs, $selected) + ->addAttributes(parent::getControl()->attrs); } diff --git a/site/vendor/nette/forms/src/Forms/Form.php b/site/vendor/nette/forms/src/Forms/Form.php index a9d942fd2..81abcd0c3 100644 --- a/site/vendor/nette/forms/src/Forms/Form.php +++ b/site/vendor/nette/forms/src/Forms/Form.php @@ -206,7 +206,7 @@ class Form extends Container implements Nette\HtmlStringable /** @var bool */ protected $crossOrigin = false; private static ?Nette\Http\IRequest $defaultHttpRequest = null; - private SubmitterControl|bool $submittedBy; + private SubmitterControl|bool $submittedBy = false; private array $httpData; private Html $element; private FormRenderer $renderer; diff --git a/site/vendor/phpstan/phpdoc-parser/src/Parser/PhpDocParser.php b/site/vendor/phpstan/phpdoc-parser/src/Parser/PhpDocParser.php index d7678a3db..e46e0941d 100644 --- a/site/vendor/phpstan/phpdoc-parser/src/Parser/PhpDocParser.php +++ b/site/vendor/phpstan/phpdoc-parser/src/Parser/PhpDocParser.php @@ -384,6 +384,7 @@ public function parseTagValue(TokenIterator $tokens, string $tag): Ast\PhpDoc\Ph case '@param': case '@phpstan-param': case '@psalm-param': + case '@phan-param': $tagValue = $this->parseParamTagValue($tokens); break; @@ -405,12 +406,15 @@ public function parseTagValue(TokenIterator $tokens, string $tag): Ast\PhpDoc\Ph case '@var': case '@phpstan-var': case '@psalm-var': + case '@phan-var': $tagValue = $this->parseVarTagValue($tokens); break; case '@return': case '@phpstan-return': case '@psalm-return': + case '@phan-return': + case '@phan-real-return': $tagValue = $this->parseReturnTagValue($tokens); break; @@ -420,6 +424,7 @@ public function parseTagValue(TokenIterator $tokens, string $tag): Ast\PhpDoc\Ph break; case '@mixin': + case '@phan-mixin': $tagValue = $this->parseMixinTagValue($tokens); break; @@ -446,18 +451,23 @@ public function parseTagValue(TokenIterator $tokens, string $tag): Ast\PhpDoc\Ph case '@psalm-property': case '@psalm-property-read': case '@psalm-property-write': + case '@phan-property': + case '@phan-property-read': + case '@phan-property-write': $tagValue = $this->parsePropertyTagValue($tokens); break; case '@method': case '@phpstan-method': case '@psalm-method': + case '@phan-method': $tagValue = $this->parseMethodTagValue($tokens); break; case '@template': case '@phpstan-template': case '@psalm-template': + case '@phan-template': case '@template-covariant': case '@phpstan-template-covariant': case '@psalm-template-covariant': @@ -474,6 +484,8 @@ function ($tokens) { case '@extends': case '@phpstan-extends': + case '@phan-extends': + case '@phan-inherits': case '@template-extends': $tagValue = $this->parseExtendsTagValue('@extends', $tokens); break; @@ -492,6 +504,7 @@ function ($tokens) { case '@phpstan-type': case '@psalm-type': + case '@phan-type': $tagValue = $this->parseTypeAliasTagValue($tokens); break; @@ -506,6 +519,9 @@ function ($tokens) { case '@psalm-assert': case '@psalm-assert-if-true': case '@psalm-assert-if-false': + case '@phan-assert': + case '@phan-assert-if-true': + case '@phan-assert-if-false': $tagValue = $this->parseAssertTagValue($tokens); break; @@ -1091,7 +1107,7 @@ private function parseTypeAliasTagValue(TokenIterator $tokens): Ast\PhpDoc\TypeA $alias = $tokens->currentTokenValue(); $tokens->consumeTokenType(Lexer::TOKEN_IDENTIFIER); - // support psalm-type syntax + // support phan-type/psalm-type syntax $tokens->tryConsumeTokenType(Lexer::TOKEN_EQUAL); if ($this->preserveTypeAliasesWithInvalidTypes) { diff --git a/site/vendor/spaze/phpcs-phar/composer.json b/site/vendor/spaze/phpcs-phar/composer.json index dad186167..9b3b328e3 100644 --- a/site/vendor/spaze/phpcs-phar/composer.json +++ b/site/vendor/spaze/phpcs-phar/composer.json @@ -14,8 +14,8 @@ ], "replace": { "dealerdirect/phpcodesniffer-composer-installer": "*", - "phpcsstandards/php_codesniffer": "3.9.0", - "squizlabs/php_codesniffer": "3.9.0" + "phpcsstandards/php_codesniffer": "3.9.1", + "squizlabs/php_codesniffer": "3.9.1" }, "bin": [ "phpcbf", diff --git a/site/vendor/spaze/phpcs-phar/phpcs.phar b/site/vendor/spaze/phpcs-phar/phpcs.phar index 11cb40ee82ece17a3c8cac0ba7d94cb70b754ad1..0d02f334c6640f3c9b04adfe8e9c90fe4bbf57d9 100644 GIT binary patch delta 25838 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 delta 21667 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 diff --git a/site/vendor/spaze/phpcs-phar/phpcs.phar.asc b/site/vendor/spaze/phpcs-phar/phpcs.phar.asc index 4d2dd1da51a131b04e98fbad61d6f20cf4079585..854d961ed49db4b5fe42fa3a18bc1adecaba9dee 100644 GIT binary patch delta 535 zcmV+y0_gqI1k(hNA_Qg$(x#CnDSuhB5B?{3pYy;b$lZCeH?#O^t1VpekAV>qnlzfv703yP)IcKWCGsWe|d3z+Z8dUCYf?bNART64Xrhf%x-SBl# zp>}UrE>L~-b<^}3Jj=|q4CYm_raUMe&Iq!KJSsj7Puf+;fSib51%`=cYO=y^Ci4KT z4oCYn^9ngj&C9Ch2J7rR__<5HCIen}y)k3lH$W`g5)J0o z#ONwtQHYM-jC$%{t*L$0iNvxIdKswO0K>SH!s;$ng|R;=5RZ=Jo|AAcyO Zg$xqlNS88K5KEBf>@*B8;$u5+Uz04M+e delta 535 zcmV+y0_gqI1k(hNA_Qg6d*+cQDSy|l5B(9m~rPSOlP%7BD~rX?D> zK_C(THAC^ED2z&3%L(sb1~c4aQ+o#`7?}f(vJVcEgfu)fBn%VE#;-b4Ix#y!{MmsG z$%70GBpH2?t9SaNbrkzY%zxPAa)o1YkJh&DR|Wh_{;dvP<2uKFuOm2N-|PHMSYDbb z==#yiz-wN5!wD8H9{Im_m=y-=H1{#!kpf5F?@DgCaUyQ(6h^nA3%V@=hfm47s(Hex z1ISA!Yz0&?jw4h17&tIo+YPlCqotd_%Z{XSv8!7m*{3CA7+E;9Du3_|v7{WYzM^H? zb0Rnq+)o^84wW!;?P`)`hK*et*cU`6-Jpzd?{lz^!|Pp0>OyKbRUk=wFVYiX#}CCH1=Vtl884+Xh5V(=mr ZA!V3{SyygQ^Pl8riU@}sCa#5%neLD@`Fj8W diff --git a/site/vendor/spaze/phpinfo/README.md b/site/vendor/spaze/phpinfo/README.md index f4a57e62e..77e638d71 100644 --- a/site/vendor/spaze/phpinfo/README.md +++ b/site/vendor/spaze/phpinfo/README.md @@ -30,3 +30,18 @@ If found, the string in `$sanitize` will be replaced with the string `$with`, if Some of the values in `phpinfo()` output are printed URL-encoded, so the `$sanitize` value will also be searched URL-encoded automatically. This means that both `foo,bar` and `foo%2Cbar` would be replaced. + +## Sanitizing arbitrary strings +If you have your `phpinfo()` output (or anything really) in a string, you can use the sanitizer standalone, for example: +```php +$sanitizer = new SensitiveValueSanitizer(); +$string = $sanitizer->addSanitization('🍍', '🍌')->sanitize('🍍🍕'); +``` + +The sanitizer will sanitize session id automatically, you can (but shouldn't) disable it with `doNotSanitizeSessionId()`. + +You can then pass the configured sanitizer to `PhpInfo` class which will then use your configuration for sanitizing the `phpinfo()` output too: +```php +$phpInfo = new PhpInfo($sanitizer); +$html = $phpInfo->getHtml(); +``` diff --git a/site/vendor/spaze/phpinfo/composer.json b/site/vendor/spaze/phpinfo/composer.json index 99c3cfe34..71dffb430 100644 --- a/site/vendor/spaze/phpinfo/composer.json +++ b/site/vendor/spaze/phpinfo/composer.json @@ -11,7 +11,7 @@ } ], "require": { - "php": "^8.0" + "php": "^7.4 || ^8.0" }, "require-dev": { "php-parallel-lint/php-parallel-lint": "^1.3", diff --git a/site/vendor/spaze/phpinfo/src/PhpInfo.php b/site/vendor/spaze/phpinfo/src/PhpInfo.php index 966c92a66..fef2e3288 100644 --- a/site/vendor/spaze/phpinfo/src/PhpInfo.php +++ b/site/vendor/spaze/phpinfo/src/PhpInfo.php @@ -6,12 +6,13 @@ class PhpInfo { - private bool $sanitizeSessionId = true; + private SensitiveValueSanitizer $sanitizer; - private string $sanitizeWith = '[***]'; - /** @var array */ - private array $sanitize = []; + public function __construct(?SensitiveValueSanitizer $sanitizer = null) + { + $this->sanitizer = $sanitizer ?? new SensitiveValueSanitizer(); + } public function getHtml(): string @@ -21,42 +22,26 @@ public function getHtml(): string phpinfo(); $info = preg_replace('~^.*?(]*>.*).*$~s', '$1', ob_get_clean() ?: $error) ?? $error; // Convert inline styles to classes defined in admin/info.css so we can drop CSP style-src 'unsafe-inline' - $replacements['style="color: #'] = 'class="color-'; - $sanitize = []; - if ($this->sanitizeSessionId && $this->getSessionId() !== null) { - $sanitize[$this->getSessionId()] = $this->sanitizeWith; - } - $sanitize = $this->sanitize + $sanitize; - foreach ($sanitize as $search => $replace) { - $search = (string)$search; - $replacements[$search] = $replace; - $replacements[urlencode($search)] = $replace; - } - $info = strtr($info, $replacements); + $info = str_replace('style="color: #', 'class="color-', $info); + $info = $this->sanitizer->sanitize($info); return sprintf('
%s
', $info); } - private function getSessionId(): ?string - { - return session_id() ?: null; - } - - /** * WARNING: Not recommended, disabling session id sanitization may allow * session stealing attacks that read the cookie from the output of phpinfo(). */ public function doNotSanitizeSessionId(): self { - $this->sanitizeSessionId = false; + $this->sanitizer->doNotSanitizeSessionId(); return $this; } public function addSanitization(string $sanitize, ?string $with = null): self { - $this->sanitize[$sanitize] = $with ?? $this->sanitizeWith; + $this->sanitizer->addSanitization($sanitize, $with); return $this; } diff --git a/site/vendor/spaze/phpinfo/src/SensitiveValueSanitizer.php b/site/vendor/spaze/phpinfo/src/SensitiveValueSanitizer.php new file mode 100644 index 000000000..9f9dcdf52 --- /dev/null +++ b/site/vendor/spaze/phpinfo/src/SensitiveValueSanitizer.php @@ -0,0 +1,51 @@ + */ + private array $sanitize = []; + + + public function sanitize(string $info): string + { + $sanitize = []; + if ($this->sanitizeSessionId && $this->getSessionId() !== null) { + $sanitize[$this->getSessionId()] = $this->sanitizeWith; + $sanitize[urlencode($this->getSessionId())] = $this->sanitizeWith; + } + return strtr($info, $this->sanitize + $sanitize); + } + + + private function getSessionId(): ?string + { + return session_id() ?: null; + } + + + /** + * WARNING: Not recommended, disabling session id sanitization may allow + * session stealing attacks that read the cookie from the output of phpinfo(). + */ + public function doNotSanitizeSessionId(): self + { + $this->sanitizeSessionId = false; + return $this; + } + + + public function addSanitization(string $sanitize, ?string $with = null): self + { + $this->sanitize[$sanitize] = $this->sanitize[urlencode($sanitize)] = $with ?? $this->sanitizeWith; + return $this; + } + +} diff --git a/site/vendor/symfony/cache-contracts/CacheInterface.php b/site/vendor/symfony/cache-contracts/CacheInterface.php index a4fcea731..3e4aaf65c 100644 --- a/site/vendor/symfony/cache-contracts/CacheInterface.php +++ b/site/vendor/symfony/cache-contracts/CacheInterface.php @@ -44,7 +44,7 @@ interface CacheInterface * * @throws InvalidArgumentException When $key is not valid or when $beta is negative */ - public function get(string $key, callable $callback, float $beta = null, array &$metadata = null): mixed; + public function get(string $key, callable $callback, ?float $beta = null, ?array &$metadata = null): mixed; /** * Removes an item from the pool. diff --git a/site/vendor/symfony/cache-contracts/CacheTrait.php b/site/vendor/symfony/cache-contracts/CacheTrait.php index 8a4b0bda8..c2f658048 100644 --- a/site/vendor/symfony/cache-contracts/CacheTrait.php +++ b/site/vendor/symfony/cache-contracts/CacheTrait.php @@ -25,7 +25,7 @@ class_exists(InvalidArgumentException::class); */ trait CacheTrait { - public function get(string $key, callable $callback, float $beta = null, array &$metadata = null): mixed + public function get(string $key, callable $callback, ?float $beta = null, ?array &$metadata = null): mixed { return $this->doGet($this, $key, $callback, $beta, $metadata); } @@ -35,7 +35,7 @@ public function delete(string $key): bool return $this->deleteItem($key); } - private function doGet(CacheItemPoolInterface $pool, string $key, callable $callback, ?float $beta, array &$metadata = null, LoggerInterface $logger = null): mixed + private function doGet(CacheItemPoolInterface $pool, string $key, callable $callback, ?float $beta, ?array &$metadata = null, ?LoggerInterface $logger = null): mixed { if (0 > $beta ??= 1.0) { throw new class(sprintf('Argument "$beta" provided to "%s::get()" must be a positive number, %f given.', static::class, $beta)) extends \InvalidArgumentException implements InvalidArgumentException {}; diff --git a/site/vendor/symfony/cache/Adapter/PdoAdapter.php b/site/vendor/symfony/cache/Adapter/PdoAdapter.php index 4fee819da..6e5e392de 100644 --- a/site/vendor/symfony/cache/Adapter/PdoAdapter.php +++ b/site/vendor/symfony/cache/Adapter/PdoAdapter.php @@ -372,10 +372,10 @@ private function getServerVersion(): string private function isTableMissing(\PDOException $exception): bool { $driver = $this->getDriver(); - $code = $exception->getCode(); + [$sqlState, $code] = $exception->errorInfo ?? [null, $exception->getCode()]; return match ($driver) { - 'pgsql' => '42P01' === $code, + 'pgsql' => '42P01' === $sqlState, 'sqlite' => str_contains($exception->getMessage(), 'no such table:'), 'oci' => 942 === $code, 'sqlsrv' => 208 === $code, diff --git a/site/vendor/symfony/cache/Traits/Redis6Proxy.php b/site/vendor/symfony/cache/Traits/Redis6Proxy.php index 59ab11b0f..e41c0d10c 100644 --- a/site/vendor/symfony/cache/Traits/Redis6Proxy.php +++ b/site/vendor/symfony/cache/Traits/Redis6Proxy.php @@ -28,6 +28,7 @@ class Redis6Proxy extends \Redis implements ResetInterface, LazyObjectInterface use LazyProxyTrait { resetLazyObject as reset; } + use Redis6ProxyTrait; private const LAZY_OBJECT_PROPERTY_SCOPES = []; @@ -96,11 +97,6 @@ public function bgrewriteaof(): \Redis|bool return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->bgrewriteaof(...\func_get_args()); } - public function waitaof($numlocal, $numreplicas, $timeout): \Redis|array|false - { - return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->waitaof(...\func_get_args()); - } - public function bitcount($key, $start = 0, $end = -1, $bybit = false): \Redis|false|int { return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->bitcount(...\func_get_args()); @@ -231,11 +227,6 @@ public function discard(): \Redis|bool return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->discard(...\func_get_args()); } - public function dump($key): \Redis|string - { - return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->dump(...\func_get_args()); - } - public function echo($str): \Redis|false|string { return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->echo(...\func_get_args()); @@ -656,11 +647,6 @@ public function ltrim($key, $start, $end): \Redis|bool return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->ltrim(...\func_get_args()); } - public function mget($keys): \Redis|array - { - return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->mget(...\func_get_args()); - } - public function migrate($host, $port, $key, $dstdb, $timeout, $copy = false, $replace = false, #[\SensitiveParameter] $credentials = null): \Redis|bool { return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->migrate(...\func_get_args()); diff --git a/site/vendor/symfony/cache/Traits/Redis6ProxyTrait.php b/site/vendor/symfony/cache/Traits/Redis6ProxyTrait.php new file mode 100644 index 000000000..d086d5b3e --- /dev/null +++ b/site/vendor/symfony/cache/Traits/Redis6ProxyTrait.php @@ -0,0 +1,51 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Cache\Traits; + +if (version_compare(phpversion('redis'), '6.0.2', '>')) { + /** + * @internal + */ + trait Redis6ProxyTrait + { + public function dump($key): \Redis|false|string + { + return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->dump(...\func_get_args()); + } + + public function mget($keys): \Redis|array|false + { + return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->mget(...\func_get_args()); + } + + public function waitaof($numlocal, $numreplicas, $timeout): \Redis|array|false + { + return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->waitaof(...\func_get_args()); + } + } +} else { + /** + * @internal + */ + trait Redis6ProxyTrait + { + public function dump($key): \Redis|string + { + return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->dump(...\func_get_args()); + } + + public function mget($keys): \Redis|array + { + return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->mget(...\func_get_args()); + } + } +} diff --git a/site/vendor/symfony/cache/Traits/RedisCluster6Proxy.php b/site/vendor/symfony/cache/Traits/RedisCluster6Proxy.php index da6526b6e..6e06b075f 100644 --- a/site/vendor/symfony/cache/Traits/RedisCluster6Proxy.php +++ b/site/vendor/symfony/cache/Traits/RedisCluster6Proxy.php @@ -28,6 +28,7 @@ class RedisCluster6Proxy extends \RedisCluster implements ResetInterface, LazyOb use LazyProxyTrait { resetLazyObject as reset; } + use RedisCluster6ProxyTrait; private const LAZY_OBJECT_PROPERTY_SCOPES = []; @@ -96,11 +97,6 @@ public function bgrewriteaof($key_or_address): \RedisCluster|bool return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->bgrewriteaof(...\func_get_args()); } - public function waitaof($key_or_address, $numlocal, $numreplicas, $timeout): \RedisCluster|array|false - { - return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->waitaof(...\func_get_args()); - } - public function bgsave($key_or_address): \RedisCluster|bool { return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->bgsave(...\func_get_args()); @@ -661,11 +657,6 @@ public function pttl($key): \RedisCluster|false|int return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->pttl(...\func_get_args()); } - public function publish($channel, $message): \RedisCluster|bool - { - return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->publish(...\func_get_args()); - } - public function pubsub($key_or_address, ...$values): mixed { return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->pubsub(...\func_get_args()); diff --git a/site/vendor/symfony/cache/Traits/RedisCluster6ProxyTrait.php b/site/vendor/symfony/cache/Traits/RedisCluster6ProxyTrait.php new file mode 100644 index 000000000..389c6e1ad --- /dev/null +++ b/site/vendor/symfony/cache/Traits/RedisCluster6ProxyTrait.php @@ -0,0 +1,41 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Cache\Traits; + +if (version_compare(phpversion('redis'), '6.0.2', '>')) { + /** + * @internal + */ + trait RedisCluster6ProxyTrait + { + public function publish($channel, $message): \RedisCluster|bool|int + { + return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->publish(...\func_get_args()); + } + + public function waitaof($key_or_address, $numlocal, $numreplicas, $timeout): \RedisCluster|array|false + { + return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->waitaof(...\func_get_args()); + } + } +} else { + /** + * @internal + */ + trait RedisCluster6ProxyTrait + { + public function publish($channel, $message): \RedisCluster|bool + { + return ($this->lazyObjectState->realInstance ??= ($this->lazyObjectState->initializer)())->publish(...\func_get_args()); + } + } +} diff --git a/site/vendor/symfony/config/Definition/Dumper/YamlReferenceDumper.php b/site/vendor/symfony/config/Definition/Dumper/YamlReferenceDumper.php index 4f720aa97..e8d7f5cfa 100644 --- a/site/vendor/symfony/config/Definition/Dumper/YamlReferenceDumper.php +++ b/site/vendor/symfony/config/Definition/Dumper/YamlReferenceDumper.php @@ -18,7 +18,6 @@ use Symfony\Component\Config\Definition\NodeInterface; use Symfony\Component\Config\Definition\PrototypedArrayNode; use Symfony\Component\Config\Definition\ScalarNode; -use Symfony\Component\Config\Definition\VariableNode; use Symfony\Component\Yaml\Inline; /** @@ -90,19 +89,12 @@ private function writeNode(NodeInterface $node, ?NodeInterface $parentNode = nul $children = $this->getPrototypeChildren($node); } - if (!$children) { - if ($node->hasDefaultValue() && \count($defaultArray = $node->getDefaultValue())) { - $default = ''; - } elseif (!\is_array($example)) { - $default = '[]'; - } + if (!$children && !($node->hasDefaultValue() && \count($defaultArray = $node->getDefaultValue()))) { + $default = '[]'; } } elseif ($node instanceof EnumNode) { $comments[] = 'One of '.$node->getPermissibleValues('; '); $default = $node->hasDefaultValue() ? Inline::dump($node->getDefaultValue()) : '~'; - } elseif (VariableNode::class === $node::class && \is_array($example)) { - // If there is an array example, we are sure we dont need to print a default value - $default = ''; } else { $default = '~'; @@ -170,7 +162,7 @@ private function writeNode(NodeInterface $node, ?NodeInterface $parentNode = nul $this->writeLine('# '.$message.':', $depth * 4 + 4); - $this->writeArray(array_map(Inline::dump(...), $example), $depth + 1); + $this->writeArray(array_map(Inline::dump(...), $example), $depth + 1, true); } if ($children) { @@ -191,7 +183,7 @@ private function writeLine(string $text, int $indent = 0): void $this->reference .= sprintf($format, $text)."\n"; } - private function writeArray(array $array, int $depth): void + private function writeArray(array $array, int $depth, bool $asComment = false): void { $isIndexed = array_is_list($array); @@ -201,15 +193,18 @@ private function writeArray(array $array, int $depth): void } else { $val = $value; } + $prefix = $asComment ? '# ' : ''; + + $prefix = $asComment ? '# ' : ''; if ($isIndexed) { - $this->writeLine('- '.$val, $depth * 4); + $this->writeLine($prefix.'- '.$val, $depth * 4); } else { - $this->writeLine(sprintf('%-20s %s', $key.':', $val), $depth * 4); + $this->writeLine(sprintf('%s%-20s %s', $prefix, $key.':', $val), $depth * 4); } if (\is_array($value)) { - $this->writeArray($value, $depth + 1); + $this->writeArray($value, $depth + 1, $asComment); } } } diff --git a/site/vendor/symfony/filesystem/Filesystem.php b/site/vendor/symfony/filesystem/Filesystem.php index b7fc70118..176535d13 100644 --- a/site/vendor/symfony/filesystem/Filesystem.php +++ b/site/vendor/symfony/filesystem/Filesystem.php @@ -72,6 +72,9 @@ public function copy(string $originFile, string $targetFile, bool $overwriteNewe // Like `cp`, preserve executable permission bits self::box('chmod', $targetFile, fileperms($targetFile) | (fileperms($originFile) & 0111)); + // Like `cp`, preserve the file modification time + self::box('touch', $targetFile, filemtime($originFile)); + if ($bytesCopied !== $bytesOrigin = filesize($originFile)) { throw new IOException(sprintf('Failed to copy the whole content of "%s" to "%s" (%g of %g bytes copied).', $originFile, $targetFile, $bytesCopied, $bytesOrigin), 0, null, $originFile); } @@ -190,7 +193,7 @@ private static function doRemove(array $files, bool $isRecursive): void throw new IOException(sprintf('Failed to remove directory "%s": ', $file).$lastError); } - } elseif (!self::box('unlink', $file) && (str_contains(self::$lastError, 'Permission denied') || file_exists($file))) { + } elseif (!self::box('unlink', $file) && ((self::$lastError && str_contains(self::$lastError, 'Permission denied')) || file_exists($file))) { throw new IOException(sprintf('Failed to remove file "%s": ', $file).self::$lastError); } } diff --git a/site/vendor/symfony/service-contracts/Test/ServiceLocatorTestCase.php b/site/vendor/symfony/service-contracts/Test/ServiceLocatorTestCase.php index 65a3fe337..583f72a78 100644 --- a/site/vendor/symfony/service-contracts/Test/ServiceLocatorTestCase.php +++ b/site/vendor/symfony/service-contracts/Test/ServiceLocatorTestCase.php @@ -12,9 +12,7 @@ namespace Symfony\Contracts\Service\Test; use PHPUnit\Framework\TestCase; -use Psr\Container\ContainerExceptionInterface; use Psr\Container\ContainerInterface; -use Psr\Container\NotFoundExceptionInterface; use Symfony\Contracts\Service\ServiceLocatorTrait; abstract class ServiceLocatorTestCase extends TestCase @@ -68,29 +66,27 @@ public function testGetDoesNotMemoize() public function testThrowsOnUndefinedInternalService() { - $locator = $this->getServiceLocator([ - 'foo' => function () use (&$locator) { return $locator->get('bar'); }, - ]); - if (!$this->getExpectedException()) { - $this->expectException(NotFoundExceptionInterface::class); + $this->expectException(\Psr\Container\NotFoundExceptionInterface::class); $this->expectExceptionMessage('The service "foo" has a dependency on a non-existent service "bar". This locator only knows about the "foo" service.'); } + $locator = $this->getServiceLocator([ + 'foo' => function () use (&$locator) { return $locator->get('bar'); }, + ]); $locator->get('foo'); } public function testThrowsOnCircularReference() { + $this->expectException(\Psr\Container\ContainerExceptionInterface::class); + $this->expectExceptionMessage('Circular reference detected for service "bar", path: "bar -> baz -> bar".'); $locator = $this->getServiceLocator([ 'foo' => function () use (&$locator) { return $locator->get('bar'); }, 'bar' => function () use (&$locator) { return $locator->get('baz'); }, 'baz' => function () use (&$locator) { return $locator->get('bar'); }, ]); - $this->expectException(ContainerExceptionInterface::class); - $this->expectExceptionMessage('Circular reference detected for service "bar", path: "bar -> baz -> bar".'); - $locator->get('foo'); } } diff --git a/site/vendor/symfony/translation-contracts/Test/TranslatorTest.php b/site/vendor/symfony/translation-contracts/Test/TranslatorTest.php index 756228af5..18e669077 100644 --- a/site/vendor/symfony/translation-contracts/Test/TranslatorTest.php +++ b/site/vendor/symfony/translation-contracts/Test/TranslatorTest.php @@ -183,9 +183,8 @@ public function testReturnMessageIfExactlyOneStandardRuleIsGiven() */ public function testThrowExceptionIfMatchingMessageCannotBeFound($id, $number) { - $translator = $this->getTranslator(); - $this->expectException(\InvalidArgumentException::class); + $translator = $this->getTranslator(); $translator->trans($id, ['%count%' => $number]); } diff --git a/site/vendor/symfony/translation-contracts/TranslatableInterface.php b/site/vendor/symfony/translation-contracts/TranslatableInterface.php index 47fd6fa02..8554697ec 100644 --- a/site/vendor/symfony/translation-contracts/TranslatableInterface.php +++ b/site/vendor/symfony/translation-contracts/TranslatableInterface.php @@ -16,5 +16,5 @@ */ interface TranslatableInterface { - public function trans(TranslatorInterface $translator, string $locale = null): string; + public function trans(TranslatorInterface $translator, ?string $locale = null): string; } diff --git a/site/vendor/symfony/translation-contracts/TranslatorInterface.php b/site/vendor/symfony/translation-contracts/TranslatorInterface.php index 018db07eb..7fa69878f 100644 --- a/site/vendor/symfony/translation-contracts/TranslatorInterface.php +++ b/site/vendor/symfony/translation-contracts/TranslatorInterface.php @@ -59,7 +59,7 @@ interface TranslatorInterface * * @throws \InvalidArgumentException If the locale contains invalid characters */ - public function trans(string $id, array $parameters = [], string $domain = null, string $locale = null): string; + public function trans(string $id, array $parameters = [], ?string $domain = null, ?string $locale = null): string; /** * Returns the default locale. diff --git a/site/vendor/symfony/translation-contracts/TranslatorTrait.php b/site/vendor/symfony/translation-contracts/TranslatorTrait.php index e3b0adff0..63f6fb333 100644 --- a/site/vendor/symfony/translation-contracts/TranslatorTrait.php +++ b/site/vendor/symfony/translation-contracts/TranslatorTrait.php @@ -35,7 +35,7 @@ public function getLocale(): string return $this->locale ?: (class_exists(\Locale::class) ? \Locale::getDefault() : 'en'); } - public function trans(?string $id, array $parameters = [], string $domain = null, string $locale = null): string + public function trans(?string $id, array $parameters = [], ?string $domain = null, ?string $locale = null): string { if (null === $id || '' === $id) { return ''; diff --git a/site/vendor/symfony/var-exporter/Internal/LazyObjectTrait.php b/site/vendor/symfony/var-exporter/Internal/LazyObjectTrait.php index cccdf6cff..4a6f232af 100644 --- a/site/vendor/symfony/var-exporter/Internal/LazyObjectTrait.php +++ b/site/vendor/symfony/var-exporter/Internal/LazyObjectTrait.php @@ -11,12 +11,15 @@ namespace Symfony\Component\VarExporter\Internal; +use Symfony\Component\Serializer\Attribute\Ignore; + if (\PHP_VERSION_ID >= 80300) { /** * @internal */ trait LazyObjectTrait { + #[Ignore] private readonly LazyObjectState $lazyObjectState; } } else { @@ -25,6 +28,7 @@ trait LazyObjectTrait */ trait LazyObjectTrait { + #[Ignore] private LazyObjectState $lazyObjectState; } } diff --git a/site/vendor/symfony/var-exporter/LazyGhostTrait.php b/site/vendor/symfony/var-exporter/LazyGhostTrait.php index 08d0ed2cf..d64e6b1e4 100644 --- a/site/vendor/symfony/var-exporter/LazyGhostTrait.php +++ b/site/vendor/symfony/var-exporter/LazyGhostTrait.php @@ -11,6 +11,7 @@ namespace Symfony\Component\VarExporter; +use Symfony\Component\Serializer\Attribute\Ignore; use Symfony\Component\VarExporter\Internal\Hydrator; use Symfony\Component\VarExporter\Internal\LazyObjectRegistry as Registry; use Symfony\Component\VarExporter\Internal\LazyObjectState; @@ -55,6 +56,7 @@ public static function createLazyGhost(\Closure $initializer, ?array $skippedPro * * @param $partial Whether partially initialized objects should be considered as initialized */ + #[Ignore] public function isLazyObjectInitialized(bool $partial = false): bool { if (!$state = $this->lazyObjectState ?? null) { @@ -331,6 +333,7 @@ public function __destruct() } } + #[Ignore] private function setLazyObjectAsInitialized(bool $initialized): void { if ($state = $this->lazyObjectState ?? null) { diff --git a/site/vendor/symfony/var-exporter/LazyProxyTrait.php b/site/vendor/symfony/var-exporter/LazyProxyTrait.php index 4dd435bcd..203367052 100644 --- a/site/vendor/symfony/var-exporter/LazyProxyTrait.php +++ b/site/vendor/symfony/var-exporter/LazyProxyTrait.php @@ -11,6 +11,7 @@ namespace Symfony\Component\VarExporter; +use Symfony\Component\Serializer\Attribute\Ignore; use Symfony\Component\VarExporter\Hydrator as PublicHydrator; use Symfony\Component\VarExporter\Internal\Hydrator; use Symfony\Component\VarExporter\Internal\LazyObjectRegistry as Registry; @@ -50,6 +51,7 @@ public static function createLazyProxy(\Closure $initializer, ?object $instance * * @param $partial Whether partially initialized objects should be considered as initialized */ + #[Ignore] public function isLazyObjectInitialized(bool $partial = false): bool { return !isset($this->lazyObjectState) || isset($this->lazyObjectState->realInstance) || Registry::$noInitializerState === $this->lazyObjectState->initializer; diff --git a/site/vendor/symfony/var-exporter/composer.json b/site/vendor/symfony/var-exporter/composer.json index 7a6f7b607..f3a227e9c 100644 --- a/site/vendor/symfony/var-exporter/composer.json +++ b/site/vendor/symfony/var-exporter/composer.json @@ -19,6 +19,8 @@ "php": ">=8.2" }, "require-dev": { + "symfony/property-access": "^6.4|^7.0", + "symfony/serializer": "^6.4|^7.0", "symfony/var-dumper": "^6.4|^7.0" }, "autoload": { diff --git a/site/vendor/tracy/tracy/src/Bridges/Nette/TracyExtension.php b/site/vendor/tracy/tracy/src/Bridges/Nette/TracyExtension.php index 9a11a58a2..3f0c6ac2b 100644 --- a/site/vendor/tracy/tracy/src/Bridges/Nette/TracyExtension.php +++ b/site/vendor/tracy/tracy/src/Bridges/Nette/TracyExtension.php @@ -60,7 +60,7 @@ public function getConfigSchema(): Nette\Schema\Schema } - public function loadConfiguration() + public function loadConfiguration(): void { $builder = $this->getContainerBuilder(); @@ -76,7 +76,7 @@ public function loadConfiguration() } - public function afterCompile(Nette\PhpGenerator\ClassType $class) + public function afterCompile(Nette\PhpGenerator\ClassType $class): void { $initialize = $this->initialization ?? new Nette\PhpGenerator\Closure; $initialize->addBody('if (!Tracy\Debugger::isEnabled()) { return; }'); diff --git a/site/vendor/tracy/tracy/src/Tracy/Bar/assets/bar.js b/site/vendor/tracy/tracy/src/Tracy/Bar/assets/bar.js index c37a48809..3ce40b387 100644 --- a/site/vendor/tracy/tracy/src/Tracy/Bar/assets/bar.js +++ b/site/vendor/tracy/tracy/src/Tracy/Bar/assets/bar.js @@ -166,7 +166,7 @@ class Panel doc.title = this.elem.querySelector('h1').textContent; } - win.addEventListener('beforeunload', () => { + win.addEventListener('pagehide', () => { this.toPeek(); win.close(); // forces closing, can be invoked by F5 }); @@ -469,7 +469,7 @@ class Debug size = newSize; }); - window.addEventListener('unload', () => { + window.addEventListener('pagehide', () => { for (let id in Debug.panels) { Debug.panels[id].savePosition(); } diff --git a/site/vendor/tracy/tracy/src/Tracy/Bar/panels/info.panel.phtml b/site/vendor/tracy/tracy/src/Tracy/Bar/panels/info.panel.phtml index 69574d950..3f6af5d14 100644 --- a/site/vendor/tracy/tracy/src/Tracy/Bar/panels/info.panel.phtml +++ b/site/vendor/tracy/tracy/src/Tracy/Bar/panels/info.panel.phtml @@ -43,8 +43,8 @@ $info = [ 'Your IP' => $ipFormatter($_SERVER['REMOTE_ADDR'] ?? null), 'Server IP' => $ipFormatter($_SERVER['SERVER_ADDR'] ?? null), 'HTTP method / response code' => isset($_SERVER['REQUEST_METHOD']) ? $_SERVER['REQUEST_METHOD'] . ' / ' . http_response_code() : null, - 'PHP' => PHP_VERSION, - 'Xdebug' => extension_loaded('xdebug') ? phpversion('xdebug') : null, + 'PHP' => PHP_VERSION . ' ' . (PHP_ZTS ? 'TS' : 'NTS'), + 'Xdebug' => extension_loaded('xdebug') ? phpversion('xdebug') . ' (' . implode(', ', xdebug_info('mode')) . ')' : null, 'Tracy' => Debugger::Version, 'Server' => $_SERVER['SERVER_SOFTWARE'] ?? null, ]; diff --git a/site/vendor/tracy/tracy/src/Tracy/Debugger/Debugger.php b/site/vendor/tracy/tracy/src/Tracy/Debugger/Debugger.php index a67fb3b5a..4ce138958 100644 --- a/site/vendor/tracy/tracy/src/Tracy/Debugger/Debugger.php +++ b/site/vendor/tracy/tracy/src/Tracy/Debugger/Debugger.php @@ -17,7 +17,7 @@ */ class Debugger { - public const Version = '2.10.5'; + public const Version = '2.10.6'; /** server modes for Debugger::enable() */ public const @@ -209,7 +209,7 @@ public static function enable( // php configuration if (function_exists('ini_set')) { ini_set('display_errors', '0'); // or 'stderr' - ini_set('html_errors', '0'); + ini_set('html_errors', '0'); // additionally turns off stack trace displaing by xdebug ini_set('log_errors', '0'); ini_set('zend.exception_ignore_args', '0'); } @@ -289,7 +289,7 @@ public static function shutdownHandler(): void { $error = error_get_last(); if (in_array($error['type'] ?? null, [E_ERROR, E_CORE_ERROR, E_COMPILE_ERROR, E_PARSE, E_RECOVERABLE_ERROR, E_USER_ERROR], true)) { - self::exceptionHandler(Helpers::fixStack(new ErrorException($error['message'], 0, $error['type'], $error['file'], $error['line']))); + self::exceptionHandler(new ErrorException($error['message'], 0, $error['type'], $error['file'], $error['line'])); } elseif (($error['type'] ?? null) === E_COMPILE_WARNING) { error_clear_last(); self::errorHandler($error['type'], $error['message'], $error['file'], $error['line']); @@ -354,6 +354,7 @@ public static function errorHandler( { $error = error_get_last(); if (($error['type'] ?? null) === E_COMPILE_WARNING) { + // compile-warning does not trigger the handler, so we are testing it now error_clear_last(); self::errorHandler($error['type'], $error['message'], $error['file'], $error['line']); } diff --git a/site/vendor/tracy/tracy/src/Tracy/Helpers.php b/site/vendor/tracy/tracy/src/Tracy/Helpers.php index 7bcdcbc7f..923050184 100644 --- a/site/vendor/tracy/tracy/src/Tracy/Helpers.php +++ b/site/vendor/tracy/tracy/src/Tracy/Helpers.php @@ -9,8 +9,6 @@ namespace Tracy; -use Nette; - /** * Rendering helpers for Debugger. @@ -116,37 +114,6 @@ public static function findTrace(array $trace, array|string $method, ?int &$inde } - /** @internal */ - public static function fixStack(\Throwable $exception): \Throwable - { - if (function_exists('xdebug_get_function_stack')) { - $stack = []; - $trace = @xdebug_get_function_stack(); // @ xdebug compatibility warning - $trace = array_slice(array_reverse($trace), 2, -1); - foreach ($trace as $row) { - $frame = [ - 'file' => $row['file'], - 'line' => $row['line'], - 'function' => $row['function'] ?? '*unknown*', - 'args' => [], - ]; - if (!empty($row['class'])) { - $frame['type'] = isset($row['type']) && $row['type'] === 'dynamic' ? '->' : '::'; - $frame['class'] = $row['class']; - } - - $stack[] = $frame; - } - - $ref = new \ReflectionProperty('Exception', 'trace'); - $ref->setAccessible(true); - $ref->setValue($exception, $stack); - } - - return $exception; - } - - /** @internal */ public static function errorTypeToString(int $type): string { @@ -194,42 +161,67 @@ public static function improveException(\Throwable $e): void { $message = $e->getMessage(); if ( - (!$e instanceof \Error && !$e instanceof \ErrorException) - || $e instanceof Nette\MemberAccessException - || strpos($e->getMessage(), 'did you mean') + !($e instanceof \Error || $e instanceof \ErrorException) + || str_contains($e->getMessage(), 'did you mean') ) { // do nothing + } elseif (preg_match('~Argument #(\d+)(?: \(\$\w+\))? must be of type callable, (.+ given)~', $message, $m)) { + $arg = $e->getTrace()[0]['args'][$m[1] - 1] ?? null; + if (is_string($arg) && str_contains($arg, '::')) { + $arg = explode('::', $arg, 2); + } + if (!is_callable($arg, syntax_only: true)) { + // do nothing + } elseif (is_array($arg) && is_string($arg[0]) && !class_exists($arg[0]) && !trait_exists($arg[0])) { + $message = str_replace($m[2], "but class '$arg[0]' does not exist", $message); + } elseif (is_array($arg) && !method_exists($arg[0], $arg[1])) { + $hint = self::getSuggestion(get_class_methods($arg[0]) ?: [], $arg[1]); + $class = is_object($arg[0]) ? get_class($arg[0]) : $arg[0]; + $message = str_replace($m[2], "but method $class::$arg[1]() does not exist" . ($hint ? " (did you mean $hint?)" : ''), $message); + } elseif (is_string($arg) && !function_exists($arg)) { + $funcs = array_merge(get_defined_functions()['internal'], get_defined_functions()['user']); + $hint = self::getSuggestion($funcs, $arg); + $message = str_replace($m[2], "but function '$arg' does not exist" . ($hint ? " (did you mean $hint?)" : ''), $message); + } + } elseif (preg_match('#^Call to undefined function (\S+\\\\)?(\w+)\(#', $message, $m)) { $funcs = array_merge(get_defined_functions()['internal'], get_defined_functions()['user']); - $hint = self::getSuggestion($funcs, $m[1] . $m[2]) ?: self::getSuggestion($funcs, $m[2]); - $message = "Call to undefined function $m[2](), did you mean $hint()?"; - $replace = ["$m[2](", "$hint("]; + if ($hint = self::getSuggestion($funcs, $m[1] . $m[2]) ?: self::getSuggestion($funcs, $m[2])) { + $message = "Call to undefined function $m[2](), did you mean $hint()?"; + $replace = ["$m[2](", "$hint("]; + } } elseif (preg_match('#^Call to undefined method ([\w\\\\]+)::(\w+)#', $message, $m)) { - $hint = self::getSuggestion(get_class_methods($m[1]) ?: [], $m[2]); - $message .= ", did you mean $hint()?"; - $replace = ["$m[2](", "$hint("]; + if ($hint = self::getSuggestion(get_class_methods($m[1]) ?: [], $m[2])) { + $message .= ", did you mean $hint()?"; + $replace = ["$m[2](", "$hint("]; + } } elseif (preg_match('#^Undefined property: ([\w\\\\]+)::\$(\w+)#', $message, $m)) { $rc = new \ReflectionClass($m[1]); $items = array_filter($rc->getProperties(\ReflectionProperty::IS_PUBLIC), fn($prop) => !$prop->isStatic()); - $hint = self::getSuggestion($items, $m[2]); - $message .= ", did you mean $$hint?"; - $replace = ["->$m[2]", "->$hint"]; + if ($hint = self::getSuggestion($items, $m[2])) { + $message .= ", did you mean $$hint?"; + $replace = ["->$m[2]", "->$hint"]; + } } elseif (preg_match('#^Access to undeclared static property:? ([\w\\\\]+)::\$(\w+)#', $message, $m)) { $rc = new \ReflectionClass($m[1]); $items = array_filter($rc->getProperties(\ReflectionProperty::IS_STATIC), fn($prop) => $prop->isPublic()); - $hint = self::getSuggestion($items, $m[2]); - $message .= ", did you mean $$hint?"; - $replace = ["::$$m[2]", "::$$hint"]; + if ($hint = self::getSuggestion($items, $m[2])) { + $message .= ", did you mean $$hint?"; + $replace = ["::$$m[2]", "::$$hint"]; + } } - if (isset($hint)) { - $loc = Debugger::mapSource($e->getFile(), $e->getLine()) ?? ['file' => $e->getFile(), 'line' => $e->getLine()]; + if ($message !== $e->getMessage()) { $ref = new \ReflectionProperty($e, 'message'); $ref->setAccessible(true); $ref->setValue($e, $message); + } + + if (isset($replace)) { + $loc = Debugger::mapSource($e->getFile(), $e->getLine()) ?? ['file' => $e->getFile(), 'line' => $e->getLine()]; @$e->tracyAction = [ // dynamic properties are deprecated since PHP 8.2 'link' => self::editorUri($loc['file'], $loc['line'], 'fix', $replace[0], $replace[1]), 'label' => 'fix it', diff --git a/site/vendor/tracy/tracy/src/Tracy/assets/toggle.js b/site/vendor/tracy/tracy/src/Tracy/assets/toggle.js index 718aa7567..1406f33ef 100644 --- a/site/vendor/tracy/tracy/src/Tracy/assets/toggle.js +++ b/site/vendor/tracy/tracy/src/Tracy/assets/toggle.js @@ -89,7 +89,7 @@ class Toggle }); } - window.addEventListener('unload', () => { + window.addEventListener('pagehide', () => { toggles = saved.map((el) => { let item = {path: [], text: el.textContent, expand: !el.classList.contains('tracy-collapsed')}; do {