diff --git a/composer-dependency-analyser.php b/composer-dependency-analyser.php index 730b35e..a7801ad 100644 --- a/composer-dependency-analyser.php +++ b/composer-dependency-analyser.php @@ -21,6 +21,9 @@ if (version_compare(PHP_VERSION, '8.3.0', '>=')) { $config->ignoreErrorsOnPackage('symfony/polyfill-php83', [ErrorType::UNUSED_DEPENDENCY]); } +if (version_compare(PHP_VERSION, '8.4.0', '>=')) { + $config->ignoreErrorsOnPackage('symfony/polyfill-php84', [ErrorType::UNUSED_DEPENDENCY]); +} if (!class_exists(DataProvider::class)) { $config->ignoreUnknownClasses([DataProvider::class]); diff --git a/composer.json b/composer.json index f64fa16..d0d6bec 100644 --- a/composer.json +++ b/composer.json @@ -19,10 +19,10 @@ "symfony/form": "^5.4 || ^6.0 || ^7.0", "symfony/http-kernel": "^5.4 || ^6.0 || ^7.0", "symfony/options-resolver": "^5.4 || ^6.0 || ^7.0", - "symfony/polyfill-php83": "^1.27", + "symfony/polyfill-php83": "^1.33", + "symfony/polyfill-php84": "^1.33", "symfony/property-info": "^5.4 || ^6.0 || ^7.0", - "symfony/validator": "^5.4 || ^6.0 || ^7.0", - "webmozart/assert": "^1.10" + "symfony/validator": "^5.4 || ^6.0 || ^7.0" }, "require-dev": { "ergebnis/composer-normalize": "^2.42", diff --git a/src/Form/DataTransformer/CronExpressionToPartsTransformer.php b/src/Form/DataTransformer/CronExpressionToPartsTransformer.php index 8a0e4cd..9a87d29 100644 --- a/src/Form/DataTransformer/CronExpressionToPartsTransformer.php +++ b/src/Form/DataTransformer/CronExpressionToPartsTransformer.php @@ -7,7 +7,6 @@ use Cron\CronExpression; use Symfony\Component\Form\DataTransformerInterface; use Symfony\Component\Form\Exception\TransformationFailedException; -use Webmozart\Assert\Assert; /** * @template-implements DataTransformerInterface>> @@ -69,9 +68,7 @@ public function reverseTransform($value): CronExpression throw $exception; } - try { - Assert::allIsArray($value); - } catch (\InvalidArgumentException $e) { + if (!self::allArrayScalar($value)) { throw $exception; } @@ -90,14 +87,23 @@ public function reverseTransform($value): CronExpression } } + /** + * @psalm-assert array> $value + */ + private static function allArrayScalar(array $value): bool + { + return array_all($value, fn (mixed $s) => is_array($s) && array_all($s, fn (mixed $o) => is_scalar($o))); + } + + /** + * @param array $cronArray + */ private function convertCronParts(array $cronArray): string { if ([] === $cronArray) { return '*'; } - Assert::allScalar($cronArray); - return implode(',', $cronArray); } diff --git a/src/Form/DataTransformer/CronExpressionToStringPartsTransformer.php b/src/Form/DataTransformer/CronExpressionToStringPartsTransformer.php index 023c967..20605fe 100644 --- a/src/Form/DataTransformer/CronExpressionToStringPartsTransformer.php +++ b/src/Form/DataTransformer/CronExpressionToStringPartsTransformer.php @@ -7,7 +7,6 @@ use Cron\CronExpression; use Symfony\Component\Form\DataTransformerInterface; use Symfony\Component\Form\Exception\TransformationFailedException; -use Webmozart\Assert\Assert; /** * @template-implements DataTransformerInterface> @@ -69,9 +68,7 @@ public function reverseTransform($value): CronExpression throw $exception; } - try { - Assert::allString($value); - } catch (\InvalidArgumentException $e) { + if (!self::allString($value)) { throw $exception; } @@ -89,4 +86,12 @@ public function reverseTransform($value): CronExpression return $cronExpression; } + + /** + * @psalm-assert iterable $value + */ + private static function allString(array $value): bool + { + return array_all($value, fn (mixed $s) => is_string($s)); + } }