From 00f7e385d98f8b4ffbf781ef49d9899548c30fbf Mon Sep 17 00:00:00 2001 From: Robin Krahnen Date: Wed, 29 Apr 2020 15:34:23 +0200 Subject: [PATCH 01/35] require newer neos/flow --- composer.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/composer.json b/composer.json index 4651bb7..e3f142a 100644 --- a/composer.json +++ b/composer.json @@ -18,7 +18,7 @@ "validation" ], "require": { - "neos/flow": "~4.1|^5.3" + "neos/flow": "^6.1.5" }, "autoload": { "psr-4": { @@ -70,4 +70,4 @@ "Neos.Flow-20180415105700" ] } -} \ No newline at end of file +} From d30ed3310acf5cdbd6248f23a09e64fa589c4bee Mon Sep 17 00:00:00 2001 From: Robin Krahnen Date: Thu, 30 Apr 2020 08:19:57 +0200 Subject: [PATCH 02/35] remove deprecated parts --- Classes/Validation/Validator/SettingsValidator.php | 8 -------- 1 file changed, 8 deletions(-) diff --git a/Classes/Validation/Validator/SettingsValidator.php b/Classes/Validation/Validator/SettingsValidator.php index c79103d..215e2c9 100644 --- a/Classes/Validation/Validator/SettingsValidator.php +++ b/Classes/Validation/Validator/SettingsValidator.php @@ -14,7 +14,6 @@ namespace DigiComp\SettingValidator\Validation\Validator; use Neos\Flow\Annotations as Flow; use Neos\Flow\Configuration\ConfigurationManager; -use Neos\Flow\Reflection\ReflectionService; use Neos\Flow\Validation\Exception\InvalidValidationConfigurationException; use Neos\Flow\Validation\Exception\InvalidValidationOptionsException; use Neos\Flow\Validation\Validator\AbstractValidator; @@ -38,13 +37,6 @@ class SettingsValidator extends AbstractValidator */ protected $configurationManager; - /** - * @var ReflectionService - * @Flow\Inject - * @deprecated - */ - protected $reflectionService; - /** * @var array */ From 8b0e5640b9b3e702ac0aee3b2fd6f8a713d1b2ca Mon Sep 17 00:00:00 2001 From: Robin Krahnen Date: Mon, 4 May 2020 21:57:03 +0200 Subject: [PATCH 03/35] replace use getter instead of directly accessing no longer protected variable --- Classes/Validation/Validator/SettingsValidator.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Classes/Validation/Validator/SettingsValidator.php b/Classes/Validation/Validator/SettingsValidator.php index 215e2c9..0f4b430 100644 --- a/Classes/Validation/Validator/SettingsValidator.php +++ b/Classes/Validation/Validator/SettingsValidator.php @@ -107,11 +107,11 @@ class SettingsValidator extends AbstractValidator } if (isset($validatorConfig['property'])) { - $this->result->forProperty($validatorConfig['property'])->merge( + $this->getResult()->forProperty($validatorConfig['property'])->merge( $validator->validate(ObjectAccess::getPropertyPath($value, $validatorConfig['property'])) ); } else { - $this->result->merge($validator->validate($value)); + $this->getResult()->merge($validator->validate($value)); } } } From 08e6ad00d4cb36254c253aac14976bfa9eb0b40d Mon Sep 17 00:00:00 2001 From: Robin Krahnen Date: Mon, 4 May 2020 22:01:48 +0200 Subject: [PATCH 04/35] use existing constant for configuration type --- Classes/Validation/Validator/SettingsValidator.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Classes/Validation/Validator/SettingsValidator.php b/Classes/Validation/Validator/SettingsValidator.php index 0f4b430..9b2b5c8 100644 --- a/Classes/Validation/Validator/SettingsValidator.php +++ b/Classes/Validation/Validator/SettingsValidator.php @@ -12,6 +12,7 @@ namespace DigiComp\SettingValidator\Validation\Validator; * source code. */ +use DigiComp\SettingValidator\Package; use Neos\Flow\Annotations as Flow; use Neos\Flow\Configuration\ConfigurationManager; use Neos\Flow\Validation\Exception\InvalidValidationConfigurationException; @@ -61,7 +62,7 @@ class SettingsValidator extends AbstractValidator public function injectConfigurationManager(ConfigurationManager $configurationManager) { $this->configurationManager = $configurationManager; - $this->validations = $this->configurationManager->getConfiguration('Validation'); + $this->validations = $this->configurationManager->getConfiguration(Package::CONFIGURATION_TYPE_VALIDATION); } /** From 743ec61c449453f547731203c30084b32eb35cbd Mon Sep 17 00:00:00 2001 From: Robin Krahnen Date: Mon, 4 May 2020 22:02:12 +0200 Subject: [PATCH 05/35] simplify function handleValidationGroups --- Classes/Validation/Validator/SettingsValidator.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Classes/Validation/Validator/SettingsValidator.php b/Classes/Validation/Validator/SettingsValidator.php index 9b2b5c8..bba2457 100644 --- a/Classes/Validation/Validator/SettingsValidator.php +++ b/Classes/Validation/Validator/SettingsValidator.php @@ -172,10 +172,10 @@ class SettingsValidator extends AbstractValidator */ protected function handleValidationGroups(array &$validatorConfig) { - if (isset($validatorConfig['options']['validationGroups']) && $validatorConfig['validator'] !== 'DigiComp.SettingValidator:Settings') { - unset($validatorConfig['options']['validationGroups']); - } elseif ($validatorConfig['validator'] === 'DigiComp.SettingValidator:Settings') { + if ($validatorConfig['validator'] === 'DigiComp.SettingValidator:Settings') { $validatorConfig['options']['validationGroups'] = $this->options['validationGroups']; + } elseif (isset($validatorConfig['options']['validationGroups'])) { + unset($validatorConfig['options']['validationGroups']); } } } From 8cc705bd48cabe57a77e7ca7510de1106d99a075 Mon Sep 17 00:00:00 2001 From: Robin Krahnen Date: Mon, 4 May 2020 22:04:15 +0200 Subject: [PATCH 06/35] remove unnecessary references --- Classes/Validation/Validator/SettingsValidator.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Classes/Validation/Validator/SettingsValidator.php b/Classes/Validation/Validator/SettingsValidator.php index bba2457..7fcaded 100644 --- a/Classes/Validation/Validator/SettingsValidator.php +++ b/Classes/Validation/Validator/SettingsValidator.php @@ -136,7 +136,7 @@ class SettingsValidator extends AbstractValidator } if (isset($this->validations[$name]['properties'])) { foreach ($this->validations[$name]['properties'] as $propertyName => &$validation) { - foreach ($validation as $validator => &$options) { + foreach ($validation as $validator => $options) { if (is_null($options)) { continue; } @@ -156,7 +156,7 @@ class SettingsValidator extends AbstractValidator * @param array $validatorConfig * @return bool */ - protected function doesValidationGroupsMatch(array &$validatorConfig) + protected function doesValidationGroupsMatch(array $validatorConfig) { if (isset($validatorConfig['options']['validationGroups']) && empty(array_intersect($validatorConfig['options']['validationGroups'], $this->options['validationGroups']))) { return false; From f20c3ba090274921b6d9f53705a047200a014880 Mon Sep 17 00:00:00 2001 From: Robin Krahnen Date: Mon, 4 May 2020 22:05:16 +0200 Subject: [PATCH 07/35] added missing visibility to constant --- Classes/Package.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Classes/Package.php b/Classes/Package.php index 7f7f1b8..5a87b0f 100644 --- a/Classes/Package.php +++ b/Classes/Package.php @@ -21,7 +21,7 @@ use Neos\Flow\Package\Package as BasePackage; */ class Package extends BasePackage { - const CONFIGURATION_TYPE_VALIDATION = 'Validation'; + public const CONFIGURATION_TYPE_VALIDATION = 'Validation'; /** * @param Bootstrap $bootstrap From e141dbddee138c79362f8433d2f2be6bcd07393e Mon Sep 17 00:00:00 2001 From: Robin Krahnen Date: Mon, 4 May 2020 22:09:37 +0200 Subject: [PATCH 08/35] replaced static with self --- Classes/Package.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Classes/Package.php b/Classes/Package.php index 5a87b0f..87279d3 100644 --- a/Classes/Package.php +++ b/Classes/Package.php @@ -36,7 +36,7 @@ class Package extends BasePackage 'configurationManagerReady', function (ConfigurationManager $configurationManager) { $configurationManager->registerConfigurationType( - static::CONFIGURATION_TYPE_VALIDATION, + self::CONFIGURATION_TYPE_VALIDATION, ConfigurationManager::CONFIGURATION_PROCESSING_TYPE_DEFAULT, true ); From 8d76072227b70ff819c90b4f1e901e96fb44623b Mon Sep 17 00:00:00 2001 From: Robin Krahnen Date: Mon, 4 May 2020 22:10:46 +0200 Subject: [PATCH 09/35] remove unnecessary reference --- Classes/Validation/Validator/SettingsValidator.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Classes/Validation/Validator/SettingsValidator.php b/Classes/Validation/Validator/SettingsValidator.php index 7fcaded..7065744 100644 --- a/Classes/Validation/Validator/SettingsValidator.php +++ b/Classes/Validation/Validator/SettingsValidator.php @@ -135,7 +135,7 @@ class SettingsValidator extends AbstractValidator } } if (isset($this->validations[$name]['properties'])) { - foreach ($this->validations[$name]['properties'] as $propertyName => &$validation) { + foreach ($this->validations[$name]['properties'] as $propertyName => $validation) { foreach ($validation as $validator => $options) { if (is_null($options)) { continue; From 362b37b6d627628f58d9614eac3535925c60f6af Mon Sep 17 00:00:00 2001 From: Robin Krahnen Date: Mon, 4 May 2020 22:19:37 +0200 Subject: [PATCH 10/35] added property types --- Tests/Functional/Fixtures/TestObject.php | 6 +++--- .../Fixtures/TestValidationGroupsCustomObject.php | 4 ++-- .../Fixtures/TestValidationGroupsDefaultObject.php | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Tests/Functional/Fixtures/TestObject.php b/Tests/Functional/Fixtures/TestObject.php index 8686bbd..6f8e667 100644 --- a/Tests/Functional/Fixtures/TestObject.php +++ b/Tests/Functional/Fixtures/TestObject.php @@ -9,18 +9,18 @@ class TestObject /** * @var bool */ - protected $shouldBeTrue = true; + protected bool $shouldBeTrue = true; /** * @var bool */ - protected $shouldBeFalse = true; + protected bool $shouldBeFalse = true; /** * @Flow\Validate(type="DigiComp.SettingValidator:Settings", options={"name"="TrueValidator"}) * @var bool */ - protected $shouldBeTrueAndValidatedByAnnotation = false; + protected bool $shouldBeTrueAndValidatedByAnnotation = false; /** * @return bool diff --git a/Tests/Functional/Fixtures/TestValidationGroupsCustomObject.php b/Tests/Functional/Fixtures/TestValidationGroupsCustomObject.php index 82101ab..b671e00 100644 --- a/Tests/Functional/Fixtures/TestValidationGroupsCustomObject.php +++ b/Tests/Functional/Fixtures/TestValidationGroupsCustomObject.php @@ -7,12 +7,12 @@ class TestValidationGroupsCustomObject /** * @var bool */ - protected $shouldBeTrue = false; + protected bool $shouldBeTrue = false; /** * @var bool */ - protected $shouldBeFalse = true; + protected bool $shouldBeFalse = true; /** * @return bool diff --git a/Tests/Functional/Fixtures/TestValidationGroupsDefaultObject.php b/Tests/Functional/Fixtures/TestValidationGroupsDefaultObject.php index ef9f909..30261b2 100644 --- a/Tests/Functional/Fixtures/TestValidationGroupsDefaultObject.php +++ b/Tests/Functional/Fixtures/TestValidationGroupsDefaultObject.php @@ -7,12 +7,12 @@ class TestValidationGroupsDefaultObject /** * @var bool */ - protected $shouldBeTrue = false; + protected bool $shouldBeTrue = false; /** * @var bool */ - protected $shouldBeFalse = true; + protected bool $shouldBeFalse = true; /** * @return bool From 72904639a4bedbcb4b820e2c038e3579279bf534 Mon Sep 17 00:00:00 2001 From: Robin Krahnen Date: Mon, 4 May 2020 22:23:54 +0200 Subject: [PATCH 11/35] reformat code --- .../Validator/SettingsValidator.php | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/Classes/Validation/Validator/SettingsValidator.php b/Classes/Validation/Validator/SettingsValidator.php index 7065744..773123d 100644 --- a/Classes/Validation/Validator/SettingsValidator.php +++ b/Classes/Validation/Validator/SettingsValidator.php @@ -47,7 +47,7 @@ class SettingsValidator extends AbstractValidator ['Default'], 'Same as "Validation Groups" of Flow Framework. Defines the groups to execute.', 'array', - false + false, ], ]; @@ -76,7 +76,7 @@ class SettingsValidator extends AbstractValidator protected function isValid($value) { $name = $this->options['name'] ? $this->options['name'] : TypeHandling::getTypeForValue($value); - if (! isset($this->validations[$name])) { + if (!isset($this->validations[$name])) { throw new InvalidValidationOptionsException( 'The name ' . $name . ' has not been defined in Validation.yaml!', 1397821438 @@ -86,7 +86,7 @@ class SettingsValidator extends AbstractValidator $config = $this->getConfigForName($name); foreach ($config as $validatorConfig) { - if (! $this->doesValidationGroupsMatch($validatorConfig)) { + if (!$this->doesValidationGroupsMatch($validatorConfig)) { continue; } @@ -97,7 +97,7 @@ class SettingsValidator extends AbstractValidator $validatorConfig['options'] ); - if (! $validator) { + if (!$validator) { throw new InvalidValidationConfigurationException( sprintf( 'Validator could not be resolved: "%s" Check your Validation.yaml', @@ -147,6 +147,7 @@ class SettingsValidator extends AbstractValidator } } } + return $config; } @@ -158,7 +159,15 @@ class SettingsValidator extends AbstractValidator */ protected function doesValidationGroupsMatch(array $validatorConfig) { - if (isset($validatorConfig['options']['validationGroups']) && empty(array_intersect($validatorConfig['options']['validationGroups'], $this->options['validationGroups']))) { + if ( + isset($validatorConfig['options']['validationGroups']) + && empty( + array_intersect( + $validatorConfig['options']['validationGroups'], + $this->options['validationGroups'] + ) + ) + ) { return false; } From e4abe5a96c653debcaad1efdb82d63c19799bcff Mon Sep 17 00:00:00 2001 From: Robin Krahnen Date: Mon, 4 May 2020 22:26:58 +0200 Subject: [PATCH 12/35] reformat code --- Migrations/Code/Version20170603120900.php | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/Migrations/Code/Version20170603120900.php b/Migrations/Code/Version20170603120900.php index 4df7e83..53f5763 100644 --- a/Migrations/Code/Version20170603120900.php +++ b/Migrations/Code/Version20170603120900.php @@ -33,9 +33,11 @@ class Version20170603120900 extends AbstractMigration $newConfiguration = ['properties' => [], 'self' => []]; foreach ($validators as $key => &$validator) { - if (! isset($validator['validator']) || ! isset($validator['options'])) { - $this->showWarning('The Validation.yaml files contained no validator or options for ' . - 'validation: "' . $validatorName . '.' . $key . '". It was not migrated.'); + if (!isset($validator['validator']) || !isset($validator['options'])) { + $this->showWarning( + 'The Validation.yaml files contained no validator or options for validation: ' . + '"' . $validatorName . '.' . $key . '". It was not migrated.' + ); continue; } if (isset($validator['property'])) { From 272f78f96e51f00993ace38f320c4d4a2c9d8781 Mon Sep 17 00:00:00 2001 From: Robin Krahnen Date: Mon, 4 May 2020 23:05:55 +0200 Subject: [PATCH 13/35] optimize code --- .../Validator/SettingsValidator.php | 83 ++++++++----------- 1 file changed, 33 insertions(+), 50 deletions(-) diff --git a/Classes/Validation/Validator/SettingsValidator.php b/Classes/Validation/Validator/SettingsValidator.php index 773123d..4b927b7 100644 --- a/Classes/Validation/Validator/SettingsValidator.php +++ b/Classes/Validation/Validator/SettingsValidator.php @@ -28,12 +28,13 @@ use Neos\Utility\TypeHandling; class SettingsValidator extends AbstractValidator { /** - * @var ValidatorResolver * @Flow\Inject + * @var ValidatorResolver */ protected $validatorResolver; /** + * @Flow\Inject * @var ConfigurationManager */ protected $configurationManager; @@ -42,7 +43,7 @@ class SettingsValidator extends AbstractValidator * @var array */ protected $supportedOptions = [ - 'name' => ['', 'Set the name of the setting-array to use', 'string', false], + 'name' => ['', 'Set the name of the setting-array to use.', 'string', false], 'validationGroups' => [ ['Default'], 'Same as "Validation Groups" of Flow Framework. Defines the groups to execute.', @@ -52,40 +53,22 @@ class SettingsValidator extends AbstractValidator ]; /** - * @var array - */ - protected $validations; - - /** - * @param ConfigurationManager $configurationManager - */ - public function injectConfigurationManager(ConfigurationManager $configurationManager) - { - $this->configurationManager = $configurationManager; - $this->validations = $this->configurationManager->getConfiguration(Package::CONFIGURATION_TYPE_VALIDATION); - } - - /** - * Check if $value is valid. If it is not valid, needs to add an error - * to Result. - * - * @param mixed $value + * @inheritDoc * @throws InvalidValidationOptionsException * @throws InvalidValidationConfigurationException */ protected function isValid($value) { - $name = $this->options['name'] ? $this->options['name'] : TypeHandling::getTypeForValue($value); - if (!isset($this->validations[$name])) { + $validations = $this->configurationManager->getConfiguration(Package::CONFIGURATION_TYPE_VALIDATION); + $name = $this->options['name'] ?: TypeHandling::getTypeForValue($value); + if (!isset($validations[$name])) { throw new InvalidValidationOptionsException( - 'The name ' . $name . ' has not been defined in Validation.yaml!', + 'The name "' . $name . '" has not been defined in Validation.yaml!', 1397821438 ); } - $config = $this->getConfigForName($name); - - foreach ($config as $validatorConfig) { + foreach ($this->getConfigForValidation($validations[$name]) as $validatorConfig) { if (!$this->doesValidationGroupsMatch($validatorConfig)) { continue; } @@ -118,32 +101,36 @@ class SettingsValidator extends AbstractValidator } /** - * @param string $name + * @param array $validation * @return array */ - protected function getConfigForName($name): array + protected function getConfigForValidation(array $validation): array { $config = []; - if (isset($this->validations[$name]['self'])) { - foreach ($this->validations[$name]['self'] as $validator => &$validation) { - if (is_null($validation)) { + + if (isset($validation['self'])) { + foreach ($validation['self'] as $validator => $options) { + if (is_null($options)) { continue; } - $newValidation['options'] = $validation; - $newValidation['validator'] = $validator; - $config[] = $newValidation; + $config[] = [ + 'validator' => $validator, + 'options' => $options, + ]; } } - if (isset($this->validations[$name]['properties'])) { - foreach ($this->validations[$name]['properties'] as $propertyName => $validation) { - foreach ($validation as $validator => $options) { + + if (isset($validation['properties'])) { + foreach ($validation['properties'] as $property => $propertyValidation) { + foreach ($propertyValidation as $validator => $options) { if (is_null($options)) { continue; } - $newValidation['property'] = $propertyName; - $newValidation['validator'] = $validator; - $newValidation['options'] = $options; - $config[] = $newValidation; + $config[] = [ + 'property' => $property, + 'validator' => $validator, + 'options' => $options, + ]; } } } @@ -157,21 +144,17 @@ class SettingsValidator extends AbstractValidator * @param array $validatorConfig * @return bool */ - protected function doesValidationGroupsMatch(array $validatorConfig) + protected function doesValidationGroupsMatch(array $validatorConfig): bool { - if ( - isset($validatorConfig['options']['validationGroups']) - && empty( + return + !isset($validatorConfig['options']['validationGroups']) + || !empty( array_intersect( $validatorConfig['options']['validationGroups'], $this->options['validationGroups'] ) ) - ) { - return false; - } - - return true; + ; } /** From c6e23fdf35703c58d971dfe2ae430318d0d47a4e Mon Sep 17 00:00:00 2001 From: Robin Krahnen Date: Mon, 4 May 2020 23:07:52 +0200 Subject: [PATCH 14/35] code guideline --- Classes/Validation/Validator/SettingsValidator.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Classes/Validation/Validator/SettingsValidator.php b/Classes/Validation/Validator/SettingsValidator.php index 4b927b7..19a6ac3 100644 --- a/Classes/Validation/Validator/SettingsValidator.php +++ b/Classes/Validation/Validator/SettingsValidator.php @@ -82,7 +82,7 @@ class SettingsValidator extends AbstractValidator if (!$validator) { throw new InvalidValidationConfigurationException( - sprintf( + \sprintf( 'Validator could not be resolved: "%s" Check your Validation.yaml', $validatorConfig['validator'] ), @@ -110,7 +110,7 @@ class SettingsValidator extends AbstractValidator if (isset($validation['self'])) { foreach ($validation['self'] as $validator => $options) { - if (is_null($options)) { + if ($options === null) { continue; } $config[] = [ @@ -123,7 +123,7 @@ class SettingsValidator extends AbstractValidator if (isset($validation['properties'])) { foreach ($validation['properties'] as $property => $propertyValidation) { foreach ($propertyValidation as $validator => $options) { - if (is_null($options)) { + if ($options === null) { continue; } $config[] = [ @@ -149,7 +149,7 @@ class SettingsValidator extends AbstractValidator return !isset($validatorConfig['options']['validationGroups']) || !empty( - array_intersect( + \array_intersect( $validatorConfig['options']['validationGroups'], $this->options['validationGroups'] ) From 000c301d25e08c73ded9297a0d223dc52068b5b5 Mon Sep 17 00:00:00 2001 From: Robin Krahnen Date: Mon, 4 May 2020 23:13:06 +0200 Subject: [PATCH 15/35] remove .gitignore --- .gitignore | 1 - 1 file changed, 1 deletion(-) delete mode 100644 .gitignore diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 90ec22b..0000000 --- a/.gitignore +++ /dev/null @@ -1 +0,0 @@ -.svn From a81c1bfe354dddf91b6680258365b4efca3e210e Mon Sep 17 00:00:00 2001 From: Robin Krahnen Date: Mon, 4 May 2020 23:27:47 +0200 Subject: [PATCH 16/35] update README.md --- README.md | 47 +++++++++++++++++++++-------------------------- 1 file changed, 21 insertions(+), 26 deletions(-) diff --git a/README.md b/README.md index d4274f4..0c7421f 100644 --- a/README.md +++ b/README.md @@ -1,44 +1,39 @@ DigiComp.SettingValidator ------------------------- - -This Package allows to configure Validators for your Action-Arguments or domain model properties to be set by a new +This Package allows configuring Validators for your Action-Arguments or domain model properties to be set by a new Yaml-File in your Configuration directory. -Lets imagine you had this action-method: +Let's imagine you had this action-method: /** + * @Flow\Validate(type="DigiComp.SettingValidator:Settings", argumentName="order") * @param Order $order - * @Flow\Validate(type="DigiComp.SettingValidator:Settings") */ public function createOrder($order) {...} Then your Validation.yaml could look like this: - SuperVendor\SuperPackage\Domain\Model\Order: - - - property: price - validator: NumberRange - options: - maximum: 20 - minimum: 10 - - - validator: SuperVendor.SuperPackage:SomeOtherValidator #validates the complete object - options: [] - - - property: customer - validator: DigiComp.SettingValidator:Settings - options: - name: OrderCustomer + Vendor\Package\Domain\Model\Order: + # validates the complete object + self: + 'Vendor.Package:SomeOtherValidator': [] + # validates properties of the object + properties: + price: + NumberRange: + maximum: 20 + minimum: 10 + customer: + 'DigiComp.SettingValidator:Settings': + name: 'OrderCustomer' OrderCustomer: - - - property: firstName - validator: StringLength - options: - minimum: 3 - maximum: 20 - + properties: + firstName: + StringLength: + minimum: 3 + maximum: 20 As you see: Nesting is possible ;) That way you can easily construct flexible structures. From f33647559a9aec9597a89bc3254bd5537d4408f4 Mon Sep 17 00:00:00 2001 From: Robin Krahnen Date: Wed, 13 May 2020 09:47:41 +0200 Subject: [PATCH 17/35] optimized condition --- Classes/Validation/Validator/SettingsValidator.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Classes/Validation/Validator/SettingsValidator.php b/Classes/Validation/Validator/SettingsValidator.php index 19a6ac3..ec14fd1 100644 --- a/Classes/Validation/Validator/SettingsValidator.php +++ b/Classes/Validation/Validator/SettingsValidator.php @@ -80,7 +80,7 @@ class SettingsValidator extends AbstractValidator $validatorConfig['options'] ); - if (!$validator) { + if ($validator === null) { throw new InvalidValidationConfigurationException( \sprintf( 'Validator could not be resolved: "%s" Check your Validation.yaml', From 8eea5e9b1547a28d62219dccda7a5a5044435aca Mon Sep 17 00:00:00 2001 From: Robin Krahnen Date: Wed, 13 May 2020 09:48:43 +0200 Subject: [PATCH 18/35] optimize error message --- Classes/Validation/Validator/SettingsValidator.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Classes/Validation/Validator/SettingsValidator.php b/Classes/Validation/Validator/SettingsValidator.php index ec14fd1..fcc4d78 100644 --- a/Classes/Validation/Validator/SettingsValidator.php +++ b/Classes/Validation/Validator/SettingsValidator.php @@ -83,7 +83,7 @@ class SettingsValidator extends AbstractValidator if ($validator === null) { throw new InvalidValidationConfigurationException( \sprintf( - 'Validator could not be resolved: "%s" Check your Validation.yaml', + 'Validator "%s" could not be resolved. Check your Validation.yaml', $validatorConfig['validator'] ), 1402326139 From 8f6fbf9058ea1afca39f0d2fc9d5e3eebede8b57 Mon Sep 17 00:00:00 2001 From: Robin Krahnen Date: Wed, 13 May 2020 10:05:30 +0200 Subject: [PATCH 19/35] use neos/flow ^6.2 and php ~7.4.0 --- composer.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/composer.json b/composer.json index e3f142a..81b9f10 100644 --- a/composer.json +++ b/composer.json @@ -18,7 +18,8 @@ "validation" ], "require": { - "neos/flow": "^6.1.5" + "neos/flow": "^6.2", + "php": "~7.4.0" }, "autoload": { "psr-4": { From bb8ec70593c898b9cbc5ac9de6e11947ad557476 Mon Sep 17 00:00:00 2001 From: Robin Krahnen Date: Wed, 13 May 2020 10:19:26 +0200 Subject: [PATCH 20/35] added neos package key --- composer.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/composer.json b/composer.json index 81b9f10..33923bd 100644 --- a/composer.json +++ b/composer.json @@ -32,6 +32,9 @@ } }, "extra": { + "neos": { + "package-key": "DigiComp.SettingValidator" + }, "branch-alias": { "dev-develop": "2.0.x-dev", "dev-version/1.x-dev": "1.0.x-dev" From c6e7d549c13574fd5d666e959c202264c70747dc Mon Sep 17 00:00:00 2001 From: Robin Krahnen Date: Wed, 13 May 2020 10:20:20 +0200 Subject: [PATCH 21/35] reorder lines --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 33923bd..0c31e5c 100644 --- a/composer.json +++ b/composer.json @@ -1,7 +1,7 @@ { "name": "digicomp/settingvalidator", - "type": "neos-package", "description": "Just a Neos\\Flow Validator resolving other Validators with Configuration/Validation.yaml", + "type": "neos-package", "authors": [ { "name": "Ferdinand Kuhl", From ca1ec5707f990ddebcd785e2da7a3bd011db7001 Mon Sep 17 00:00:00 2001 From: Robin Krahnen Date: Thu, 14 May 2020 14:43:09 +0200 Subject: [PATCH 22/35] added missing @throws --- Tests/Functional/SettingsValidatorTest.php | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Tests/Functional/SettingsValidatorTest.php b/Tests/Functional/SettingsValidatorTest.php index c16a48b..ce6231a 100644 --- a/Tests/Functional/SettingsValidatorTest.php +++ b/Tests/Functional/SettingsValidatorTest.php @@ -7,12 +7,16 @@ use DigiComp\SettingValidator\Tests\Functional\Fixtures\TestValidationGroupsCust use DigiComp\SettingValidator\Tests\Functional\Fixtures\TestValidationGroupsDefaultObject; use DigiComp\SettingValidator\Validation\Validator\SettingsValidator; use Neos\Flow\Tests\FunctionalTestCase; +use Neos\Flow\Validation\Exception\InvalidValidationConfigurationException; +use Neos\Flow\Validation\Exception\InvalidValidationOptionsException; +use Neos\Flow\Validation\Exception\NoSuchValidatorException; use Neos\Flow\Validation\ValidatorResolver; class SettingsValidatorTest extends FunctionalTestCase { /** * @test + * @throws InvalidValidationOptionsException */ public function ifNoNameIsGivenClassNameIsUsed() { @@ -25,6 +29,9 @@ class SettingsValidatorTest extends FunctionalTestCase /** * @test + * @throws InvalidValidationConfigurationException + * @throws InvalidValidationOptionsException + * @throws NoSuchValidatorException */ public function conjunctionValidationWorksAsExpected() { @@ -37,6 +44,7 @@ class SettingsValidatorTest extends FunctionalTestCase /** * @test + * @throws InvalidValidationOptionsException */ public function defaultValidationGroupWorks() { @@ -49,6 +57,7 @@ class SettingsValidatorTest extends FunctionalTestCase /** * @test + * @throws InvalidValidationOptionsException */ public function customValidationGroupWorks() { From 0de085c5cf083c7a6d3bb05b5b08fceaa9c425f6 Mon Sep 17 00:00:00 2001 From: Robin Krahnen Date: Thu, 14 May 2020 14:43:25 +0200 Subject: [PATCH 23/35] optimized migration --- Migrations/Code/Version20170603120900.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Migrations/Code/Version20170603120900.php b/Migrations/Code/Version20170603120900.php index 53f5763..cf0d5c1 100644 --- a/Migrations/Code/Version20170603120900.php +++ b/Migrations/Code/Version20170603120900.php @@ -5,7 +5,7 @@ namespace Neos\Flow\Core\Migrations; use DigiComp\SettingValidator\Package; /** - * Restructures Validation.yamls to new format + * Restructures all Validation.yaml to new format */ class Version20170603120900 extends AbstractMigration { @@ -32,7 +32,7 @@ class Version20170603120900 extends AbstractMigration } $newConfiguration = ['properties' => [], 'self' => []]; - foreach ($validators as $key => &$validator) { + foreach ($validators as $key => $validator) { if (!isset($validator['validator']) || !isset($validator['options'])) { $this->showWarning( 'The Validation.yaml files contained no validator or options for validation: ' . From 8c9790b662c1339890057e2792827271e3b03f61 Mon Sep 17 00:00:00 2001 From: Robin Krahnen Date: Thu, 14 May 2020 14:43:48 +0200 Subject: [PATCH 24/35] optimized code --- Classes/Validation/Validator/SettingsValidator.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Classes/Validation/Validator/SettingsValidator.php b/Classes/Validation/Validator/SettingsValidator.php index fcc4d78..6c0acc6 100644 --- a/Classes/Validation/Validator/SettingsValidator.php +++ b/Classes/Validation/Validator/SettingsValidator.php @@ -15,8 +15,10 @@ namespace DigiComp\SettingValidator\Validation\Validator; use DigiComp\SettingValidator\Package; use Neos\Flow\Annotations as Flow; use Neos\Flow\Configuration\ConfigurationManager; +use Neos\Flow\Configuration\Exception\InvalidConfigurationTypeException; use Neos\Flow\Validation\Exception\InvalidValidationConfigurationException; use Neos\Flow\Validation\Exception\InvalidValidationOptionsException; +use Neos\Flow\Validation\Exception\NoSuchValidatorException; use Neos\Flow\Validation\Validator\AbstractValidator; use Neos\Flow\Validation\ValidatorResolver; use Neos\Utility\ObjectAccess; @@ -42,7 +44,7 @@ class SettingsValidator extends AbstractValidator /** * @var array */ - protected $supportedOptions = [ + protected array $supportedOptions = [ 'name' => ['', 'Set the name of the setting-array to use.', 'string', false], 'validationGroups' => [ ['Default'], @@ -54,8 +56,10 @@ class SettingsValidator extends AbstractValidator /** * @inheritDoc + * @throws InvalidConfigurationTypeException * @throws InvalidValidationOptionsException * @throws InvalidValidationConfigurationException + * @throws NoSuchValidatorException */ protected function isValid($value) { From efdb8560a1edfca0b44e2108b28c677f09ea9283 Mon Sep 17 00:00:00 2001 From: Robin Krahnen Date: Thu, 14 May 2020 14:47:33 +0200 Subject: [PATCH 25/35] reorder attributes --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0c7421f..49a880a 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ Yaml-File in your Configuration directory. Let's imagine you had this action-method: /** - * @Flow\Validate(type="DigiComp.SettingValidator:Settings", argumentName="order") + * @Flow\Validate(argumentName="order", type="DigiComp.SettingValidator:Settings") * @param Order $order */ public function createOrder($order) {...} From e311c202bcb9b0980287a6acd36bdbc1f1ee5727 Mon Sep 17 00:00:00 2001 From: Robin Krahnen Date: Wed, 22 Jul 2020 17:22:46 +0200 Subject: [PATCH 26/35] update to newest standard --- Classes/Package.php | 14 ++---- .../Validator/SettingsValidator.php | 46 ++++++++----------- Migrations/Code/Version20170603120900.php | 11 ++--- README.md | 3 +- Tests/Functional/SettingsValidatorTest.php | 8 ++-- composer.json | 2 +- 6 files changed, 32 insertions(+), 52 deletions(-) diff --git a/Classes/Package.php b/Classes/Package.php index 87279d3..cd71a3c 100644 --- a/Classes/Package.php +++ b/Classes/Package.php @@ -14,19 +14,17 @@ namespace DigiComp\SettingValidator; use Neos\Flow\Configuration\ConfigurationManager; use Neos\Flow\Core\Bootstrap; -use Neos\Flow\Package\Package as BasePackage; +use Neos\Flow\Package\Package as NeosFlowPackagePackage; /** * Package base class of the DigiComp.SettingValidator package. */ -class Package extends BasePackage +class Package extends NeosFlowPackagePackage { - public const CONFIGURATION_TYPE_VALIDATION = 'Validation'; - /** * @param Bootstrap $bootstrap */ - public function boot(Bootstrap $bootstrap) + public function boot(Bootstrap $bootstrap): void { parent::boot($bootstrap); @@ -35,11 +33,7 @@ class Package extends BasePackage ConfigurationManager::class, 'configurationManagerReady', function (ConfigurationManager $configurationManager) { - $configurationManager->registerConfigurationType( - self::CONFIGURATION_TYPE_VALIDATION, - ConfigurationManager::CONFIGURATION_PROCESSING_TYPE_DEFAULT, - true - ); + $configurationManager->registerConfigurationType('Validation'); } ); } diff --git a/Classes/Validation/Validator/SettingsValidator.php b/Classes/Validation/Validator/SettingsValidator.php index 6c0acc6..0cdd08c 100644 --- a/Classes/Validation/Validator/SettingsValidator.php +++ b/Classes/Validation/Validator/SettingsValidator.php @@ -12,10 +12,7 @@ namespace DigiComp\SettingValidator\Validation\Validator; * source code. */ -use DigiComp\SettingValidator\Package; use Neos\Flow\Annotations as Flow; -use Neos\Flow\Configuration\ConfigurationManager; -use Neos\Flow\Configuration\Exception\InvalidConfigurationTypeException; use Neos\Flow\Validation\Exception\InvalidValidationConfigurationException; use Neos\Flow\Validation\Exception\InvalidValidationOptionsException; use Neos\Flow\Validation\Exception\NoSuchValidatorException; @@ -36,35 +33,30 @@ class SettingsValidator extends AbstractValidator protected $validatorResolver; /** - * @Flow\Inject - * @var ConfigurationManager - */ - protected $configurationManager; - - /** + * @Flow\InjectConfiguration(type="Validation") * @var array */ - protected array $supportedOptions = [ - 'name' => ['', 'Set the name of the setting-array to use.', 'string', false], - 'validationGroups' => [ - ['Default'], - 'Same as "Validation Groups" of Flow Framework. Defines the groups to execute.', - 'array', - false, - ], + protected array $validations; + + /** + * @inheritDoc + */ + protected $supportedOptions = [ + 'name' => ['', 'Name of the setting array to use', 'string'], + 'validationGroups' => [['Default'], 'Same as "Validation Groups" of Flow Framework', 'array'], ]; /** * @inheritDoc - * @throws InvalidConfigurationTypeException * @throws InvalidValidationOptionsException * @throws InvalidValidationConfigurationException * @throws NoSuchValidatorException */ - protected function isValid($value) + protected function isValid($value): void { - $validations = $this->configurationManager->getConfiguration(Package::CONFIGURATION_TYPE_VALIDATION); - $name = $this->options['name'] ?: TypeHandling::getTypeForValue($value); + $validations = $this->validations; + + $name = $this->options['name'] !== '' ? $this->options['name'] : TypeHandling::getTypeForValue($value); if (!isset($validations[$name])) { throw new InvalidValidationOptionsException( 'The name "' . $name . '" has not been defined in Validation.yaml!', @@ -152,12 +144,10 @@ class SettingsValidator extends AbstractValidator { return !isset($validatorConfig['options']['validationGroups']) - || !empty( - \array_intersect( - $validatorConfig['options']['validationGroups'], - $this->options['validationGroups'] - ) - ) + || \array_intersect( + $validatorConfig['options']['validationGroups'], + $this->options['validationGroups'] + ) !== [] ; } @@ -166,7 +156,7 @@ class SettingsValidator extends AbstractValidator * * @param array $validatorConfig */ - protected function handleValidationGroups(array &$validatorConfig) + protected function handleValidationGroups(array &$validatorConfig): void { if ($validatorConfig['validator'] === 'DigiComp.SettingValidator:Settings') { $validatorConfig['options']['validationGroups'] = $this->options['validationGroups']; diff --git a/Migrations/Code/Version20170603120900.php b/Migrations/Code/Version20170603120900.php index cf0d5c1..855ee6b 100644 --- a/Migrations/Code/Version20170603120900.php +++ b/Migrations/Code/Version20170603120900.php @@ -12,19 +12,16 @@ class Version20170603120900 extends AbstractMigration /** * @return string */ - public function getIdentifier() + public function getIdentifier(): string { return 'DigiComp.SettingValidator-20170603120900'; } - /** - * @return void - */ - public function up() + public function up(): void { $this->processConfiguration( - Package::CONFIGURATION_TYPE_VALIDATION, - function (&$configuration) { + 'Validation', + function (array &$configuration) { foreach ($configuration as $validatorName => &$validators) { // guard that protects configuration, which has already the new format: if (isset($validators['properties']) || isset($validators['self'])) { diff --git a/README.md b/README.md index 49a880a..fc438b7 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,4 @@ -DigiComp.SettingValidator -------------------------- +# DigiComp.SettingValidator This Package allows configuring Validators for your Action-Arguments or domain model properties to be set by a new Yaml-File in your Configuration directory. diff --git a/Tests/Functional/SettingsValidatorTest.php b/Tests/Functional/SettingsValidatorTest.php index ce6231a..305b515 100644 --- a/Tests/Functional/SettingsValidatorTest.php +++ b/Tests/Functional/SettingsValidatorTest.php @@ -18,7 +18,7 @@ class SettingsValidatorTest extends FunctionalTestCase * @test * @throws InvalidValidationOptionsException */ - public function ifNoNameIsGivenClassNameIsUsed() + public function ifNoNameIsGivenClassNameIsUsed(): void { $validator = $this->objectManager->get(SettingsValidator::class); $result = $validator->validate(new TestObject()); @@ -33,7 +33,7 @@ class SettingsValidatorTest extends FunctionalTestCase * @throws InvalidValidationOptionsException * @throws NoSuchValidatorException */ - public function conjunctionValidationWorksAsExpected() + public function conjunctionValidationWorksAsExpected(): void { $validatorResolver = $this->objectManager->get(ValidatorResolver::class); $validator = $validatorResolver->getBaseValidatorConjunction(TestObject::class); @@ -46,7 +46,7 @@ class SettingsValidatorTest extends FunctionalTestCase * @test * @throws InvalidValidationOptionsException */ - public function defaultValidationGroupWorks() + public function defaultValidationGroupWorks(): void { $validator = $this->objectManager->get(SettingsValidator::class, ['validationGroups' => ['Default']]); $result = $validator->validate(new TestValidationGroupsDefaultObject()); @@ -59,7 +59,7 @@ class SettingsValidatorTest extends FunctionalTestCase * @test * @throws InvalidValidationOptionsException */ - public function customValidationGroupWorks() + public function customValidationGroupWorks(): void { $validator = $this->objectManager->get(SettingsValidator::class, ['validationGroups' => ['Custom']]); $result = $validator->validate(new TestValidationGroupsCustomObject()); diff --git a/composer.json b/composer.json index 0c31e5c..22a6d9e 100644 --- a/composer.json +++ b/composer.json @@ -18,7 +18,7 @@ "validation" ], "require": { - "neos/flow": "^6.2", + "neos/flow": "^6.2.2", "php": "~7.4.0" }, "autoload": { From 651f5815a445ef15b8d280ddd819b3374aa46997 Mon Sep 17 00:00:00 2001 From: Robin Krahnen Date: Mon, 10 Aug 2020 13:47:28 +0200 Subject: [PATCH 27/35] remove unused import --- Migrations/Code/Version20170603120900.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/Migrations/Code/Version20170603120900.php b/Migrations/Code/Version20170603120900.php index 855ee6b..ff218d9 100644 --- a/Migrations/Code/Version20170603120900.php +++ b/Migrations/Code/Version20170603120900.php @@ -2,8 +2,6 @@ namespace Neos\Flow\Core\Migrations; -use DigiComp\SettingValidator\Package; - /** * Restructures all Validation.yaml to new format */ From 937e74671cc1e9e7028656b6e54acc225a20a6d3 Mon Sep 17 00:00:00 2001 From: Robin Krahnen Date: Wed, 19 Aug 2020 13:56:55 +0200 Subject: [PATCH 28/35] code style --- Classes/Validation/Validator/SettingsValidator.php | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/Classes/Validation/Validator/SettingsValidator.php b/Classes/Validation/Validator/SettingsValidator.php index 0cdd08c..8b825d8 100644 --- a/Classes/Validation/Validator/SettingsValidator.php +++ b/Classes/Validation/Validator/SettingsValidator.php @@ -142,13 +142,11 @@ class SettingsValidator extends AbstractValidator */ protected function doesValidationGroupsMatch(array $validatorConfig): bool { - return - !isset($validatorConfig['options']['validationGroups']) + return !isset($validatorConfig['options']['validationGroups']) || \array_intersect( $validatorConfig['options']['validationGroups'], $this->options['validationGroups'] - ) !== [] - ; + ) !== []; } /** From 5ab10855907421a1344655416033b6e69113d080 Mon Sep 17 00:00:00 2001 From: Robin Krahnen Date: Fri, 28 Aug 2020 11:06:06 +0200 Subject: [PATCH 29/35] update required version of neos/flow --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 22a6d9e..8436107 100644 --- a/composer.json +++ b/composer.json @@ -18,7 +18,7 @@ "validation" ], "require": { - "neos/flow": "^6.2.2", + "neos/flow": "^6.2.3", "php": "~7.4.0" }, "autoload": { From 5437fb29bdc1a726eb953a88e916bde860cad9ca Mon Sep 17 00:00:00 2001 From: Robin Krahnen Date: Fri, 28 Aug 2020 11:22:40 +0200 Subject: [PATCH 30/35] TASK: Apply migration Neos.Flow-20190425144900 Adjusts code to FlashMessageContainer renaming from "\Neos\Flow\Mvc" to "\Neos\Flow\Mvc\FlashMessage". Note: This migration did not produce any changes, so the commit simply marks the migration as applied. This makes sure it will not be applied again. --- composer.json | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/composer.json b/composer.json index 8436107..a4e61db 100644 --- a/composer.json +++ b/composer.json @@ -71,7 +71,8 @@ "Neos.Flow-20170125103800", "Neos.Flow-20170127183102", "DigiComp.SettingValidator-20170603120900", - "Neos.Flow-20180415105700" + "Neos.Flow-20180415105700", + "Neos.Flow-20190425144900" ] } -} +} \ No newline at end of file From 1775021854f8d354c3e8b470291045b9e163598b Mon Sep 17 00:00:00 2001 From: Robin Krahnen Date: Fri, 28 Aug 2020 11:22:41 +0200 Subject: [PATCH 31/35] TASK: Apply migration Neos.Flow-20190515215000 Adjust "Settings.yaml" to new PSR-3 logging settings (see https://github.com/neos/flow-development-collection/pull/1574) Note: This migration did not produce any changes, so the commit simply marks the migration as applied. This makes sure it will not be applied again. --- composer.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/composer.json b/composer.json index a4e61db..ef4368e 100644 --- a/composer.json +++ b/composer.json @@ -72,7 +72,8 @@ "Neos.Flow-20170127183102", "DigiComp.SettingValidator-20170603120900", "Neos.Flow-20180415105700", - "Neos.Flow-20190425144900" + "Neos.Flow-20190425144900", + "Neos.Flow-20190515215000" ] } } \ No newline at end of file From 42cefc7ced91658e431dba6efbeabdd0c05b74c1 Mon Sep 17 00:00:00 2001 From: Robin Krahnen Date: Fri, 28 Aug 2020 14:52:30 +0200 Subject: [PATCH 32/35] added branch aliases --- composer.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/composer.json b/composer.json index ef4368e..ffcab3c 100644 --- a/composer.json +++ b/composer.json @@ -36,8 +36,8 @@ "package-key": "DigiComp.SettingValidator" }, "branch-alias": { - "dev-develop": "2.0.x-dev", - "dev-version/1.x-dev": "1.0.x-dev" + "dev-develop": "3.0.x-dev", + "dev-version/1.x-dev": "1.1.x-dev" }, "applied-flow-migrations": [ "Inwebs.Basket-201409170938", From 82a68be97dfcf435d6b3550334e44c6a19761b5f Mon Sep 17 00:00:00 2001 From: Robin Krahnen Date: Fri, 28 Aug 2020 14:53:43 +0200 Subject: [PATCH 33/35] added empty line at end of composer.json --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index ffcab3c..62b81e5 100644 --- a/composer.json +++ b/composer.json @@ -76,4 +76,4 @@ "Neos.Flow-20190515215000" ] } -} \ No newline at end of file +} From ba6f572cece87a1e7604d2ced3464c003e939baf Mon Sep 17 00:00:00 2001 From: Robin Krahnen Date: Sun, 30 Aug 2020 21:58:08 +0200 Subject: [PATCH 34/35] added CHANGELOG.md --- CHANGELOG.md | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 CHANGELOG.md diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..62c9eba --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,9 @@ +# Changelog +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## 3.0.0 - 2020-08-30 + +Start of the changelog. From 849c87ce6f28ce0437488f2a2a96499fcaa01c76 Mon Sep 17 00:00:00 2001 From: Robin Krahnen Date: Mon, 31 Aug 2020 13:42:10 +0200 Subject: [PATCH 35/35] changed date --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 62c9eba..ab59148 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,6 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## 3.0.0 - 2020-08-30 +## 3.0.0 - 2020-08-31 Start of the changelog.