diff --git a/bin/create-mixin b/bin/create-mixin index 51e87b4fc..36b03c05a 100755 --- a/bin/create-mixin +++ b/bin/create-mixin @@ -9,23 +9,23 @@ use Nette\PhpGenerator\InterfaceType; use Nette\PhpGenerator\PhpNamespace; use Nette\PhpGenerator\Printer; use Respect\Validation\Exceptions\ValidationException; -use Respect\Validation\Mixins\ChainedKey; -use Respect\Validation\Mixins\ChainedLength; -use Respect\Validation\Mixins\ChainedMax; -use Respect\Validation\Mixins\ChainedMin; -use Respect\Validation\Mixins\ChainedNot; -use Respect\Validation\Mixins\ChainedNullOr; -use Respect\Validation\Mixins\ChainedProperty; -use Respect\Validation\Mixins\ChainedUndefOr; -use Respect\Validation\Mixins\ChainedValidator; -use Respect\Validation\Mixins\StaticKey; -use Respect\Validation\Mixins\StaticLength; -use Respect\Validation\Mixins\StaticMax; -use Respect\Validation\Mixins\StaticMin; -use Respect\Validation\Mixins\StaticNot; -use Respect\Validation\Mixins\StaticNullOr; -use Respect\Validation\Mixins\StaticProperty; -use Respect\Validation\Mixins\StaticUndefOr; +use Respect\Validation\Mixins\KeyChain; +use Respect\Validation\Mixins\LengthChain; +use Respect\Validation\Mixins\MaxChain; +use Respect\Validation\Mixins\MinChain; +use Respect\Validation\Mixins\NotChain; +use Respect\Validation\Mixins\NullOrChain; +use Respect\Validation\Mixins\PropertyChain; +use Respect\Validation\Mixins\UndefOrChain; +use Respect\Validation\Mixins\Chain; +use Respect\Validation\Mixins\KeyBuilder; +use Respect\Validation\Mixins\LengthBuilder; +use Respect\Validation\Mixins\MaxBuilder; +use Respect\Validation\Mixins\MinBuilder; +use Respect\Validation\Mixins\NotBuilder; +use Respect\Validation\Mixins\NullOrBuilder; +use Respect\Validation\Mixins\PropertyBuilder; +use Respect\Validation\Mixins\UndefOrBuilder; use Respect\Validation\Rules\NotUndef; use Respect\Validation\Rules\NullOr; use Respect\Validation\Rules\UndefOr; @@ -48,8 +48,8 @@ function addMethodToInterface( } $name = $prefix ? $prefix . ucfirst($originalName) : lcfirst($originalName); - $method = $interfaceType->addMethod($name)->setPublic()->setReturnType(ChainedValidator::class); - if (str_starts_with($interfaceType->getName(), 'Static')) { + $method = $interfaceType->addMethod($name)->setPublic()->setReturnType(Chain::class); + if (str_contains($interfaceType->getName(), 'Builder')) { $method->setStatic(); } @@ -182,7 +182,7 @@ function overwriteFile(string $content, string $basename): void ['NullOr', 'nullOr', [], ['Nullable', 'NullOr', 'Optional', 'NotOptional', 'NotUndef', 'UndefOr']], ['Property', 'property', [], $structureRelatedRules], ['UndefOr', 'undefOr', [], ['Nullable', 'NullOr', 'NotOptional', 'NotUndef', 'Optional', 'UndefOr', 'Attributes']], - ['Validator', null, [], []], + ['', null, [], []], ]; $names = []; @@ -212,49 +212,32 @@ function overwriteFile(string $content, string $basename): void foreach ($mixins as [$name, $prefix, $allowList, $denyList]) { $chainedNamespace = new PhpNamespace('Respect\\Validation\\Mixins'); $chainedNamespace->addUse(Rule::class); - $chainedInterface = $chainedNamespace->addInterface('Chained' . $name); + $chainedInterface = $chainedNamespace->addInterface($name . 'Chain'); $staticNamespace = new PhpNamespace('Respect\\Validation\\Mixins'); $staticNamespace->addUse(Rule::class); - $staticInterface = $staticNamespace->addInterface('Static' . $name); + $staticInterface = $staticNamespace->addInterface($name . 'Builder'); - if ($name === 'Validator') { + if ($name === '') { $chainedInterface->addExtend(Rule::class); - $chainedInterface->addExtend(ChainedKey::class); - $chainedInterface->addExtend(ChainedLength::class); - $chainedInterface->addExtend(ChainedMax::class); - $chainedInterface->addExtend(ChainedMin::class); - $chainedInterface->addExtend(ChainedNot::class); - $chainedInterface->addExtend(ChainedNullOr::class); - $chainedInterface->addExtend(ChainedProperty::class); - $chainedInterface->addExtend(ChainedUndefOr::class); - - $isValid = $chainedInterface->addMethod('isValid')->setPublic()->setReturnType('bool'); - $isValid->addParameter('input')->setType('mixed'); - - $assert = $chainedInterface->addMethod('assert')->setPublic()->setReturnType('void'); - $assert->addParameter('input')->setType('mixed'); - $assert->addParameter('template')->setType('array|callable|string|\Throwable|null')->setDefaultValue(null); - $assert->addComment(sprintf( - '@param array|callable(\%s): \Throwable|string|\Throwable|null $template', - ValidationException::class - )); - - $setTemplates = $chainedInterface->addMethod('setTemplates')->setPublic()->setReturnType(ChainedValidator::class); - $setTemplates->addParameter('templates')->setType('array'); - $setTemplates->addComment('@param array $templates'); - - $getRules = $chainedInterface->addMethod('getRules')->setPublic()->setReturnType('array'); - $getRules->addComment('@return array'); - - $staticInterface->addExtend(StaticKey::class); - $staticInterface->addExtend(StaticLength::class); - $staticInterface->addExtend(StaticMax::class); - $staticInterface->addExtend(StaticMin::class); - $staticInterface->addExtend(StaticNot::class); - $staticInterface->addExtend(StaticNullOr::class); - $staticInterface->addExtend(StaticProperty::class); - $staticInterface->addExtend(StaticUndefOr::class); + $chainedInterface->addExtend(KeyChain::class); + $chainedInterface->addExtend(LengthChain::class); + $chainedInterface->addExtend(MaxChain::class); + $chainedInterface->addExtend(MinChain::class); + $chainedInterface->addExtend(NotChain::class); + $chainedInterface->addExtend(NullOrChain::class); + $chainedInterface->addExtend(PropertyChain::class); + $chainedInterface->addExtend(UndefOrChain::class); + $chainedInterface->addComment('@mixin \\' . \Respect\Validation\Validator::class); + + $staticInterface->addExtend(KeyBuilder::class); + $staticInterface->addExtend(LengthBuilder::class); + $staticInterface->addExtend(MaxBuilder::class); + $staticInterface->addExtend(MinBuilder::class); + $staticInterface->addExtend(NotBuilder::class); + $staticInterface->addExtend(NullOrBuilder::class); + $staticInterface->addExtend(PropertyBuilder::class); + $staticInterface->addExtend(UndefOrBuilder::class); } foreach ($names as $originalName => $reflection) { diff --git a/library/Mixins/Builder.php b/library/Mixins/Builder.php new file mode 100644 index 000000000..182b45e82 --- /dev/null +++ b/library/Mixins/Builder.php @@ -0,0 +1,389 @@ + + * SPDX-License-Identifier: MIT + */ + +declare(strict_types=1); + +namespace Respect\Validation\Mixins; + +use DateTimeImmutable; +use Respect\Validation\Rule; + +interface Builder extends + KeyBuilder, + LengthBuilder, + MaxBuilder, + MinBuilder, + NotBuilder, + NullOrBuilder, + PropertyBuilder, + UndefOrBuilder +{ + public static function allOf(Rule $rule1, Rule $rule2, Rule ...$rules): Chain; + + public static function alnum(string ...$additionalChars): Chain; + + public static function alpha(string ...$additionalChars): Chain; + + public static function alwaysInvalid(): Chain; + + public static function alwaysValid(): Chain; + + public static function anyOf(Rule $rule1, Rule $rule2, Rule ...$rules): Chain; + + public static function arrayType(): Chain; + + public static function arrayVal(): Chain; + + public static function attributes(): Chain; + + public static function base( + int $base, + string $chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', + ): Chain; + + public static function base64(): Chain; + + public static function between(mixed $minValue, mixed $maxValue): Chain; + + public static function betweenExclusive(mixed $minimum, mixed $maximum): Chain; + + public static function boolType(): Chain; + + public static function boolVal(): Chain; + + public static function bsn(): Chain; + + public static function call(callable $callable, Rule $rule): Chain; + + public static function callableType(): Chain; + + public static function callback(callable $callback, mixed ...$arguments): Chain; + + public static function charset(string $charset, string ...$charsets): Chain; + + public static function cnh(): Chain; + + public static function cnpj(): Chain; + + public static function consecutive(Rule $rule1, Rule $rule2, Rule ...$rules): Chain; + + public static function consonant(string ...$additionalChars): Chain; + + public static function contains(mixed $containsValue, bool $identical = false): Chain; + + /** + * @param non-empty-array $needles + */ + public static function containsAny(array $needles, bool $identical = false): Chain; + + public static function control(string ...$additionalChars): Chain; + + public static function countable(): Chain; + + /** + * @param "alpha-2"|"alpha-3"|"numeric" $set + */ + public static function countryCode(string $set = 'alpha-2'): Chain; + + public static function cpf(): Chain; + + public static function creditCard(string $brand = 'Any'): Chain; + + /** + * @param "alpha-3"|"numeric" $set + */ + public static function currencyCode(string $set = 'alpha-3'): Chain; + + public static function date(string $format = 'Y-m-d'): Chain; + + public static function dateTime(?string $format = null): Chain; + + /** + * @param "years"|"months"|"days"|"hours"|"minutes"|"seconds"|"microseconds" $type + */ + public static function dateTimeDiff( + string $type, + Rule $rule, + ?string $format = null, + ?DateTimeImmutable $now = null, + ): Chain; + + public static function decimal(int $decimals): Chain; + + public static function digit(string ...$additionalChars): Chain; + + public static function directory(): Chain; + + public static function domain(bool $tldCheck = true): Chain; + + public static function each(Rule $rule): Chain; + + public static function email(): Chain; + + public static function endsWith(mixed $endValue, bool $identical = false): Chain; + + public static function equals(mixed $compareTo): Chain; + + public static function equivalent(mixed $compareTo): Chain; + + public static function even(): Chain; + + public static function executable(): Chain; + + public static function exists(): Chain; + + public static function extension(string $extension): Chain; + + public static function factor(int $dividend): Chain; + + public static function falseVal(): Chain; + + public static function fibonacci(): Chain; + + public static function file(): Chain; + + public static function filterVar(int $filter, mixed $options = null): Chain; + + public static function finite(): Chain; + + public static function floatType(): Chain; + + public static function floatVal(): Chain; + + public static function graph(string ...$additionalChars): Chain; + + public static function greaterThan(mixed $compareTo): Chain; + + public static function greaterThanOrEqual(mixed $compareTo): Chain; + + public static function hetu(): Chain; + + public static function hexRgbColor(): Chain; + + public static function iban(): Chain; + + public static function identical(mixed $compareTo): Chain; + + public static function image(): Chain; + + public static function imei(): Chain; + + public static function in(mixed $haystack, bool $compareIdentical = false): Chain; + + public static function infinite(): Chain; + + /** + * @param class-string $class + */ + public static function instance(string $class): Chain; + + public static function intType(): Chain; + + public static function intVal(): Chain; + + public static function ip(string $range = '*', ?int $options = null): Chain; + + public static function isbn(): Chain; + + public static function iterableType(): Chain; + + public static function iterableVal(): Chain; + + public static function json(): Chain; + + public static function key(string|int $key, Rule $rule): Chain; + + public static function keyExists(string|int $key): Chain; + + public static function keyOptional(string|int $key, Rule $rule): Chain; + + public static function keySet(Rule $rule, Rule ...$rules): Chain; + + /** + * @param "alpha-2"|"alpha-3" $set + */ + public static function languageCode(string $set = 'alpha-2'): Chain; + + /** + * @param callable(mixed): Rule $ruleCreator + */ + public static function lazy(callable $ruleCreator): Chain; + + public static function leapDate(string $format): Chain; + + public static function leapYear(): Chain; + + public static function length(Rule $rule): Chain; + + public static function lessThan(mixed $compareTo): Chain; + + public static function lessThanOrEqual(mixed $compareTo): Chain; + + public static function lowercase(): Chain; + + public static function luhn(): Chain; + + public static function macAddress(): Chain; + + public static function max(Rule $rule): Chain; + + public static function mimetype(string $mimetype): Chain; + + public static function min(Rule $rule): Chain; + + public static function multiple(int $multipleOf): Chain; + + public static function negative(): Chain; + + public static function nfeAccessKey(): Chain; + + public static function nif(): Chain; + + public static function nip(): Chain; + + public static function no(bool $useLocale = false): Chain; + + public static function noWhitespace(): Chain; + + public static function noneOf(Rule $rule1, Rule $rule2, Rule ...$rules): Chain; + + public static function not(Rule $rule): Chain; + + public static function notBlank(): Chain; + + public static function notEmoji(): Chain; + + public static function notEmpty(): Chain; + + public static function notOptional(): Chain; + + public static function notUndef(): Chain; + + public static function nullOr(Rule $rule): Chain; + + public static function nullType(): Chain; + + /** + * @deprecated Use {@see nullOr()} instead. + */ + public static function nullable(Rule $rule): Chain; + + public static function number(): Chain; + + public static function numericVal(): Chain; + + public static function objectType(): Chain; + + public static function odd(): Chain; + + public static function oneOf(Rule $rule1, Rule $rule2, Rule ...$rules): Chain; + + /** + * @deprecated Use {@see undefOr()} instead. + */ + public static function optional(Rule $rule): Chain; + + public static function perfectSquare(): Chain; + + public static function pesel(): Chain; + + public static function phone(?string $countryCode = null): Chain; + + public static function phpLabel(): Chain; + + public static function pis(): Chain; + + public static function polishIdCard(): Chain; + + public static function portugueseNif(): Chain; + + public static function positive(): Chain; + + public static function postalCode(string $countryCode, bool $formatted = false): Chain; + + public static function primeNumber(): Chain; + + public static function printable(string ...$additionalChars): Chain; + + public static function property(string $propertyName, Rule $rule): Chain; + + public static function propertyExists(string $propertyName): Chain; + + public static function propertyOptional(string $propertyName, Rule $rule): Chain; + + public static function publicDomainSuffix(): Chain; + + public static function punct(string ...$additionalChars): Chain; + + public static function readable(): Chain; + + public static function regex(string $regex): Chain; + + public static function resourceType(): Chain; + + public static function roman(): Chain; + + public static function scalarVal(): Chain; + + /** + * @param "B"|"KB"|"MB"|"GB"|"TB"|"PB"|"EB"|"ZB"|"YB" $unit + */ + public static function size(string $unit, Rule $rule): Chain; + + public static function slug(): Chain; + + public static function sorted(string $direction): Chain; + + public static function space(string ...$additionalChars): Chain; + + public static function startsWith(mixed $startValue, bool $identical = false): Chain; + + public static function stringType(): Chain; + + public static function stringVal(): Chain; + + public static function subdivisionCode(string $countryCode): Chain; + + /** + * @param mixed[] $superset + */ + public static function subset(array $superset): Chain; + + public static function symbolicLink(): Chain; + + public static function time(string $format = 'H:i:s'): Chain; + + public static function tld(): Chain; + + public static function trueVal(): Chain; + + public static function undefOr(Rule $rule): Chain; + + public static function unique(): Chain; + + public static function uploaded(): Chain; + + public static function uppercase(): Chain; + + public static function url(): Chain; + + public static function uuid(?int $version = null): Chain; + + public static function version(): Chain; + + public static function videoUrl(?string $service = null): Chain; + + public static function vowel(string ...$additionalChars): Chain; + + public static function when(Rule $when, Rule $then, ?Rule $else = null): Chain; + + public static function writable(): Chain; + + public static function xdigit(string ...$additionalChars): Chain; + + public static function yes(bool $useLocale = false): Chain; +} diff --git a/library/Mixins/Chain.php b/library/Mixins/Chain.php new file mode 100644 index 000000000..83fe671dd --- /dev/null +++ b/library/Mixins/Chain.php @@ -0,0 +1,394 @@ + + * SPDX-License-Identifier: MIT + */ + +declare(strict_types=1); + +namespace Respect\Validation\Mixins; + +use DateTimeImmutable; +use Respect\Validation\Rule; +use Respect\Validation\Validator; + +/** + * @mixin Validator + */ +interface Chain extends + Rule, + KeyChain, + LengthChain, + MaxChain, + MinChain, + NotChain, + NullOrChain, + PropertyChain, + UndefOrChain +{ + public function allOf(Rule $rule1, Rule $rule2, Rule ...$rules): Chain; + + public function alnum(string ...$additionalChars): Chain; + + public function alpha(string ...$additionalChars): Chain; + + public function alwaysInvalid(): Chain; + + public function alwaysValid(): Chain; + + public function anyOf(Rule $rule1, Rule $rule2, Rule ...$rules): Chain; + + public function arrayType(): Chain; + + public function arrayVal(): Chain; + + public function attributes(): Chain; + + public function base( + int $base, + string $chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', + ): Chain; + + public function base64(): Chain; + + public function between(mixed $minValue, mixed $maxValue): Chain; + + public function betweenExclusive(mixed $minimum, mixed $maximum): Chain; + + public function boolType(): Chain; + + public function boolVal(): Chain; + + public function bsn(): Chain; + + public function call(callable $callable, Rule $rule): Chain; + + public function callableType(): Chain; + + public function callback(callable $callback, mixed ...$arguments): Chain; + + public function charset(string $charset, string ...$charsets): Chain; + + public function cnh(): Chain; + + public function cnpj(): Chain; + + public function consecutive(Rule $rule1, Rule $rule2, Rule ...$rules): Chain; + + public function consonant(string ...$additionalChars): Chain; + + public function contains(mixed $containsValue, bool $identical = false): Chain; + + /** + * @param non-empty-array $needles + */ + public function containsAny(array $needles, bool $identical = false): Chain; + + public function control(string ...$additionalChars): Chain; + + public function countable(): Chain; + + /** + * @param "alpha-2"|"alpha-3"|"numeric" $set + */ + public function countryCode(string $set = 'alpha-2'): Chain; + + public function cpf(): Chain; + + public function creditCard(string $brand = 'Any'): Chain; + + /** + * @param "alpha-3"|"numeric" $set + */ + public function currencyCode(string $set = 'alpha-3'): Chain; + + public function date(string $format = 'Y-m-d'): Chain; + + public function dateTime(?string $format = null): Chain; + + /** + * @param "years"|"months"|"days"|"hours"|"minutes"|"seconds"|"microseconds" $type + */ + public function dateTimeDiff( + string $type, + Rule $rule, + ?string $format = null, + ?DateTimeImmutable $now = null, + ): Chain; + + public function decimal(int $decimals): Chain; + + public function digit(string ...$additionalChars): Chain; + + public function directory(): Chain; + + public function domain(bool $tldCheck = true): Chain; + + public function each(Rule $rule): Chain; + + public function email(): Chain; + + public function endsWith(mixed $endValue, bool $identical = false): Chain; + + public function equals(mixed $compareTo): Chain; + + public function equivalent(mixed $compareTo): Chain; + + public function even(): Chain; + + public function executable(): Chain; + + public function exists(): Chain; + + public function extension(string $extension): Chain; + + public function factor(int $dividend): Chain; + + public function falseVal(): Chain; + + public function fibonacci(): Chain; + + public function file(): Chain; + + public function filterVar(int $filter, mixed $options = null): Chain; + + public function finite(): Chain; + + public function floatType(): Chain; + + public function floatVal(): Chain; + + public function graph(string ...$additionalChars): Chain; + + public function greaterThan(mixed $compareTo): Chain; + + public function greaterThanOrEqual(mixed $compareTo): Chain; + + public function hetu(): Chain; + + public function hexRgbColor(): Chain; + + public function iban(): Chain; + + public function identical(mixed $compareTo): Chain; + + public function image(): Chain; + + public function imei(): Chain; + + public function in(mixed $haystack, bool $compareIdentical = false): Chain; + + public function infinite(): Chain; + + /** + * @param class-string $class + */ + public function instance(string $class): Chain; + + public function intType(): Chain; + + public function intVal(): Chain; + + public function ip(string $range = '*', ?int $options = null): Chain; + + public function isbn(): Chain; + + public function iterableType(): Chain; + + public function iterableVal(): Chain; + + public function json(): Chain; + + public function key(string|int $key, Rule $rule): Chain; + + public function keyExists(string|int $key): Chain; + + public function keyOptional(string|int $key, Rule $rule): Chain; + + public function keySet(Rule $rule, Rule ...$rules): Chain; + + /** + * @param "alpha-2"|"alpha-3" $set + */ + public function languageCode(string $set = 'alpha-2'): Chain; + + /** + * @param callable(mixed): Rule $ruleCreator + */ + public function lazy(callable $ruleCreator): Chain; + + public function leapDate(string $format): Chain; + + public function leapYear(): Chain; + + public function length(Rule $rule): Chain; + + public function lessThan(mixed $compareTo): Chain; + + public function lessThanOrEqual(mixed $compareTo): Chain; + + public function lowercase(): Chain; + + public function luhn(): Chain; + + public function macAddress(): Chain; + + public function max(Rule $rule): Chain; + + public function mimetype(string $mimetype): Chain; + + public function min(Rule $rule): Chain; + + public function multiple(int $multipleOf): Chain; + + public function negative(): Chain; + + public function nfeAccessKey(): Chain; + + public function nif(): Chain; + + public function nip(): Chain; + + public function no(bool $useLocale = false): Chain; + + public function noWhitespace(): Chain; + + public function noneOf(Rule $rule1, Rule $rule2, Rule ...$rules): Chain; + + public function not(Rule $rule): Chain; + + public function notBlank(): Chain; + + public function notEmoji(): Chain; + + public function notEmpty(): Chain; + + public function notOptional(): Chain; + + public function notUndef(): Chain; + + public function nullOr(Rule $rule): Chain; + + public function nullType(): Chain; + + /** + * @deprecated Use {@see nullOr()} instead. + */ + public function nullable(Rule $rule): Chain; + + public function number(): Chain; + + public function numericVal(): Chain; + + public function objectType(): Chain; + + public function odd(): Chain; + + public function oneOf(Rule $rule1, Rule $rule2, Rule ...$rules): Chain; + + /** + * @deprecated Use {@see undefOr()} instead. + */ + public function optional(Rule $rule): Chain; + + public function perfectSquare(): Chain; + + public function pesel(): Chain; + + public function phone(?string $countryCode = null): Chain; + + public function phpLabel(): Chain; + + public function pis(): Chain; + + public function polishIdCard(): Chain; + + public function portugueseNif(): Chain; + + public function positive(): Chain; + + public function postalCode(string $countryCode, bool $formatted = false): Chain; + + public function primeNumber(): Chain; + + public function printable(string ...$additionalChars): Chain; + + public function property(string $propertyName, Rule $rule): Chain; + + public function propertyExists(string $propertyName): Chain; + + public function propertyOptional(string $propertyName, Rule $rule): Chain; + + public function publicDomainSuffix(): Chain; + + public function punct(string ...$additionalChars): Chain; + + public function readable(): Chain; + + public function regex(string $regex): Chain; + + public function resourceType(): Chain; + + public function roman(): Chain; + + public function scalarVal(): Chain; + + /** + * @param "B"|"KB"|"MB"|"GB"|"TB"|"PB"|"EB"|"ZB"|"YB" $unit + */ + public function size(string $unit, Rule $rule): Chain; + + public function slug(): Chain; + + public function sorted(string $direction): Chain; + + public function space(string ...$additionalChars): Chain; + + public function startsWith(mixed $startValue, bool $identical = false): Chain; + + public function stringType(): Chain; + + public function stringVal(): Chain; + + public function subdivisionCode(string $countryCode): Chain; + + /** + * @param mixed[] $superset + */ + public function subset(array $superset): Chain; + + public function symbolicLink(): Chain; + + public function time(string $format = 'H:i:s'): Chain; + + public function tld(): Chain; + + public function trueVal(): Chain; + + public function undefOr(Rule $rule): Chain; + + public function unique(): Chain; + + public function uploaded(): Chain; + + public function uppercase(): Chain; + + public function url(): Chain; + + public function uuid(?int $version = null): Chain; + + public function version(): Chain; + + public function videoUrl(?string $service = null): Chain; + + public function vowel(string ...$additionalChars): Chain; + + public function when(Rule $when, Rule $then, ?Rule $else = null): Chain; + + public function writable(): Chain; + + public function xdigit(string ...$additionalChars): Chain; + + public function yes(bool $useLocale = false): Chain; +} diff --git a/library/Mixins/ChainedKey.php b/library/Mixins/ChainedKey.php deleted file mode 100644 index d1da4f4dd..000000000 --- a/library/Mixins/ChainedKey.php +++ /dev/null @@ -1,351 +0,0 @@ - - * SPDX-License-Identifier: MIT - */ - -declare(strict_types=1); - -namespace Respect\Validation\Mixins; - -use DateTimeImmutable; -use Respect\Validation\Rule; - -interface ChainedKey -{ - public function keyAllOf(int|string $key, Rule $rule1, Rule $rule2, Rule ...$rules): ChainedValidator; - - public function keyAlnum(int|string $key, string ...$additionalChars): ChainedValidator; - - public function keyAlpha(int|string $key, string ...$additionalChars): ChainedValidator; - - public function keyAlwaysInvalid(int|string $key): ChainedValidator; - - public function keyAlwaysValid(int|string $key): ChainedValidator; - - public function keyAnyOf(int|string $key, Rule $rule1, Rule $rule2, Rule ...$rules): ChainedValidator; - - public function keyArrayType(int|string $key): ChainedValidator; - - public function keyArrayVal(int|string $key): ChainedValidator; - - public function keyBase( - int|string $key, - int $base, - string $chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', - ): ChainedValidator; - - public function keyBase64(int|string $key): ChainedValidator; - - public function keyBetween(int|string $key, mixed $minValue, mixed $maxValue): ChainedValidator; - - public function keyBetweenExclusive(int|string $key, mixed $minimum, mixed $maximum): ChainedValidator; - - public function keyBoolType(int|string $key): ChainedValidator; - - public function keyBoolVal(int|string $key): ChainedValidator; - - public function keyBsn(int|string $key): ChainedValidator; - - public function keyCall(int|string $key, callable $callable, Rule $rule): ChainedValidator; - - public function keyCallableType(int|string $key): ChainedValidator; - - public function keyCallback(int|string $key, callable $callback, mixed ...$arguments): ChainedValidator; - - public function keyCharset(int|string $key, string $charset, string ...$charsets): ChainedValidator; - - public function keyCnh(int|string $key): ChainedValidator; - - public function keyCnpj(int|string $key): ChainedValidator; - - public function keyConsecutive(int|string $key, Rule $rule1, Rule $rule2, Rule ...$rules): ChainedValidator; - - public function keyConsonant(int|string $key, string ...$additionalChars): ChainedValidator; - - public function keyContains(int|string $key, mixed $containsValue, bool $identical = false): ChainedValidator; - - /** - * @param non-empty-array $needles - */ - public function keyContainsAny(int|string $key, array $needles, bool $identical = false): ChainedValidator; - - public function keyControl(int|string $key, string ...$additionalChars): ChainedValidator; - - public function keyCountable(int|string $key): ChainedValidator; - - /** - * @param "alpha-2"|"alpha-3"|"numeric" $set - */ - public function keyCountryCode(int|string $key, string $set = 'alpha-2'): ChainedValidator; - - public function keyCpf(int|string $key): ChainedValidator; - - public function keyCreditCard(int|string $key, string $brand = 'Any'): ChainedValidator; - - /** - * @param "alpha-3"|"numeric" $set - */ - public function keyCurrencyCode(int|string $key, string $set = 'alpha-3'): ChainedValidator; - - public function keyDate(int|string $key, string $format = 'Y-m-d'): ChainedValidator; - - public function keyDateTime(int|string $key, ?string $format = null): ChainedValidator; - - /** - * @param "years"|"months"|"days"|"hours"|"minutes"|"seconds"|"microseconds" $type - */ - public function keyDateTimeDiff( - int|string $key, - string $type, - Rule $rule, - ?string $format = null, - ?DateTimeImmutable $now = null, - ): ChainedValidator; - - public function keyDecimal(int|string $key, int $decimals): ChainedValidator; - - public function keyDigit(int|string $key, string ...$additionalChars): ChainedValidator; - - public function keyDirectory(int|string $key): ChainedValidator; - - public function keyDomain(int|string $key, bool $tldCheck = true): ChainedValidator; - - public function keyEach(int|string $key, Rule $rule): ChainedValidator; - - public function keyEmail(int|string $key): ChainedValidator; - - public function keyEndsWith(int|string $key, mixed $endValue, bool $identical = false): ChainedValidator; - - public function keyEquals(int|string $key, mixed $compareTo): ChainedValidator; - - public function keyEquivalent(int|string $key, mixed $compareTo): ChainedValidator; - - public function keyEven(int|string $key): ChainedValidator; - - public function keyExecutable(int|string $key): ChainedValidator; - - public function keyExtension(int|string $key, string $extension): ChainedValidator; - - public function keyFactor(int|string $key, int $dividend): ChainedValidator; - - public function keyFalseVal(int|string $key): ChainedValidator; - - public function keyFibonacci(int|string $key): ChainedValidator; - - public function keyFile(int|string $key): ChainedValidator; - - public function keyFilterVar(int|string $key, int $filter, mixed $options = null): ChainedValidator; - - public function keyFinite(int|string $key): ChainedValidator; - - public function keyFloatType(int|string $key): ChainedValidator; - - public function keyFloatVal(int|string $key): ChainedValidator; - - public function keyGraph(int|string $key, string ...$additionalChars): ChainedValidator; - - public function keyGreaterThan(int|string $key, mixed $compareTo): ChainedValidator; - - public function keyGreaterThanOrEqual(int|string $key, mixed $compareTo): ChainedValidator; - - public function keyHetu(int|string $key): ChainedValidator; - - public function keyHexRgbColor(int|string $key): ChainedValidator; - - public function keyIban(int|string $key): ChainedValidator; - - public function keyIdentical(int|string $key, mixed $compareTo): ChainedValidator; - - public function keyImage(int|string $key): ChainedValidator; - - public function keyImei(int|string $key): ChainedValidator; - - public function keyIn(int|string $key, mixed $haystack, bool $compareIdentical = false): ChainedValidator; - - public function keyInfinite(int|string $key): ChainedValidator; - - /** - * @param class-string $class - */ - public function keyInstance(int|string $key, string $class): ChainedValidator; - - public function keyIntType(int|string $key): ChainedValidator; - - public function keyIntVal(int|string $key): ChainedValidator; - - public function keyIp(int|string $key, string $range = '*', ?int $options = null): ChainedValidator; - - public function keyIsbn(int|string $key): ChainedValidator; - - public function keyIterableType(int|string $key): ChainedValidator; - - public function keyIterableVal(int|string $key): ChainedValidator; - - public function keyJson(int|string $key): ChainedValidator; - - /** - * @param "alpha-2"|"alpha-3" $set - */ - public function keyLanguageCode(int|string $key, string $set = 'alpha-2'): ChainedValidator; - - /** - * @param callable(mixed): Rule $ruleCreator - */ - public function keyLazy(int|string $key, callable $ruleCreator): ChainedValidator; - - public function keyLeapDate(int|string $key, string $format): ChainedValidator; - - public function keyLeapYear(int|string $key): ChainedValidator; - - public function keyLength(int|string $key, Rule $rule): ChainedValidator; - - public function keyLessThan(int|string $key, mixed $compareTo): ChainedValidator; - - public function keyLessThanOrEqual(int|string $key, mixed $compareTo): ChainedValidator; - - public function keyLowercase(int|string $key): ChainedValidator; - - public function keyLuhn(int|string $key): ChainedValidator; - - public function keyMacAddress(int|string $key): ChainedValidator; - - public function keyMax(int|string $key, Rule $rule): ChainedValidator; - - public function keyMimetype(int|string $key, string $mimetype): ChainedValidator; - - public function keyMin(int|string $key, Rule $rule): ChainedValidator; - - public function keyMultiple(int|string $key, int $multipleOf): ChainedValidator; - - public function keyNegative(int|string $key): ChainedValidator; - - public function keyNfeAccessKey(int|string $key): ChainedValidator; - - public function keyNif(int|string $key): ChainedValidator; - - public function keyNip(int|string $key): ChainedValidator; - - public function keyNo(int|string $key, bool $useLocale = false): ChainedValidator; - - public function keyNoWhitespace(int|string $key): ChainedValidator; - - public function keyNoneOf(int|string $key, Rule $rule1, Rule $rule2, Rule ...$rules): ChainedValidator; - - public function keyNot(int|string $key, Rule $rule): ChainedValidator; - - public function keyNotBlank(int|string $key): ChainedValidator; - - public function keyNotEmoji(int|string $key): ChainedValidator; - - public function keyNotEmpty(int|string $key): ChainedValidator; - - public function keyNotOptional(int|string $key): ChainedValidator; - - public function keyNotUndef(int|string $key): ChainedValidator; - - public function keyNullType(int|string $key): ChainedValidator; - - public function keyNumber(int|string $key): ChainedValidator; - - public function keyNumericVal(int|string $key): ChainedValidator; - - public function keyObjectType(int|string $key): ChainedValidator; - - public function keyOdd(int|string $key): ChainedValidator; - - public function keyOneOf(int|string $key, Rule $rule1, Rule $rule2, Rule ...$rules): ChainedValidator; - - public function keyPerfectSquare(int|string $key): ChainedValidator; - - public function keyPesel(int|string $key): ChainedValidator; - - public function keyPhone(int|string $key, ?string $countryCode = null): ChainedValidator; - - public function keyPhpLabel(int|string $key): ChainedValidator; - - public function keyPis(int|string $key): ChainedValidator; - - public function keyPolishIdCard(int|string $key): ChainedValidator; - - public function keyPortugueseNif(int|string $key): ChainedValidator; - - public function keyPositive(int|string $key): ChainedValidator; - - public function keyPostalCode(int|string $key, string $countryCode, bool $formatted = false): ChainedValidator; - - public function keyPrimeNumber(int|string $key): ChainedValidator; - - public function keyPrintable(int|string $key, string ...$additionalChars): ChainedValidator; - - public function keyPublicDomainSuffix(int|string $key): ChainedValidator; - - public function keyPunct(int|string $key, string ...$additionalChars): ChainedValidator; - - public function keyReadable(int|string $key): ChainedValidator; - - public function keyRegex(int|string $key, string $regex): ChainedValidator; - - public function keyResourceType(int|string $key): ChainedValidator; - - public function keyRoman(int|string $key): ChainedValidator; - - public function keyScalarVal(int|string $key): ChainedValidator; - - /** - * @param "B"|"KB"|"MB"|"GB"|"TB"|"PB"|"EB"|"ZB"|"YB" $unit - */ - public function keySize(int|string $key, string $unit, Rule $rule): ChainedValidator; - - public function keySlug(int|string $key): ChainedValidator; - - public function keySorted(int|string $key, string $direction): ChainedValidator; - - public function keySpace(int|string $key, string ...$additionalChars): ChainedValidator; - - public function keyStartsWith(int|string $key, mixed $startValue, bool $identical = false): ChainedValidator; - - public function keyStringType(int|string $key): ChainedValidator; - - public function keyStringVal(int|string $key): ChainedValidator; - - public function keySubdivisionCode(int|string $key, string $countryCode): ChainedValidator; - - /** - * @param mixed[] $superset - */ - public function keySubset(int|string $key, array $superset): ChainedValidator; - - public function keySymbolicLink(int|string $key): ChainedValidator; - - public function keyTime(int|string $key, string $format = 'H:i:s'): ChainedValidator; - - public function keyTld(int|string $key): ChainedValidator; - - public function keyTrueVal(int|string $key): ChainedValidator; - - public function keyUnique(int|string $key): ChainedValidator; - - public function keyUploaded(int|string $key): ChainedValidator; - - public function keyUppercase(int|string $key): ChainedValidator; - - public function keyUrl(int|string $key): ChainedValidator; - - public function keyUuid(int|string $key, ?int $version = null): ChainedValidator; - - public function keyVersion(int|string $key): ChainedValidator; - - public function keyVideoUrl(int|string $key, ?string $service = null): ChainedValidator; - - public function keyVowel(int|string $key, string ...$additionalChars): ChainedValidator; - - public function keyWhen(int|string $key, Rule $when, Rule $then, ?Rule $else = null): ChainedValidator; - - public function keyWritable(int|string $key): ChainedValidator; - - public function keyXdigit(int|string $key, string ...$additionalChars): ChainedValidator; - - public function keyYes(int|string $key, bool $useLocale = false): ChainedValidator; -} diff --git a/library/Mixins/ChainedLength.php b/library/Mixins/ChainedLength.php deleted file mode 100644 index 2565ce48b..000000000 --- a/library/Mixins/ChainedLength.php +++ /dev/null @@ -1,53 +0,0 @@ - - * SPDX-License-Identifier: MIT - */ - -declare(strict_types=1); - -namespace Respect\Validation\Mixins; - -interface ChainedLength -{ - public function lengthBetween(mixed $minValue, mixed $maxValue): ChainedValidator; - - public function lengthBetweenExclusive(mixed $minimum, mixed $maximum): ChainedValidator; - - public function lengthEquals(mixed $compareTo): ChainedValidator; - - public function lengthEquivalent(mixed $compareTo): ChainedValidator; - - public function lengthEven(): ChainedValidator; - - public function lengthFactor(int $dividend): ChainedValidator; - - public function lengthFibonacci(): ChainedValidator; - - public function lengthFinite(): ChainedValidator; - - public function lengthGreaterThan(mixed $compareTo): ChainedValidator; - - public function lengthGreaterThanOrEqual(mixed $compareTo): ChainedValidator; - - public function lengthIdentical(mixed $compareTo): ChainedValidator; - - public function lengthIn(mixed $haystack, bool $compareIdentical = false): ChainedValidator; - - public function lengthInfinite(): ChainedValidator; - - public function lengthLessThan(mixed $compareTo): ChainedValidator; - - public function lengthLessThanOrEqual(mixed $compareTo): ChainedValidator; - - public function lengthMultiple(int $multipleOf): ChainedValidator; - - public function lengthOdd(): ChainedValidator; - - public function lengthPerfectSquare(): ChainedValidator; - - public function lengthPositive(): ChainedValidator; - - public function lengthPrimeNumber(): ChainedValidator; -} diff --git a/library/Mixins/ChainedMax.php b/library/Mixins/ChainedMax.php deleted file mode 100644 index ba6cc9cae..000000000 --- a/library/Mixins/ChainedMax.php +++ /dev/null @@ -1,53 +0,0 @@ - - * SPDX-License-Identifier: MIT - */ - -declare(strict_types=1); - -namespace Respect\Validation\Mixins; - -interface ChainedMax -{ - public function maxBetween(mixed $minValue, mixed $maxValue): ChainedValidator; - - public function maxBetweenExclusive(mixed $minimum, mixed $maximum): ChainedValidator; - - public function maxEquals(mixed $compareTo): ChainedValidator; - - public function maxEquivalent(mixed $compareTo): ChainedValidator; - - public function maxEven(): ChainedValidator; - - public function maxFactor(int $dividend): ChainedValidator; - - public function maxFibonacci(): ChainedValidator; - - public function maxFinite(): ChainedValidator; - - public function maxGreaterThan(mixed $compareTo): ChainedValidator; - - public function maxGreaterThanOrEqual(mixed $compareTo): ChainedValidator; - - public function maxIdentical(mixed $compareTo): ChainedValidator; - - public function maxIn(mixed $haystack, bool $compareIdentical = false): ChainedValidator; - - public function maxInfinite(): ChainedValidator; - - public function maxLessThan(mixed $compareTo): ChainedValidator; - - public function maxLessThanOrEqual(mixed $compareTo): ChainedValidator; - - public function maxMultiple(int $multipleOf): ChainedValidator; - - public function maxOdd(): ChainedValidator; - - public function maxPerfectSquare(): ChainedValidator; - - public function maxPositive(): ChainedValidator; - - public function maxPrimeNumber(): ChainedValidator; -} diff --git a/library/Mixins/ChainedMin.php b/library/Mixins/ChainedMin.php deleted file mode 100644 index a072e39b2..000000000 --- a/library/Mixins/ChainedMin.php +++ /dev/null @@ -1,53 +0,0 @@ - - * SPDX-License-Identifier: MIT - */ - -declare(strict_types=1); - -namespace Respect\Validation\Mixins; - -interface ChainedMin -{ - public function minBetween(mixed $minValue, mixed $maxValue): ChainedValidator; - - public function minBetweenExclusive(mixed $minimum, mixed $maximum): ChainedValidator; - - public function minEquals(mixed $compareTo): ChainedValidator; - - public function minEquivalent(mixed $compareTo): ChainedValidator; - - public function minEven(): ChainedValidator; - - public function minFactor(int $dividend): ChainedValidator; - - public function minFibonacci(): ChainedValidator; - - public function minFinite(): ChainedValidator; - - public function minGreaterThan(mixed $compareTo): ChainedValidator; - - public function minGreaterThanOrEqual(mixed $compareTo): ChainedValidator; - - public function minIdentical(mixed $compareTo): ChainedValidator; - - public function minIn(mixed $haystack, bool $compareIdentical = false): ChainedValidator; - - public function minInfinite(): ChainedValidator; - - public function minLessThan(mixed $compareTo): ChainedValidator; - - public function minLessThanOrEqual(mixed $compareTo): ChainedValidator; - - public function minMultiple(int $multipleOf): ChainedValidator; - - public function minOdd(): ChainedValidator; - - public function minPerfectSquare(): ChainedValidator; - - public function minPositive(): ChainedValidator; - - public function minPrimeNumber(): ChainedValidator; -} diff --git a/library/Mixins/ChainedNot.php b/library/Mixins/ChainedNot.php deleted file mode 100644 index b3977e339..000000000 --- a/library/Mixins/ChainedNot.php +++ /dev/null @@ -1,353 +0,0 @@ - - * SPDX-License-Identifier: MIT - */ - -declare(strict_types=1); - -namespace Respect\Validation\Mixins; - -use DateTimeImmutable; -use Respect\Validation\Rule; - -interface ChainedNot -{ - public function notAllOf(Rule $rule1, Rule $rule2, Rule ...$rules): ChainedValidator; - - public function notAlnum(string ...$additionalChars): ChainedValidator; - - public function notAlpha(string ...$additionalChars): ChainedValidator; - - public function notAlwaysInvalid(): ChainedValidator; - - public function notAlwaysValid(): ChainedValidator; - - public function notAnyOf(Rule $rule1, Rule $rule2, Rule ...$rules): ChainedValidator; - - public function notArrayType(): ChainedValidator; - - public function notArrayVal(): ChainedValidator; - - public function notBase( - int $base, - string $chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', - ): ChainedValidator; - - public function notBase64(): ChainedValidator; - - public function notBetween(mixed $minValue, mixed $maxValue): ChainedValidator; - - public function notBetweenExclusive(mixed $minimum, mixed $maximum): ChainedValidator; - - public function notBoolType(): ChainedValidator; - - public function notBoolVal(): ChainedValidator; - - public function notBsn(): ChainedValidator; - - public function notCall(callable $callable, Rule $rule): ChainedValidator; - - public function notCallableType(): ChainedValidator; - - public function notCallback(callable $callback, mixed ...$arguments): ChainedValidator; - - public function notCharset(string $charset, string ...$charsets): ChainedValidator; - - public function notCnh(): ChainedValidator; - - public function notCnpj(): ChainedValidator; - - public function notConsecutive(Rule $rule1, Rule $rule2, Rule ...$rules): ChainedValidator; - - public function notConsonant(string ...$additionalChars): ChainedValidator; - - public function notContains(mixed $containsValue, bool $identical = false): ChainedValidator; - - /** - * @param non-empty-array $needles - */ - public function notContainsAny(array $needles, bool $identical = false): ChainedValidator; - - public function notControl(string ...$additionalChars): ChainedValidator; - - public function notCountable(): ChainedValidator; - - /** - * @param "alpha-2"|"alpha-3"|"numeric" $set - */ - public function notCountryCode(string $set = 'alpha-2'): ChainedValidator; - - public function notCpf(): ChainedValidator; - - public function notCreditCard(string $brand = 'Any'): ChainedValidator; - - /** - * @param "alpha-3"|"numeric" $set - */ - public function notCurrencyCode(string $set = 'alpha-3'): ChainedValidator; - - public function notDate(string $format = 'Y-m-d'): ChainedValidator; - - public function notDateTime(?string $format = null): ChainedValidator; - - /** - * @param "years"|"months"|"days"|"hours"|"minutes"|"seconds"|"microseconds" $type - */ - public function notDateTimeDiff( - string $type, - Rule $rule, - ?string $format = null, - ?DateTimeImmutable $now = null, - ): ChainedValidator; - - public function notDecimal(int $decimals): ChainedValidator; - - public function notDigit(string ...$additionalChars): ChainedValidator; - - public function notDirectory(): ChainedValidator; - - public function notDomain(bool $tldCheck = true): ChainedValidator; - - public function notEach(Rule $rule): ChainedValidator; - - public function notEmail(): ChainedValidator; - - public function notEndsWith(mixed $endValue, bool $identical = false): ChainedValidator; - - public function notEquals(mixed $compareTo): ChainedValidator; - - public function notEquivalent(mixed $compareTo): ChainedValidator; - - public function notEven(): ChainedValidator; - - public function notExecutable(): ChainedValidator; - - public function notExists(): ChainedValidator; - - public function notExtension(string $extension): ChainedValidator; - - public function notFactor(int $dividend): ChainedValidator; - - public function notFalseVal(): ChainedValidator; - - public function notFibonacci(): ChainedValidator; - - public function notFile(): ChainedValidator; - - public function notFilterVar(int $filter, mixed $options = null): ChainedValidator; - - public function notFinite(): ChainedValidator; - - public function notFloatType(): ChainedValidator; - - public function notFloatVal(): ChainedValidator; - - public function notGraph(string ...$additionalChars): ChainedValidator; - - public function notGreaterThan(mixed $compareTo): ChainedValidator; - - public function notGreaterThanOrEqual(mixed $compareTo): ChainedValidator; - - public function notHetu(): ChainedValidator; - - public function notHexRgbColor(): ChainedValidator; - - public function notIban(): ChainedValidator; - - public function notIdentical(mixed $compareTo): ChainedValidator; - - public function notImage(): ChainedValidator; - - public function notImei(): ChainedValidator; - - public function notIn(mixed $haystack, bool $compareIdentical = false): ChainedValidator; - - public function notInfinite(): ChainedValidator; - - /** - * @param class-string $class - */ - public function notInstance(string $class): ChainedValidator; - - public function notIntType(): ChainedValidator; - - public function notIntVal(): ChainedValidator; - - public function notIp(string $range = '*', ?int $options = null): ChainedValidator; - - public function notIsbn(): ChainedValidator; - - public function notIterableType(): ChainedValidator; - - public function notIterableVal(): ChainedValidator; - - public function notJson(): ChainedValidator; - - public function notKey(string|int $key, Rule $rule): ChainedValidator; - - public function notKeyExists(string|int $key): ChainedValidator; - - public function notKeyOptional(string|int $key, Rule $rule): ChainedValidator; - - public function notKeySet(Rule $rule, Rule ...$rules): ChainedValidator; - - /** - * @param "alpha-2"|"alpha-3" $set - */ - public function notLanguageCode(string $set = 'alpha-2'): ChainedValidator; - - /** - * @param callable(mixed): Rule $ruleCreator - */ - public function notLazy(callable $ruleCreator): ChainedValidator; - - public function notLeapDate(string $format): ChainedValidator; - - public function notLeapYear(): ChainedValidator; - - public function notLength(Rule $rule): ChainedValidator; - - public function notLessThan(mixed $compareTo): ChainedValidator; - - public function notLessThanOrEqual(mixed $compareTo): ChainedValidator; - - public function notLowercase(): ChainedValidator; - - public function notLuhn(): ChainedValidator; - - public function notMacAddress(): ChainedValidator; - - public function notMax(Rule $rule): ChainedValidator; - - public function notMimetype(string $mimetype): ChainedValidator; - - public function notMin(Rule $rule): ChainedValidator; - - public function notMultiple(int $multipleOf): ChainedValidator; - - public function notNegative(): ChainedValidator; - - public function notNfeAccessKey(): ChainedValidator; - - public function notNif(): ChainedValidator; - - public function notNip(): ChainedValidator; - - public function notNo(bool $useLocale = false): ChainedValidator; - - public function notNoWhitespace(): ChainedValidator; - - public function notNoneOf(Rule $rule1, Rule $rule2, Rule ...$rules): ChainedValidator; - - public function notNullType(): ChainedValidator; - - public function notNumber(): ChainedValidator; - - public function notNumericVal(): ChainedValidator; - - public function notObjectType(): ChainedValidator; - - public function notOdd(): ChainedValidator; - - public function notOneOf(Rule $rule1, Rule $rule2, Rule ...$rules): ChainedValidator; - - public function notPerfectSquare(): ChainedValidator; - - public function notPesel(): ChainedValidator; - - public function notPhone(?string $countryCode = null): ChainedValidator; - - public function notPhpLabel(): ChainedValidator; - - public function notPis(): ChainedValidator; - - public function notPolishIdCard(): ChainedValidator; - - public function notPortugueseNif(): ChainedValidator; - - public function notPositive(): ChainedValidator; - - public function notPostalCode(string $countryCode, bool $formatted = false): ChainedValidator; - - public function notPrimeNumber(): ChainedValidator; - - public function notPrintable(string ...$additionalChars): ChainedValidator; - - public function notProperty(string $propertyName, Rule $rule): ChainedValidator; - - public function notPropertyExists(string $propertyName): ChainedValidator; - - public function notPropertyOptional(string $propertyName, Rule $rule): ChainedValidator; - - public function notPublicDomainSuffix(): ChainedValidator; - - public function notPunct(string ...$additionalChars): ChainedValidator; - - public function notReadable(): ChainedValidator; - - public function notRegex(string $regex): ChainedValidator; - - public function notResourceType(): ChainedValidator; - - public function notRoman(): ChainedValidator; - - public function notScalarVal(): ChainedValidator; - - /** - * @param "B"|"KB"|"MB"|"GB"|"TB"|"PB"|"EB"|"ZB"|"YB" $unit - */ - public function notSize(string $unit, Rule $rule): ChainedValidator; - - public function notSlug(): ChainedValidator; - - public function notSorted(string $direction): ChainedValidator; - - public function notSpace(string ...$additionalChars): ChainedValidator; - - public function notStartsWith(mixed $startValue, bool $identical = false): ChainedValidator; - - public function notStringType(): ChainedValidator; - - public function notStringVal(): ChainedValidator; - - public function notSubdivisionCode(string $countryCode): ChainedValidator; - - /** - * @param mixed[] $superset - */ - public function notSubset(array $superset): ChainedValidator; - - public function notSymbolicLink(): ChainedValidator; - - public function notTime(string $format = 'H:i:s'): ChainedValidator; - - public function notTld(): ChainedValidator; - - public function notTrueVal(): ChainedValidator; - - public function notUnique(): ChainedValidator; - - public function notUploaded(): ChainedValidator; - - public function notUppercase(): ChainedValidator; - - public function notUrl(): ChainedValidator; - - public function notUuid(?int $version = null): ChainedValidator; - - public function notVersion(): ChainedValidator; - - public function notVideoUrl(?string $service = null): ChainedValidator; - - public function notVowel(string ...$additionalChars): ChainedValidator; - - public function notWhen(Rule $when, Rule $then, ?Rule $else = null): ChainedValidator; - - public function notWritable(): ChainedValidator; - - public function notXdigit(string ...$additionalChars): ChainedValidator; - - public function notYes(bool $useLocale = false): ChainedValidator; -} diff --git a/library/Mixins/ChainedNullOr.php b/library/Mixins/ChainedNullOr.php deleted file mode 100644 index a54834d75..000000000 --- a/library/Mixins/ChainedNullOr.php +++ /dev/null @@ -1,363 +0,0 @@ - - * SPDX-License-Identifier: MIT - */ - -declare(strict_types=1); - -namespace Respect\Validation\Mixins; - -use DateTimeImmutable; -use Respect\Validation\Rule; - -interface ChainedNullOr -{ - public function nullOrAllOf(Rule $rule1, Rule $rule2, Rule ...$rules): ChainedValidator; - - public function nullOrAlnum(string ...$additionalChars): ChainedValidator; - - public function nullOrAlpha(string ...$additionalChars): ChainedValidator; - - public function nullOrAlwaysInvalid(): ChainedValidator; - - public function nullOrAlwaysValid(): ChainedValidator; - - public function nullOrAnyOf(Rule $rule1, Rule $rule2, Rule ...$rules): ChainedValidator; - - public function nullOrArrayType(): ChainedValidator; - - public function nullOrArrayVal(): ChainedValidator; - - public function nullOrAttributes(): ChainedValidator; - - public function nullOrBase( - int $base, - string $chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', - ): ChainedValidator; - - public function nullOrBase64(): ChainedValidator; - - public function nullOrBetween(mixed $minValue, mixed $maxValue): ChainedValidator; - - public function nullOrBetweenExclusive(mixed $minimum, mixed $maximum): ChainedValidator; - - public function nullOrBoolType(): ChainedValidator; - - public function nullOrBoolVal(): ChainedValidator; - - public function nullOrBsn(): ChainedValidator; - - public function nullOrCall(callable $callable, Rule $rule): ChainedValidator; - - public function nullOrCallableType(): ChainedValidator; - - public function nullOrCallback(callable $callback, mixed ...$arguments): ChainedValidator; - - public function nullOrCharset(string $charset, string ...$charsets): ChainedValidator; - - public function nullOrCnh(): ChainedValidator; - - public function nullOrCnpj(): ChainedValidator; - - public function nullOrConsecutive(Rule $rule1, Rule $rule2, Rule ...$rules): ChainedValidator; - - public function nullOrConsonant(string ...$additionalChars): ChainedValidator; - - public function nullOrContains(mixed $containsValue, bool $identical = false): ChainedValidator; - - /** - * @param non-empty-array $needles - */ - public function nullOrContainsAny(array $needles, bool $identical = false): ChainedValidator; - - public function nullOrControl(string ...$additionalChars): ChainedValidator; - - public function nullOrCountable(): ChainedValidator; - - /** - * @param "alpha-2"|"alpha-3"|"numeric" $set - */ - public function nullOrCountryCode(string $set = 'alpha-2'): ChainedValidator; - - public function nullOrCpf(): ChainedValidator; - - public function nullOrCreditCard(string $brand = 'Any'): ChainedValidator; - - /** - * @param "alpha-3"|"numeric" $set - */ - public function nullOrCurrencyCode(string $set = 'alpha-3'): ChainedValidator; - - public function nullOrDate(string $format = 'Y-m-d'): ChainedValidator; - - public function nullOrDateTime(?string $format = null): ChainedValidator; - - /** - * @param "years"|"months"|"days"|"hours"|"minutes"|"seconds"|"microseconds" $type - */ - public function nullOrDateTimeDiff( - string $type, - Rule $rule, - ?string $format = null, - ?DateTimeImmutable $now = null, - ): ChainedValidator; - - public function nullOrDecimal(int $decimals): ChainedValidator; - - public function nullOrDigit(string ...$additionalChars): ChainedValidator; - - public function nullOrDirectory(): ChainedValidator; - - public function nullOrDomain(bool $tldCheck = true): ChainedValidator; - - public function nullOrEach(Rule $rule): ChainedValidator; - - public function nullOrEmail(): ChainedValidator; - - public function nullOrEndsWith(mixed $endValue, bool $identical = false): ChainedValidator; - - public function nullOrEquals(mixed $compareTo): ChainedValidator; - - public function nullOrEquivalent(mixed $compareTo): ChainedValidator; - - public function nullOrEven(): ChainedValidator; - - public function nullOrExecutable(): ChainedValidator; - - public function nullOrExists(): ChainedValidator; - - public function nullOrExtension(string $extension): ChainedValidator; - - public function nullOrFactor(int $dividend): ChainedValidator; - - public function nullOrFalseVal(): ChainedValidator; - - public function nullOrFibonacci(): ChainedValidator; - - public function nullOrFile(): ChainedValidator; - - public function nullOrFilterVar(int $filter, mixed $options = null): ChainedValidator; - - public function nullOrFinite(): ChainedValidator; - - public function nullOrFloatType(): ChainedValidator; - - public function nullOrFloatVal(): ChainedValidator; - - public function nullOrGraph(string ...$additionalChars): ChainedValidator; - - public function nullOrGreaterThan(mixed $compareTo): ChainedValidator; - - public function nullOrGreaterThanOrEqual(mixed $compareTo): ChainedValidator; - - public function nullOrHetu(): ChainedValidator; - - public function nullOrHexRgbColor(): ChainedValidator; - - public function nullOrIban(): ChainedValidator; - - public function nullOrIdentical(mixed $compareTo): ChainedValidator; - - public function nullOrImage(): ChainedValidator; - - public function nullOrImei(): ChainedValidator; - - public function nullOrIn(mixed $haystack, bool $compareIdentical = false): ChainedValidator; - - public function nullOrInfinite(): ChainedValidator; - - /** - * @param class-string $class - */ - public function nullOrInstance(string $class): ChainedValidator; - - public function nullOrIntType(): ChainedValidator; - - public function nullOrIntVal(): ChainedValidator; - - public function nullOrIp(string $range = '*', ?int $options = null): ChainedValidator; - - public function nullOrIsbn(): ChainedValidator; - - public function nullOrIterableType(): ChainedValidator; - - public function nullOrIterableVal(): ChainedValidator; - - public function nullOrJson(): ChainedValidator; - - public function nullOrKey(string|int $key, Rule $rule): ChainedValidator; - - public function nullOrKeyExists(string|int $key): ChainedValidator; - - public function nullOrKeyOptional(string|int $key, Rule $rule): ChainedValidator; - - public function nullOrKeySet(Rule $rule, Rule ...$rules): ChainedValidator; - - /** - * @param "alpha-2"|"alpha-3" $set - */ - public function nullOrLanguageCode(string $set = 'alpha-2'): ChainedValidator; - - /** - * @param callable(mixed): Rule $ruleCreator - */ - public function nullOrLazy(callable $ruleCreator): ChainedValidator; - - public function nullOrLeapDate(string $format): ChainedValidator; - - public function nullOrLeapYear(): ChainedValidator; - - public function nullOrLength(Rule $rule): ChainedValidator; - - public function nullOrLessThan(mixed $compareTo): ChainedValidator; - - public function nullOrLessThanOrEqual(mixed $compareTo): ChainedValidator; - - public function nullOrLowercase(): ChainedValidator; - - public function nullOrLuhn(): ChainedValidator; - - public function nullOrMacAddress(): ChainedValidator; - - public function nullOrMax(Rule $rule): ChainedValidator; - - public function nullOrMimetype(string $mimetype): ChainedValidator; - - public function nullOrMin(Rule $rule): ChainedValidator; - - public function nullOrMultiple(int $multipleOf): ChainedValidator; - - public function nullOrNegative(): ChainedValidator; - - public function nullOrNfeAccessKey(): ChainedValidator; - - public function nullOrNif(): ChainedValidator; - - public function nullOrNip(): ChainedValidator; - - public function nullOrNo(bool $useLocale = false): ChainedValidator; - - public function nullOrNoWhitespace(): ChainedValidator; - - public function nullOrNoneOf(Rule $rule1, Rule $rule2, Rule ...$rules): ChainedValidator; - - public function nullOrNot(Rule $rule): ChainedValidator; - - public function nullOrNotBlank(): ChainedValidator; - - public function nullOrNotEmoji(): ChainedValidator; - - public function nullOrNotEmpty(): ChainedValidator; - - public function nullOrNullType(): ChainedValidator; - - public function nullOrNumber(): ChainedValidator; - - public function nullOrNumericVal(): ChainedValidator; - - public function nullOrObjectType(): ChainedValidator; - - public function nullOrOdd(): ChainedValidator; - - public function nullOrOneOf(Rule $rule1, Rule $rule2, Rule ...$rules): ChainedValidator; - - public function nullOrPerfectSquare(): ChainedValidator; - - public function nullOrPesel(): ChainedValidator; - - public function nullOrPhone(?string $countryCode = null): ChainedValidator; - - public function nullOrPhpLabel(): ChainedValidator; - - public function nullOrPis(): ChainedValidator; - - public function nullOrPolishIdCard(): ChainedValidator; - - public function nullOrPortugueseNif(): ChainedValidator; - - public function nullOrPositive(): ChainedValidator; - - public function nullOrPostalCode(string $countryCode, bool $formatted = false): ChainedValidator; - - public function nullOrPrimeNumber(): ChainedValidator; - - public function nullOrPrintable(string ...$additionalChars): ChainedValidator; - - public function nullOrProperty(string $propertyName, Rule $rule): ChainedValidator; - - public function nullOrPropertyExists(string $propertyName): ChainedValidator; - - public function nullOrPropertyOptional(string $propertyName, Rule $rule): ChainedValidator; - - public function nullOrPublicDomainSuffix(): ChainedValidator; - - public function nullOrPunct(string ...$additionalChars): ChainedValidator; - - public function nullOrReadable(): ChainedValidator; - - public function nullOrRegex(string $regex): ChainedValidator; - - public function nullOrResourceType(): ChainedValidator; - - public function nullOrRoman(): ChainedValidator; - - public function nullOrScalarVal(): ChainedValidator; - - /** - * @param "B"|"KB"|"MB"|"GB"|"TB"|"PB"|"EB"|"ZB"|"YB" $unit - */ - public function nullOrSize(string $unit, Rule $rule): ChainedValidator; - - public function nullOrSlug(): ChainedValidator; - - public function nullOrSorted(string $direction): ChainedValidator; - - public function nullOrSpace(string ...$additionalChars): ChainedValidator; - - public function nullOrStartsWith(mixed $startValue, bool $identical = false): ChainedValidator; - - public function nullOrStringType(): ChainedValidator; - - public function nullOrStringVal(): ChainedValidator; - - public function nullOrSubdivisionCode(string $countryCode): ChainedValidator; - - /** - * @param mixed[] $superset - */ - public function nullOrSubset(array $superset): ChainedValidator; - - public function nullOrSymbolicLink(): ChainedValidator; - - public function nullOrTime(string $format = 'H:i:s'): ChainedValidator; - - public function nullOrTld(): ChainedValidator; - - public function nullOrTrueVal(): ChainedValidator; - - public function nullOrUnique(): ChainedValidator; - - public function nullOrUploaded(): ChainedValidator; - - public function nullOrUppercase(): ChainedValidator; - - public function nullOrUrl(): ChainedValidator; - - public function nullOrUuid(?int $version = null): ChainedValidator; - - public function nullOrVersion(): ChainedValidator; - - public function nullOrVideoUrl(?string $service = null): ChainedValidator; - - public function nullOrVowel(string ...$additionalChars): ChainedValidator; - - public function nullOrWhen(Rule $when, Rule $then, ?Rule $else = null): ChainedValidator; - - public function nullOrWritable(): ChainedValidator; - - public function nullOrXdigit(string ...$additionalChars): ChainedValidator; - - public function nullOrYes(bool $useLocale = false): ChainedValidator; -} diff --git a/library/Mixins/ChainedUndefOr.php b/library/Mixins/ChainedUndefOr.php deleted file mode 100644 index cb11cc387..000000000 --- a/library/Mixins/ChainedUndefOr.php +++ /dev/null @@ -1,361 +0,0 @@ - - * SPDX-License-Identifier: MIT - */ - -declare(strict_types=1); - -namespace Respect\Validation\Mixins; - -use DateTimeImmutable; -use Respect\Validation\Rule; - -interface ChainedUndefOr -{ - public function undefOrAllOf(Rule $rule1, Rule $rule2, Rule ...$rules): ChainedValidator; - - public function undefOrAlnum(string ...$additionalChars): ChainedValidator; - - public function undefOrAlpha(string ...$additionalChars): ChainedValidator; - - public function undefOrAlwaysInvalid(): ChainedValidator; - - public function undefOrAlwaysValid(): ChainedValidator; - - public function undefOrAnyOf(Rule $rule1, Rule $rule2, Rule ...$rules): ChainedValidator; - - public function undefOrArrayType(): ChainedValidator; - - public function undefOrArrayVal(): ChainedValidator; - - public function undefOrBase( - int $base, - string $chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', - ): ChainedValidator; - - public function undefOrBase64(): ChainedValidator; - - public function undefOrBetween(mixed $minValue, mixed $maxValue): ChainedValidator; - - public function undefOrBetweenExclusive(mixed $minimum, mixed $maximum): ChainedValidator; - - public function undefOrBoolType(): ChainedValidator; - - public function undefOrBoolVal(): ChainedValidator; - - public function undefOrBsn(): ChainedValidator; - - public function undefOrCall(callable $callable, Rule $rule): ChainedValidator; - - public function undefOrCallableType(): ChainedValidator; - - public function undefOrCallback(callable $callback, mixed ...$arguments): ChainedValidator; - - public function undefOrCharset(string $charset, string ...$charsets): ChainedValidator; - - public function undefOrCnh(): ChainedValidator; - - public function undefOrCnpj(): ChainedValidator; - - public function undefOrConsecutive(Rule $rule1, Rule $rule2, Rule ...$rules): ChainedValidator; - - public function undefOrConsonant(string ...$additionalChars): ChainedValidator; - - public function undefOrContains(mixed $containsValue, bool $identical = false): ChainedValidator; - - /** - * @param non-empty-array $needles - */ - public function undefOrContainsAny(array $needles, bool $identical = false): ChainedValidator; - - public function undefOrControl(string ...$additionalChars): ChainedValidator; - - public function undefOrCountable(): ChainedValidator; - - /** - * @param "alpha-2"|"alpha-3"|"numeric" $set - */ - public function undefOrCountryCode(string $set = 'alpha-2'): ChainedValidator; - - public function undefOrCpf(): ChainedValidator; - - public function undefOrCreditCard(string $brand = 'Any'): ChainedValidator; - - /** - * @param "alpha-3"|"numeric" $set - */ - public function undefOrCurrencyCode(string $set = 'alpha-3'): ChainedValidator; - - public function undefOrDate(string $format = 'Y-m-d'): ChainedValidator; - - public function undefOrDateTime(?string $format = null): ChainedValidator; - - /** - * @param "years"|"months"|"days"|"hours"|"minutes"|"seconds"|"microseconds" $type - */ - public function undefOrDateTimeDiff( - string $type, - Rule $rule, - ?string $format = null, - ?DateTimeImmutable $now = null, - ): ChainedValidator; - - public function undefOrDecimal(int $decimals): ChainedValidator; - - public function undefOrDigit(string ...$additionalChars): ChainedValidator; - - public function undefOrDirectory(): ChainedValidator; - - public function undefOrDomain(bool $tldCheck = true): ChainedValidator; - - public function undefOrEach(Rule $rule): ChainedValidator; - - public function undefOrEmail(): ChainedValidator; - - public function undefOrEndsWith(mixed $endValue, bool $identical = false): ChainedValidator; - - public function undefOrEquals(mixed $compareTo): ChainedValidator; - - public function undefOrEquivalent(mixed $compareTo): ChainedValidator; - - public function undefOrEven(): ChainedValidator; - - public function undefOrExecutable(): ChainedValidator; - - public function undefOrExists(): ChainedValidator; - - public function undefOrExtension(string $extension): ChainedValidator; - - public function undefOrFactor(int $dividend): ChainedValidator; - - public function undefOrFalseVal(): ChainedValidator; - - public function undefOrFibonacci(): ChainedValidator; - - public function undefOrFile(): ChainedValidator; - - public function undefOrFilterVar(int $filter, mixed $options = null): ChainedValidator; - - public function undefOrFinite(): ChainedValidator; - - public function undefOrFloatType(): ChainedValidator; - - public function undefOrFloatVal(): ChainedValidator; - - public function undefOrGraph(string ...$additionalChars): ChainedValidator; - - public function undefOrGreaterThan(mixed $compareTo): ChainedValidator; - - public function undefOrGreaterThanOrEqual(mixed $compareTo): ChainedValidator; - - public function undefOrHetu(): ChainedValidator; - - public function undefOrHexRgbColor(): ChainedValidator; - - public function undefOrIban(): ChainedValidator; - - public function undefOrIdentical(mixed $compareTo): ChainedValidator; - - public function undefOrImage(): ChainedValidator; - - public function undefOrImei(): ChainedValidator; - - public function undefOrIn(mixed $haystack, bool $compareIdentical = false): ChainedValidator; - - public function undefOrInfinite(): ChainedValidator; - - /** - * @param class-string $class - */ - public function undefOrInstance(string $class): ChainedValidator; - - public function undefOrIntType(): ChainedValidator; - - public function undefOrIntVal(): ChainedValidator; - - public function undefOrIp(string $range = '*', ?int $options = null): ChainedValidator; - - public function undefOrIsbn(): ChainedValidator; - - public function undefOrIterableType(): ChainedValidator; - - public function undefOrIterableVal(): ChainedValidator; - - public function undefOrJson(): ChainedValidator; - - public function undefOrKey(string|int $key, Rule $rule): ChainedValidator; - - public function undefOrKeyExists(string|int $key): ChainedValidator; - - public function undefOrKeyOptional(string|int $key, Rule $rule): ChainedValidator; - - public function undefOrKeySet(Rule $rule, Rule ...$rules): ChainedValidator; - - /** - * @param "alpha-2"|"alpha-3" $set - */ - public function undefOrLanguageCode(string $set = 'alpha-2'): ChainedValidator; - - /** - * @param callable(mixed): Rule $ruleCreator - */ - public function undefOrLazy(callable $ruleCreator): ChainedValidator; - - public function undefOrLeapDate(string $format): ChainedValidator; - - public function undefOrLeapYear(): ChainedValidator; - - public function undefOrLength(Rule $rule): ChainedValidator; - - public function undefOrLessThan(mixed $compareTo): ChainedValidator; - - public function undefOrLessThanOrEqual(mixed $compareTo): ChainedValidator; - - public function undefOrLowercase(): ChainedValidator; - - public function undefOrLuhn(): ChainedValidator; - - public function undefOrMacAddress(): ChainedValidator; - - public function undefOrMax(Rule $rule): ChainedValidator; - - public function undefOrMimetype(string $mimetype): ChainedValidator; - - public function undefOrMin(Rule $rule): ChainedValidator; - - public function undefOrMultiple(int $multipleOf): ChainedValidator; - - public function undefOrNegative(): ChainedValidator; - - public function undefOrNfeAccessKey(): ChainedValidator; - - public function undefOrNif(): ChainedValidator; - - public function undefOrNip(): ChainedValidator; - - public function undefOrNo(bool $useLocale = false): ChainedValidator; - - public function undefOrNoWhitespace(): ChainedValidator; - - public function undefOrNoneOf(Rule $rule1, Rule $rule2, Rule ...$rules): ChainedValidator; - - public function undefOrNot(Rule $rule): ChainedValidator; - - public function undefOrNotBlank(): ChainedValidator; - - public function undefOrNotEmoji(): ChainedValidator; - - public function undefOrNotEmpty(): ChainedValidator; - - public function undefOrNullType(): ChainedValidator; - - public function undefOrNumber(): ChainedValidator; - - public function undefOrNumericVal(): ChainedValidator; - - public function undefOrObjectType(): ChainedValidator; - - public function undefOrOdd(): ChainedValidator; - - public function undefOrOneOf(Rule $rule1, Rule $rule2, Rule ...$rules): ChainedValidator; - - public function undefOrPerfectSquare(): ChainedValidator; - - public function undefOrPesel(): ChainedValidator; - - public function undefOrPhone(?string $countryCode = null): ChainedValidator; - - public function undefOrPhpLabel(): ChainedValidator; - - public function undefOrPis(): ChainedValidator; - - public function undefOrPolishIdCard(): ChainedValidator; - - public function undefOrPortugueseNif(): ChainedValidator; - - public function undefOrPositive(): ChainedValidator; - - public function undefOrPostalCode(string $countryCode, bool $formatted = false): ChainedValidator; - - public function undefOrPrimeNumber(): ChainedValidator; - - public function undefOrPrintable(string ...$additionalChars): ChainedValidator; - - public function undefOrProperty(string $propertyName, Rule $rule): ChainedValidator; - - public function undefOrPropertyExists(string $propertyName): ChainedValidator; - - public function undefOrPropertyOptional(string $propertyName, Rule $rule): ChainedValidator; - - public function undefOrPublicDomainSuffix(): ChainedValidator; - - public function undefOrPunct(string ...$additionalChars): ChainedValidator; - - public function undefOrReadable(): ChainedValidator; - - public function undefOrRegex(string $regex): ChainedValidator; - - public function undefOrResourceType(): ChainedValidator; - - public function undefOrRoman(): ChainedValidator; - - public function undefOrScalarVal(): ChainedValidator; - - /** - * @param "B"|"KB"|"MB"|"GB"|"TB"|"PB"|"EB"|"ZB"|"YB" $unit - */ - public function undefOrSize(string $unit, Rule $rule): ChainedValidator; - - public function undefOrSlug(): ChainedValidator; - - public function undefOrSorted(string $direction): ChainedValidator; - - public function undefOrSpace(string ...$additionalChars): ChainedValidator; - - public function undefOrStartsWith(mixed $startValue, bool $identical = false): ChainedValidator; - - public function undefOrStringType(): ChainedValidator; - - public function undefOrStringVal(): ChainedValidator; - - public function undefOrSubdivisionCode(string $countryCode): ChainedValidator; - - /** - * @param mixed[] $superset - */ - public function undefOrSubset(array $superset): ChainedValidator; - - public function undefOrSymbolicLink(): ChainedValidator; - - public function undefOrTime(string $format = 'H:i:s'): ChainedValidator; - - public function undefOrTld(): ChainedValidator; - - public function undefOrTrueVal(): ChainedValidator; - - public function undefOrUnique(): ChainedValidator; - - public function undefOrUploaded(): ChainedValidator; - - public function undefOrUppercase(): ChainedValidator; - - public function undefOrUrl(): ChainedValidator; - - public function undefOrUuid(?int $version = null): ChainedValidator; - - public function undefOrVersion(): ChainedValidator; - - public function undefOrVideoUrl(?string $service = null): ChainedValidator; - - public function undefOrVowel(string ...$additionalChars): ChainedValidator; - - public function undefOrWhen(Rule $when, Rule $then, ?Rule $else = null): ChainedValidator; - - public function undefOrWritable(): ChainedValidator; - - public function undefOrXdigit(string ...$additionalChars): ChainedValidator; - - public function undefOrYes(bool $useLocale = false): ChainedValidator; -} diff --git a/library/Mixins/ChainedValidator.php b/library/Mixins/ChainedValidator.php deleted file mode 100644 index 18a51b7a3..000000000 --- a/library/Mixins/ChainedValidator.php +++ /dev/null @@ -1,409 +0,0 @@ - - * SPDX-License-Identifier: MIT - */ - -declare(strict_types=1); - -namespace Respect\Validation\Mixins; - -use DateTimeImmutable; -use Respect\Validation\Exceptions\ValidationException; -use Respect\Validation\Rule; -use Throwable; - -interface ChainedValidator extends - Rule, - ChainedKey, - ChainedLength, - ChainedMax, - ChainedMin, - ChainedNot, - ChainedNullOr, - ChainedProperty, - ChainedUndefOr -{ - public function isValid(mixed $input): bool; - - /** - * @param array|callable(ValidationException): Throwable|string|Throwable|null $template - */ - public function assert(mixed $input, array|callable|string|Throwable|null $template = null): void; - - /** - * @param array $templates - */ - public function setTemplates(array $templates): ChainedValidator; - - /** - * @return array - */ - public function getRules(): array; - - public function allOf(Rule $rule1, Rule $rule2, Rule ...$rules): ChainedValidator; - - public function alnum(string ...$additionalChars): ChainedValidator; - - public function alpha(string ...$additionalChars): ChainedValidator; - - public function alwaysInvalid(): ChainedValidator; - - public function alwaysValid(): ChainedValidator; - - public function anyOf(Rule $rule1, Rule $rule2, Rule ...$rules): ChainedValidator; - - public function arrayType(): ChainedValidator; - - public function arrayVal(): ChainedValidator; - - public function attributes(): ChainedValidator; - - public function base( - int $base, - string $chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', - ): ChainedValidator; - - public function base64(): ChainedValidator; - - public function between(mixed $minValue, mixed $maxValue): ChainedValidator; - - public function betweenExclusive(mixed $minimum, mixed $maximum): ChainedValidator; - - public function boolType(): ChainedValidator; - - public function boolVal(): ChainedValidator; - - public function bsn(): ChainedValidator; - - public function call(callable $callable, Rule $rule): ChainedValidator; - - public function callableType(): ChainedValidator; - - public function callback(callable $callback, mixed ...$arguments): ChainedValidator; - - public function charset(string $charset, string ...$charsets): ChainedValidator; - - public function cnh(): ChainedValidator; - - public function cnpj(): ChainedValidator; - - public function consecutive(Rule $rule1, Rule $rule2, Rule ...$rules): ChainedValidator; - - public function consonant(string ...$additionalChars): ChainedValidator; - - public function contains(mixed $containsValue, bool $identical = false): ChainedValidator; - - /** - * @param non-empty-array $needles - */ - public function containsAny(array $needles, bool $identical = false): ChainedValidator; - - public function control(string ...$additionalChars): ChainedValidator; - - public function countable(): ChainedValidator; - - /** - * @param "alpha-2"|"alpha-3"|"numeric" $set - */ - public function countryCode(string $set = 'alpha-2'): ChainedValidator; - - public function cpf(): ChainedValidator; - - public function creditCard(string $brand = 'Any'): ChainedValidator; - - /** - * @param "alpha-3"|"numeric" $set - */ - public function currencyCode(string $set = 'alpha-3'): ChainedValidator; - - public function date(string $format = 'Y-m-d'): ChainedValidator; - - public function dateTime(?string $format = null): ChainedValidator; - - /** - * @param "years"|"months"|"days"|"hours"|"minutes"|"seconds"|"microseconds" $type - */ - public function dateTimeDiff( - string $type, - Rule $rule, - ?string $format = null, - ?DateTimeImmutable $now = null, - ): ChainedValidator; - - public function decimal(int $decimals): ChainedValidator; - - public function digit(string ...$additionalChars): ChainedValidator; - - public function directory(): ChainedValidator; - - public function domain(bool $tldCheck = true): ChainedValidator; - - public function each(Rule $rule): ChainedValidator; - - public function email(): ChainedValidator; - - public function endsWith(mixed $endValue, bool $identical = false): ChainedValidator; - - public function equals(mixed $compareTo): ChainedValidator; - - public function equivalent(mixed $compareTo): ChainedValidator; - - public function even(): ChainedValidator; - - public function executable(): ChainedValidator; - - public function exists(): ChainedValidator; - - public function extension(string $extension): ChainedValidator; - - public function factor(int $dividend): ChainedValidator; - - public function falseVal(): ChainedValidator; - - public function fibonacci(): ChainedValidator; - - public function file(): ChainedValidator; - - public function filterVar(int $filter, mixed $options = null): ChainedValidator; - - public function finite(): ChainedValidator; - - public function floatType(): ChainedValidator; - - public function floatVal(): ChainedValidator; - - public function graph(string ...$additionalChars): ChainedValidator; - - public function greaterThan(mixed $compareTo): ChainedValidator; - - public function greaterThanOrEqual(mixed $compareTo): ChainedValidator; - - public function hetu(): ChainedValidator; - - public function hexRgbColor(): ChainedValidator; - - public function iban(): ChainedValidator; - - public function identical(mixed $compareTo): ChainedValidator; - - public function image(): ChainedValidator; - - public function imei(): ChainedValidator; - - public function in(mixed $haystack, bool $compareIdentical = false): ChainedValidator; - - public function infinite(): ChainedValidator; - - /** - * @param class-string $class - */ - public function instance(string $class): ChainedValidator; - - public function intType(): ChainedValidator; - - public function intVal(): ChainedValidator; - - public function ip(string $range = '*', ?int $options = null): ChainedValidator; - - public function isbn(): ChainedValidator; - - public function iterableType(): ChainedValidator; - - public function iterableVal(): ChainedValidator; - - public function json(): ChainedValidator; - - public function key(string|int $key, Rule $rule): ChainedValidator; - - public function keyExists(string|int $key): ChainedValidator; - - public function keyOptional(string|int $key, Rule $rule): ChainedValidator; - - public function keySet(Rule $rule, Rule ...$rules): ChainedValidator; - - /** - * @param "alpha-2"|"alpha-3" $set - */ - public function languageCode(string $set = 'alpha-2'): ChainedValidator; - - /** - * @param callable(mixed): Rule $ruleCreator - */ - public function lazy(callable $ruleCreator): ChainedValidator; - - public function leapDate(string $format): ChainedValidator; - - public function leapYear(): ChainedValidator; - - public function length(Rule $rule): ChainedValidator; - - public function lessThan(mixed $compareTo): ChainedValidator; - - public function lessThanOrEqual(mixed $compareTo): ChainedValidator; - - public function lowercase(): ChainedValidator; - - public function luhn(): ChainedValidator; - - public function macAddress(): ChainedValidator; - - public function max(Rule $rule): ChainedValidator; - - public function mimetype(string $mimetype): ChainedValidator; - - public function min(Rule $rule): ChainedValidator; - - public function multiple(int $multipleOf): ChainedValidator; - - public function negative(): ChainedValidator; - - public function nfeAccessKey(): ChainedValidator; - - public function nif(): ChainedValidator; - - public function nip(): ChainedValidator; - - public function no(bool $useLocale = false): ChainedValidator; - - public function noWhitespace(): ChainedValidator; - - public function noneOf(Rule $rule1, Rule $rule2, Rule ...$rules): ChainedValidator; - - public function not(Rule $rule): ChainedValidator; - - public function notBlank(): ChainedValidator; - - public function notEmoji(): ChainedValidator; - - public function notEmpty(): ChainedValidator; - - public function notOptional(): ChainedValidator; - - public function notUndef(): ChainedValidator; - - public function nullOr(Rule $rule): ChainedValidator; - - public function nullType(): ChainedValidator; - - /** - * @deprecated Use {@see nullOr()} instead. - */ - public function nullable(Rule $rule): ChainedValidator; - - public function number(): ChainedValidator; - - public function numericVal(): ChainedValidator; - - public function objectType(): ChainedValidator; - - public function odd(): ChainedValidator; - - public function oneOf(Rule $rule1, Rule $rule2, Rule ...$rules): ChainedValidator; - - /** - * @deprecated Use {@see undefOr()} instead. - */ - public function optional(Rule $rule): ChainedValidator; - - public function perfectSquare(): ChainedValidator; - - public function pesel(): ChainedValidator; - - public function phone(?string $countryCode = null): ChainedValidator; - - public function phpLabel(): ChainedValidator; - - public function pis(): ChainedValidator; - - public function polishIdCard(): ChainedValidator; - - public function portugueseNif(): ChainedValidator; - - public function positive(): ChainedValidator; - - public function postalCode(string $countryCode, bool $formatted = false): ChainedValidator; - - public function primeNumber(): ChainedValidator; - - public function printable(string ...$additionalChars): ChainedValidator; - - public function property(string $propertyName, Rule $rule): ChainedValidator; - - public function propertyExists(string $propertyName): ChainedValidator; - - public function propertyOptional(string $propertyName, Rule $rule): ChainedValidator; - - public function publicDomainSuffix(): ChainedValidator; - - public function punct(string ...$additionalChars): ChainedValidator; - - public function readable(): ChainedValidator; - - public function regex(string $regex): ChainedValidator; - - public function resourceType(): ChainedValidator; - - public function roman(): ChainedValidator; - - public function scalarVal(): ChainedValidator; - - /** - * @param "B"|"KB"|"MB"|"GB"|"TB"|"PB"|"EB"|"ZB"|"YB" $unit - */ - public function size(string $unit, Rule $rule): ChainedValidator; - - public function slug(): ChainedValidator; - - public function sorted(string $direction): ChainedValidator; - - public function space(string ...$additionalChars): ChainedValidator; - - public function startsWith(mixed $startValue, bool $identical = false): ChainedValidator; - - public function stringType(): ChainedValidator; - - public function stringVal(): ChainedValidator; - - public function subdivisionCode(string $countryCode): ChainedValidator; - - /** - * @param mixed[] $superset - */ - public function subset(array $superset): ChainedValidator; - - public function symbolicLink(): ChainedValidator; - - public function time(string $format = 'H:i:s'): ChainedValidator; - - public function tld(): ChainedValidator; - - public function trueVal(): ChainedValidator; - - public function undefOr(Rule $rule): ChainedValidator; - - public function unique(): ChainedValidator; - - public function uploaded(): ChainedValidator; - - public function uppercase(): ChainedValidator; - - public function url(): ChainedValidator; - - public function uuid(?int $version = null): ChainedValidator; - - public function version(): ChainedValidator; - - public function videoUrl(?string $service = null): ChainedValidator; - - public function vowel(string ...$additionalChars): ChainedValidator; - - public function when(Rule $when, Rule $then, ?Rule $else = null): ChainedValidator; - - public function writable(): ChainedValidator; - - public function xdigit(string ...$additionalChars): ChainedValidator; - - public function yes(bool $useLocale = false): ChainedValidator; -} diff --git a/library/Mixins/KeyBuilder.php b/library/Mixins/KeyBuilder.php new file mode 100644 index 000000000..748d0de8a --- /dev/null +++ b/library/Mixins/KeyBuilder.php @@ -0,0 +1,351 @@ + + * SPDX-License-Identifier: MIT + */ + +declare(strict_types=1); + +namespace Respect\Validation\Mixins; + +use DateTimeImmutable; +use Respect\Validation\Rule; + +interface KeyBuilder +{ + public static function keyAllOf(int|string $key, Rule $rule1, Rule $rule2, Rule ...$rules): Chain; + + public static function keyAlnum(int|string $key, string ...$additionalChars): Chain; + + public static function keyAlpha(int|string $key, string ...$additionalChars): Chain; + + public static function keyAlwaysInvalid(int|string $key): Chain; + + public static function keyAlwaysValid(int|string $key): Chain; + + public static function keyAnyOf(int|string $key, Rule $rule1, Rule $rule2, Rule ...$rules): Chain; + + public static function keyArrayType(int|string $key): Chain; + + public static function keyArrayVal(int|string $key): Chain; + + public static function keyBase( + int|string $key, + int $base, + string $chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', + ): Chain; + + public static function keyBase64(int|string $key): Chain; + + public static function keyBetween(int|string $key, mixed $minValue, mixed $maxValue): Chain; + + public static function keyBetweenExclusive(int|string $key, mixed $minimum, mixed $maximum): Chain; + + public static function keyBoolType(int|string $key): Chain; + + public static function keyBoolVal(int|string $key): Chain; + + public static function keyBsn(int|string $key): Chain; + + public static function keyCall(int|string $key, callable $callable, Rule $rule): Chain; + + public static function keyCallableType(int|string $key): Chain; + + public static function keyCallback(int|string $key, callable $callback, mixed ...$arguments): Chain; + + public static function keyCharset(int|string $key, string $charset, string ...$charsets): Chain; + + public static function keyCnh(int|string $key): Chain; + + public static function keyCnpj(int|string $key): Chain; + + public static function keyConsecutive(int|string $key, Rule $rule1, Rule $rule2, Rule ...$rules): Chain; + + public static function keyConsonant(int|string $key, string ...$additionalChars): Chain; + + public static function keyContains(int|string $key, mixed $containsValue, bool $identical = false): Chain; + + /** + * @param non-empty-array $needles + */ + public static function keyContainsAny(int|string $key, array $needles, bool $identical = false): Chain; + + public static function keyControl(int|string $key, string ...$additionalChars): Chain; + + public static function keyCountable(int|string $key): Chain; + + /** + * @param "alpha-2"|"alpha-3"|"numeric" $set + */ + public static function keyCountryCode(int|string $key, string $set = 'alpha-2'): Chain; + + public static function keyCpf(int|string $key): Chain; + + public static function keyCreditCard(int|string $key, string $brand = 'Any'): Chain; + + /** + * @param "alpha-3"|"numeric" $set + */ + public static function keyCurrencyCode(int|string $key, string $set = 'alpha-3'): Chain; + + public static function keyDate(int|string $key, string $format = 'Y-m-d'): Chain; + + public static function keyDateTime(int|string $key, ?string $format = null): Chain; + + /** + * @param "years"|"months"|"days"|"hours"|"minutes"|"seconds"|"microseconds" $type + */ + public static function keyDateTimeDiff( + int|string $key, + string $type, + Rule $rule, + ?string $format = null, + ?DateTimeImmutable $now = null, + ): Chain; + + public static function keyDecimal(int|string $key, int $decimals): Chain; + + public static function keyDigit(int|string $key, string ...$additionalChars): Chain; + + public static function keyDirectory(int|string $key): Chain; + + public static function keyDomain(int|string $key, bool $tldCheck = true): Chain; + + public static function keyEach(int|string $key, Rule $rule): Chain; + + public static function keyEmail(int|string $key): Chain; + + public static function keyEndsWith(int|string $key, mixed $endValue, bool $identical = false): Chain; + + public static function keyEquals(int|string $key, mixed $compareTo): Chain; + + public static function keyEquivalent(int|string $key, mixed $compareTo): Chain; + + public static function keyEven(int|string $key): Chain; + + public static function keyExecutable(int|string $key): Chain; + + public static function keyExtension(int|string $key, string $extension): Chain; + + public static function keyFactor(int|string $key, int $dividend): Chain; + + public static function keyFalseVal(int|string $key): Chain; + + public static function keyFibonacci(int|string $key): Chain; + + public static function keyFile(int|string $key): Chain; + + public static function keyFilterVar(int|string $key, int $filter, mixed $options = null): Chain; + + public static function keyFinite(int|string $key): Chain; + + public static function keyFloatType(int|string $key): Chain; + + public static function keyFloatVal(int|string $key): Chain; + + public static function keyGraph(int|string $key, string ...$additionalChars): Chain; + + public static function keyGreaterThan(int|string $key, mixed $compareTo): Chain; + + public static function keyGreaterThanOrEqual(int|string $key, mixed $compareTo): Chain; + + public static function keyHetu(int|string $key): Chain; + + public static function keyHexRgbColor(int|string $key): Chain; + + public static function keyIban(int|string $key): Chain; + + public static function keyIdentical(int|string $key, mixed $compareTo): Chain; + + public static function keyImage(int|string $key): Chain; + + public static function keyImei(int|string $key): Chain; + + public static function keyIn(int|string $key, mixed $haystack, bool $compareIdentical = false): Chain; + + public static function keyInfinite(int|string $key): Chain; + + /** + * @param class-string $class + */ + public static function keyInstance(int|string $key, string $class): Chain; + + public static function keyIntType(int|string $key): Chain; + + public static function keyIntVal(int|string $key): Chain; + + public static function keyIp(int|string $key, string $range = '*', ?int $options = null): Chain; + + public static function keyIsbn(int|string $key): Chain; + + public static function keyIterableType(int|string $key): Chain; + + public static function keyIterableVal(int|string $key): Chain; + + public static function keyJson(int|string $key): Chain; + + /** + * @param "alpha-2"|"alpha-3" $set + */ + public static function keyLanguageCode(int|string $key, string $set = 'alpha-2'): Chain; + + /** + * @param callable(mixed): Rule $ruleCreator + */ + public static function keyLazy(int|string $key, callable $ruleCreator): Chain; + + public static function keyLeapDate(int|string $key, string $format): Chain; + + public static function keyLeapYear(int|string $key): Chain; + + public static function keyLength(int|string $key, Rule $rule): Chain; + + public static function keyLessThan(int|string $key, mixed $compareTo): Chain; + + public static function keyLessThanOrEqual(int|string $key, mixed $compareTo): Chain; + + public static function keyLowercase(int|string $key): Chain; + + public static function keyLuhn(int|string $key): Chain; + + public static function keyMacAddress(int|string $key): Chain; + + public static function keyMax(int|string $key, Rule $rule): Chain; + + public static function keyMimetype(int|string $key, string $mimetype): Chain; + + public static function keyMin(int|string $key, Rule $rule): Chain; + + public static function keyMultiple(int|string $key, int $multipleOf): Chain; + + public static function keyNegative(int|string $key): Chain; + + public static function keyNfeAccessKey(int|string $key): Chain; + + public static function keyNif(int|string $key): Chain; + + public static function keyNip(int|string $key): Chain; + + public static function keyNo(int|string $key, bool $useLocale = false): Chain; + + public static function keyNoWhitespace(int|string $key): Chain; + + public static function keyNoneOf(int|string $key, Rule $rule1, Rule $rule2, Rule ...$rules): Chain; + + public static function keyNot(int|string $key, Rule $rule): Chain; + + public static function keyNotBlank(int|string $key): Chain; + + public static function keyNotEmoji(int|string $key): Chain; + + public static function keyNotEmpty(int|string $key): Chain; + + public static function keyNotOptional(int|string $key): Chain; + + public static function keyNotUndef(int|string $key): Chain; + + public static function keyNullType(int|string $key): Chain; + + public static function keyNumber(int|string $key): Chain; + + public static function keyNumericVal(int|string $key): Chain; + + public static function keyObjectType(int|string $key): Chain; + + public static function keyOdd(int|string $key): Chain; + + public static function keyOneOf(int|string $key, Rule $rule1, Rule $rule2, Rule ...$rules): Chain; + + public static function keyPerfectSquare(int|string $key): Chain; + + public static function keyPesel(int|string $key): Chain; + + public static function keyPhone(int|string $key, ?string $countryCode = null): Chain; + + public static function keyPhpLabel(int|string $key): Chain; + + public static function keyPis(int|string $key): Chain; + + public static function keyPolishIdCard(int|string $key): Chain; + + public static function keyPortugueseNif(int|string $key): Chain; + + public static function keyPositive(int|string $key): Chain; + + public static function keyPostalCode(int|string $key, string $countryCode, bool $formatted = false): Chain; + + public static function keyPrimeNumber(int|string $key): Chain; + + public static function keyPrintable(int|string $key, string ...$additionalChars): Chain; + + public static function keyPublicDomainSuffix(int|string $key): Chain; + + public static function keyPunct(int|string $key, string ...$additionalChars): Chain; + + public static function keyReadable(int|string $key): Chain; + + public static function keyRegex(int|string $key, string $regex): Chain; + + public static function keyResourceType(int|string $key): Chain; + + public static function keyRoman(int|string $key): Chain; + + public static function keyScalarVal(int|string $key): Chain; + + /** + * @param "B"|"KB"|"MB"|"GB"|"TB"|"PB"|"EB"|"ZB"|"YB" $unit + */ + public static function keySize(int|string $key, string $unit, Rule $rule): Chain; + + public static function keySlug(int|string $key): Chain; + + public static function keySorted(int|string $key, string $direction): Chain; + + public static function keySpace(int|string $key, string ...$additionalChars): Chain; + + public static function keyStartsWith(int|string $key, mixed $startValue, bool $identical = false): Chain; + + public static function keyStringType(int|string $key): Chain; + + public static function keyStringVal(int|string $key): Chain; + + public static function keySubdivisionCode(int|string $key, string $countryCode): Chain; + + /** + * @param mixed[] $superset + */ + public static function keySubset(int|string $key, array $superset): Chain; + + public static function keySymbolicLink(int|string $key): Chain; + + public static function keyTime(int|string $key, string $format = 'H:i:s'): Chain; + + public static function keyTld(int|string $key): Chain; + + public static function keyTrueVal(int|string $key): Chain; + + public static function keyUnique(int|string $key): Chain; + + public static function keyUploaded(int|string $key): Chain; + + public static function keyUppercase(int|string $key): Chain; + + public static function keyUrl(int|string $key): Chain; + + public static function keyUuid(int|string $key, ?int $version = null): Chain; + + public static function keyVersion(int|string $key): Chain; + + public static function keyVideoUrl(int|string $key, ?string $service = null): Chain; + + public static function keyVowel(int|string $key, string ...$additionalChars): Chain; + + public static function keyWhen(int|string $key, Rule $when, Rule $then, ?Rule $else = null): Chain; + + public static function keyWritable(int|string $key): Chain; + + public static function keyXdigit(int|string $key, string ...$additionalChars): Chain; + + public static function keyYes(int|string $key, bool $useLocale = false): Chain; +} diff --git a/library/Mixins/KeyChain.php b/library/Mixins/KeyChain.php new file mode 100644 index 000000000..b448653f6 --- /dev/null +++ b/library/Mixins/KeyChain.php @@ -0,0 +1,351 @@ + + * SPDX-License-Identifier: MIT + */ + +declare(strict_types=1); + +namespace Respect\Validation\Mixins; + +use DateTimeImmutable; +use Respect\Validation\Rule; + +interface KeyChain +{ + public function keyAllOf(int|string $key, Rule $rule1, Rule $rule2, Rule ...$rules): Chain; + + public function keyAlnum(int|string $key, string ...$additionalChars): Chain; + + public function keyAlpha(int|string $key, string ...$additionalChars): Chain; + + public function keyAlwaysInvalid(int|string $key): Chain; + + public function keyAlwaysValid(int|string $key): Chain; + + public function keyAnyOf(int|string $key, Rule $rule1, Rule $rule2, Rule ...$rules): Chain; + + public function keyArrayType(int|string $key): Chain; + + public function keyArrayVal(int|string $key): Chain; + + public function keyBase( + int|string $key, + int $base, + string $chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', + ): Chain; + + public function keyBase64(int|string $key): Chain; + + public function keyBetween(int|string $key, mixed $minValue, mixed $maxValue): Chain; + + public function keyBetweenExclusive(int|string $key, mixed $minimum, mixed $maximum): Chain; + + public function keyBoolType(int|string $key): Chain; + + public function keyBoolVal(int|string $key): Chain; + + public function keyBsn(int|string $key): Chain; + + public function keyCall(int|string $key, callable $callable, Rule $rule): Chain; + + public function keyCallableType(int|string $key): Chain; + + public function keyCallback(int|string $key, callable $callback, mixed ...$arguments): Chain; + + public function keyCharset(int|string $key, string $charset, string ...$charsets): Chain; + + public function keyCnh(int|string $key): Chain; + + public function keyCnpj(int|string $key): Chain; + + public function keyConsecutive(int|string $key, Rule $rule1, Rule $rule2, Rule ...$rules): Chain; + + public function keyConsonant(int|string $key, string ...$additionalChars): Chain; + + public function keyContains(int|string $key, mixed $containsValue, bool $identical = false): Chain; + + /** + * @param non-empty-array $needles + */ + public function keyContainsAny(int|string $key, array $needles, bool $identical = false): Chain; + + public function keyControl(int|string $key, string ...$additionalChars): Chain; + + public function keyCountable(int|string $key): Chain; + + /** + * @param "alpha-2"|"alpha-3"|"numeric" $set + */ + public function keyCountryCode(int|string $key, string $set = 'alpha-2'): Chain; + + public function keyCpf(int|string $key): Chain; + + public function keyCreditCard(int|string $key, string $brand = 'Any'): Chain; + + /** + * @param "alpha-3"|"numeric" $set + */ + public function keyCurrencyCode(int|string $key, string $set = 'alpha-3'): Chain; + + public function keyDate(int|string $key, string $format = 'Y-m-d'): Chain; + + public function keyDateTime(int|string $key, ?string $format = null): Chain; + + /** + * @param "years"|"months"|"days"|"hours"|"minutes"|"seconds"|"microseconds" $type + */ + public function keyDateTimeDiff( + int|string $key, + string $type, + Rule $rule, + ?string $format = null, + ?DateTimeImmutable $now = null, + ): Chain; + + public function keyDecimal(int|string $key, int $decimals): Chain; + + public function keyDigit(int|string $key, string ...$additionalChars): Chain; + + public function keyDirectory(int|string $key): Chain; + + public function keyDomain(int|string $key, bool $tldCheck = true): Chain; + + public function keyEach(int|string $key, Rule $rule): Chain; + + public function keyEmail(int|string $key): Chain; + + public function keyEndsWith(int|string $key, mixed $endValue, bool $identical = false): Chain; + + public function keyEquals(int|string $key, mixed $compareTo): Chain; + + public function keyEquivalent(int|string $key, mixed $compareTo): Chain; + + public function keyEven(int|string $key): Chain; + + public function keyExecutable(int|string $key): Chain; + + public function keyExtension(int|string $key, string $extension): Chain; + + public function keyFactor(int|string $key, int $dividend): Chain; + + public function keyFalseVal(int|string $key): Chain; + + public function keyFibonacci(int|string $key): Chain; + + public function keyFile(int|string $key): Chain; + + public function keyFilterVar(int|string $key, int $filter, mixed $options = null): Chain; + + public function keyFinite(int|string $key): Chain; + + public function keyFloatType(int|string $key): Chain; + + public function keyFloatVal(int|string $key): Chain; + + public function keyGraph(int|string $key, string ...$additionalChars): Chain; + + public function keyGreaterThan(int|string $key, mixed $compareTo): Chain; + + public function keyGreaterThanOrEqual(int|string $key, mixed $compareTo): Chain; + + public function keyHetu(int|string $key): Chain; + + public function keyHexRgbColor(int|string $key): Chain; + + public function keyIban(int|string $key): Chain; + + public function keyIdentical(int|string $key, mixed $compareTo): Chain; + + public function keyImage(int|string $key): Chain; + + public function keyImei(int|string $key): Chain; + + public function keyIn(int|string $key, mixed $haystack, bool $compareIdentical = false): Chain; + + public function keyInfinite(int|string $key): Chain; + + /** + * @param class-string $class + */ + public function keyInstance(int|string $key, string $class): Chain; + + public function keyIntType(int|string $key): Chain; + + public function keyIntVal(int|string $key): Chain; + + public function keyIp(int|string $key, string $range = '*', ?int $options = null): Chain; + + public function keyIsbn(int|string $key): Chain; + + public function keyIterableType(int|string $key): Chain; + + public function keyIterableVal(int|string $key): Chain; + + public function keyJson(int|string $key): Chain; + + /** + * @param "alpha-2"|"alpha-3" $set + */ + public function keyLanguageCode(int|string $key, string $set = 'alpha-2'): Chain; + + /** + * @param callable(mixed): Rule $ruleCreator + */ + public function keyLazy(int|string $key, callable $ruleCreator): Chain; + + public function keyLeapDate(int|string $key, string $format): Chain; + + public function keyLeapYear(int|string $key): Chain; + + public function keyLength(int|string $key, Rule $rule): Chain; + + public function keyLessThan(int|string $key, mixed $compareTo): Chain; + + public function keyLessThanOrEqual(int|string $key, mixed $compareTo): Chain; + + public function keyLowercase(int|string $key): Chain; + + public function keyLuhn(int|string $key): Chain; + + public function keyMacAddress(int|string $key): Chain; + + public function keyMax(int|string $key, Rule $rule): Chain; + + public function keyMimetype(int|string $key, string $mimetype): Chain; + + public function keyMin(int|string $key, Rule $rule): Chain; + + public function keyMultiple(int|string $key, int $multipleOf): Chain; + + public function keyNegative(int|string $key): Chain; + + public function keyNfeAccessKey(int|string $key): Chain; + + public function keyNif(int|string $key): Chain; + + public function keyNip(int|string $key): Chain; + + public function keyNo(int|string $key, bool $useLocale = false): Chain; + + public function keyNoWhitespace(int|string $key): Chain; + + public function keyNoneOf(int|string $key, Rule $rule1, Rule $rule2, Rule ...$rules): Chain; + + public function keyNot(int|string $key, Rule $rule): Chain; + + public function keyNotBlank(int|string $key): Chain; + + public function keyNotEmoji(int|string $key): Chain; + + public function keyNotEmpty(int|string $key): Chain; + + public function keyNotOptional(int|string $key): Chain; + + public function keyNotUndef(int|string $key): Chain; + + public function keyNullType(int|string $key): Chain; + + public function keyNumber(int|string $key): Chain; + + public function keyNumericVal(int|string $key): Chain; + + public function keyObjectType(int|string $key): Chain; + + public function keyOdd(int|string $key): Chain; + + public function keyOneOf(int|string $key, Rule $rule1, Rule $rule2, Rule ...$rules): Chain; + + public function keyPerfectSquare(int|string $key): Chain; + + public function keyPesel(int|string $key): Chain; + + public function keyPhone(int|string $key, ?string $countryCode = null): Chain; + + public function keyPhpLabel(int|string $key): Chain; + + public function keyPis(int|string $key): Chain; + + public function keyPolishIdCard(int|string $key): Chain; + + public function keyPortugueseNif(int|string $key): Chain; + + public function keyPositive(int|string $key): Chain; + + public function keyPostalCode(int|string $key, string $countryCode, bool $formatted = false): Chain; + + public function keyPrimeNumber(int|string $key): Chain; + + public function keyPrintable(int|string $key, string ...$additionalChars): Chain; + + public function keyPublicDomainSuffix(int|string $key): Chain; + + public function keyPunct(int|string $key, string ...$additionalChars): Chain; + + public function keyReadable(int|string $key): Chain; + + public function keyRegex(int|string $key, string $regex): Chain; + + public function keyResourceType(int|string $key): Chain; + + public function keyRoman(int|string $key): Chain; + + public function keyScalarVal(int|string $key): Chain; + + /** + * @param "B"|"KB"|"MB"|"GB"|"TB"|"PB"|"EB"|"ZB"|"YB" $unit + */ + public function keySize(int|string $key, string $unit, Rule $rule): Chain; + + public function keySlug(int|string $key): Chain; + + public function keySorted(int|string $key, string $direction): Chain; + + public function keySpace(int|string $key, string ...$additionalChars): Chain; + + public function keyStartsWith(int|string $key, mixed $startValue, bool $identical = false): Chain; + + public function keyStringType(int|string $key): Chain; + + public function keyStringVal(int|string $key): Chain; + + public function keySubdivisionCode(int|string $key, string $countryCode): Chain; + + /** + * @param mixed[] $superset + */ + public function keySubset(int|string $key, array $superset): Chain; + + public function keySymbolicLink(int|string $key): Chain; + + public function keyTime(int|string $key, string $format = 'H:i:s'): Chain; + + public function keyTld(int|string $key): Chain; + + public function keyTrueVal(int|string $key): Chain; + + public function keyUnique(int|string $key): Chain; + + public function keyUploaded(int|string $key): Chain; + + public function keyUppercase(int|string $key): Chain; + + public function keyUrl(int|string $key): Chain; + + public function keyUuid(int|string $key, ?int $version = null): Chain; + + public function keyVersion(int|string $key): Chain; + + public function keyVideoUrl(int|string $key, ?string $service = null): Chain; + + public function keyVowel(int|string $key, string ...$additionalChars): Chain; + + public function keyWhen(int|string $key, Rule $when, Rule $then, ?Rule $else = null): Chain; + + public function keyWritable(int|string $key): Chain; + + public function keyXdigit(int|string $key, string ...$additionalChars): Chain; + + public function keyYes(int|string $key, bool $useLocale = false): Chain; +} diff --git a/library/Mixins/StaticLength.php b/library/Mixins/LengthBuilder.php similarity index 51% rename from library/Mixins/StaticLength.php rename to library/Mixins/LengthBuilder.php index dabca825b..3c90ca0b8 100644 --- a/library/Mixins/StaticLength.php +++ b/library/Mixins/LengthBuilder.php @@ -9,45 +9,45 @@ namespace Respect\Validation\Mixins; -interface StaticLength +interface LengthBuilder { - public static function lengthBetween(mixed $minValue, mixed $maxValue): ChainedValidator; + public static function lengthBetween(mixed $minValue, mixed $maxValue): Chain; - public static function lengthBetweenExclusive(mixed $minimum, mixed $maximum): ChainedValidator; + public static function lengthBetweenExclusive(mixed $minimum, mixed $maximum): Chain; - public static function lengthEquals(mixed $compareTo): ChainedValidator; + public static function lengthEquals(mixed $compareTo): Chain; - public static function lengthEquivalent(mixed $compareTo): ChainedValidator; + public static function lengthEquivalent(mixed $compareTo): Chain; - public static function lengthEven(): ChainedValidator; + public static function lengthEven(): Chain; - public static function lengthFactor(int $dividend): ChainedValidator; + public static function lengthFactor(int $dividend): Chain; - public static function lengthFibonacci(): ChainedValidator; + public static function lengthFibonacci(): Chain; - public static function lengthFinite(): ChainedValidator; + public static function lengthFinite(): Chain; - public static function lengthGreaterThan(mixed $compareTo): ChainedValidator; + public static function lengthGreaterThan(mixed $compareTo): Chain; - public static function lengthGreaterThanOrEqual(mixed $compareTo): ChainedValidator; + public static function lengthGreaterThanOrEqual(mixed $compareTo): Chain; - public static function lengthIdentical(mixed $compareTo): ChainedValidator; + public static function lengthIdentical(mixed $compareTo): Chain; - public static function lengthIn(mixed $haystack, bool $compareIdentical = false): ChainedValidator; + public static function lengthIn(mixed $haystack, bool $compareIdentical = false): Chain; - public static function lengthInfinite(): ChainedValidator; + public static function lengthInfinite(): Chain; - public static function lengthLessThan(mixed $compareTo): ChainedValidator; + public static function lengthLessThan(mixed $compareTo): Chain; - public static function lengthLessThanOrEqual(mixed $compareTo): ChainedValidator; + public static function lengthLessThanOrEqual(mixed $compareTo): Chain; - public static function lengthMultiple(int $multipleOf): ChainedValidator; + public static function lengthMultiple(int $multipleOf): Chain; - public static function lengthOdd(): ChainedValidator; + public static function lengthOdd(): Chain; - public static function lengthPerfectSquare(): ChainedValidator; + public static function lengthPerfectSquare(): Chain; - public static function lengthPositive(): ChainedValidator; + public static function lengthPositive(): Chain; - public static function lengthPrimeNumber(): ChainedValidator; + public static function lengthPrimeNumber(): Chain; } diff --git a/library/Mixins/LengthChain.php b/library/Mixins/LengthChain.php new file mode 100644 index 000000000..225a4cde7 --- /dev/null +++ b/library/Mixins/LengthChain.php @@ -0,0 +1,53 @@ + + * SPDX-License-Identifier: MIT + */ + +declare(strict_types=1); + +namespace Respect\Validation\Mixins; + +interface LengthChain +{ + public function lengthBetween(mixed $minValue, mixed $maxValue): Chain; + + public function lengthBetweenExclusive(mixed $minimum, mixed $maximum): Chain; + + public function lengthEquals(mixed $compareTo): Chain; + + public function lengthEquivalent(mixed $compareTo): Chain; + + public function lengthEven(): Chain; + + public function lengthFactor(int $dividend): Chain; + + public function lengthFibonacci(): Chain; + + public function lengthFinite(): Chain; + + public function lengthGreaterThan(mixed $compareTo): Chain; + + public function lengthGreaterThanOrEqual(mixed $compareTo): Chain; + + public function lengthIdentical(mixed $compareTo): Chain; + + public function lengthIn(mixed $haystack, bool $compareIdentical = false): Chain; + + public function lengthInfinite(): Chain; + + public function lengthLessThan(mixed $compareTo): Chain; + + public function lengthLessThanOrEqual(mixed $compareTo): Chain; + + public function lengthMultiple(int $multipleOf): Chain; + + public function lengthOdd(): Chain; + + public function lengthPerfectSquare(): Chain; + + public function lengthPositive(): Chain; + + public function lengthPrimeNumber(): Chain; +} diff --git a/library/Mixins/MaxBuilder.php b/library/Mixins/MaxBuilder.php new file mode 100644 index 000000000..1c5d1ff7c --- /dev/null +++ b/library/Mixins/MaxBuilder.php @@ -0,0 +1,53 @@ + + * SPDX-License-Identifier: MIT + */ + +declare(strict_types=1); + +namespace Respect\Validation\Mixins; + +interface MaxBuilder +{ + public static function maxBetween(mixed $minValue, mixed $maxValue): Chain; + + public static function maxBetweenExclusive(mixed $minimum, mixed $maximum): Chain; + + public static function maxEquals(mixed $compareTo): Chain; + + public static function maxEquivalent(mixed $compareTo): Chain; + + public static function maxEven(): Chain; + + public static function maxFactor(int $dividend): Chain; + + public static function maxFibonacci(): Chain; + + public static function maxFinite(): Chain; + + public static function maxGreaterThan(mixed $compareTo): Chain; + + public static function maxGreaterThanOrEqual(mixed $compareTo): Chain; + + public static function maxIdentical(mixed $compareTo): Chain; + + public static function maxIn(mixed $haystack, bool $compareIdentical = false): Chain; + + public static function maxInfinite(): Chain; + + public static function maxLessThan(mixed $compareTo): Chain; + + public static function maxLessThanOrEqual(mixed $compareTo): Chain; + + public static function maxMultiple(int $multipleOf): Chain; + + public static function maxOdd(): Chain; + + public static function maxPerfectSquare(): Chain; + + public static function maxPositive(): Chain; + + public static function maxPrimeNumber(): Chain; +} diff --git a/library/Mixins/MaxChain.php b/library/Mixins/MaxChain.php new file mode 100644 index 000000000..d849eac42 --- /dev/null +++ b/library/Mixins/MaxChain.php @@ -0,0 +1,53 @@ + + * SPDX-License-Identifier: MIT + */ + +declare(strict_types=1); + +namespace Respect\Validation\Mixins; + +interface MaxChain +{ + public function maxBetween(mixed $minValue, mixed $maxValue): Chain; + + public function maxBetweenExclusive(mixed $minimum, mixed $maximum): Chain; + + public function maxEquals(mixed $compareTo): Chain; + + public function maxEquivalent(mixed $compareTo): Chain; + + public function maxEven(): Chain; + + public function maxFactor(int $dividend): Chain; + + public function maxFibonacci(): Chain; + + public function maxFinite(): Chain; + + public function maxGreaterThan(mixed $compareTo): Chain; + + public function maxGreaterThanOrEqual(mixed $compareTo): Chain; + + public function maxIdentical(mixed $compareTo): Chain; + + public function maxIn(mixed $haystack, bool $compareIdentical = false): Chain; + + public function maxInfinite(): Chain; + + public function maxLessThan(mixed $compareTo): Chain; + + public function maxLessThanOrEqual(mixed $compareTo): Chain; + + public function maxMultiple(int $multipleOf): Chain; + + public function maxOdd(): Chain; + + public function maxPerfectSquare(): Chain; + + public function maxPositive(): Chain; + + public function maxPrimeNumber(): Chain; +} diff --git a/library/Mixins/MinBuilder.php b/library/Mixins/MinBuilder.php new file mode 100644 index 000000000..67eaaa640 --- /dev/null +++ b/library/Mixins/MinBuilder.php @@ -0,0 +1,53 @@ + + * SPDX-License-Identifier: MIT + */ + +declare(strict_types=1); + +namespace Respect\Validation\Mixins; + +interface MinBuilder +{ + public static function minBetween(mixed $minValue, mixed $maxValue): Chain; + + public static function minBetweenExclusive(mixed $minimum, mixed $maximum): Chain; + + public static function minEquals(mixed $compareTo): Chain; + + public static function minEquivalent(mixed $compareTo): Chain; + + public static function minEven(): Chain; + + public static function minFactor(int $dividend): Chain; + + public static function minFibonacci(): Chain; + + public static function minFinite(): Chain; + + public static function minGreaterThan(mixed $compareTo): Chain; + + public static function minGreaterThanOrEqual(mixed $compareTo): Chain; + + public static function minIdentical(mixed $compareTo): Chain; + + public static function minIn(mixed $haystack, bool $compareIdentical = false): Chain; + + public static function minInfinite(): Chain; + + public static function minLessThan(mixed $compareTo): Chain; + + public static function minLessThanOrEqual(mixed $compareTo): Chain; + + public static function minMultiple(int $multipleOf): Chain; + + public static function minOdd(): Chain; + + public static function minPerfectSquare(): Chain; + + public static function minPositive(): Chain; + + public static function minPrimeNumber(): Chain; +} diff --git a/library/Mixins/MinChain.php b/library/Mixins/MinChain.php new file mode 100644 index 000000000..b4908996e --- /dev/null +++ b/library/Mixins/MinChain.php @@ -0,0 +1,53 @@ + + * SPDX-License-Identifier: MIT + */ + +declare(strict_types=1); + +namespace Respect\Validation\Mixins; + +interface MinChain +{ + public function minBetween(mixed $minValue, mixed $maxValue): Chain; + + public function minBetweenExclusive(mixed $minimum, mixed $maximum): Chain; + + public function minEquals(mixed $compareTo): Chain; + + public function minEquivalent(mixed $compareTo): Chain; + + public function minEven(): Chain; + + public function minFactor(int $dividend): Chain; + + public function minFibonacci(): Chain; + + public function minFinite(): Chain; + + public function minGreaterThan(mixed $compareTo): Chain; + + public function minGreaterThanOrEqual(mixed $compareTo): Chain; + + public function minIdentical(mixed $compareTo): Chain; + + public function minIn(mixed $haystack, bool $compareIdentical = false): Chain; + + public function minInfinite(): Chain; + + public function minLessThan(mixed $compareTo): Chain; + + public function minLessThanOrEqual(mixed $compareTo): Chain; + + public function minMultiple(int $multipleOf): Chain; + + public function minOdd(): Chain; + + public function minPerfectSquare(): Chain; + + public function minPositive(): Chain; + + public function minPrimeNumber(): Chain; +} diff --git a/library/Mixins/NotBuilder.php b/library/Mixins/NotBuilder.php new file mode 100644 index 000000000..259b4bf66 --- /dev/null +++ b/library/Mixins/NotBuilder.php @@ -0,0 +1,353 @@ + + * SPDX-License-Identifier: MIT + */ + +declare(strict_types=1); + +namespace Respect\Validation\Mixins; + +use DateTimeImmutable; +use Respect\Validation\Rule; + +interface NotBuilder +{ + public static function notAllOf(Rule $rule1, Rule $rule2, Rule ...$rules): Chain; + + public static function notAlnum(string ...$additionalChars): Chain; + + public static function notAlpha(string ...$additionalChars): Chain; + + public static function notAlwaysInvalid(): Chain; + + public static function notAlwaysValid(): Chain; + + public static function notAnyOf(Rule $rule1, Rule $rule2, Rule ...$rules): Chain; + + public static function notArrayType(): Chain; + + public static function notArrayVal(): Chain; + + public static function notBase( + int $base, + string $chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', + ): Chain; + + public static function notBase64(): Chain; + + public static function notBetween(mixed $minValue, mixed $maxValue): Chain; + + public static function notBetweenExclusive(mixed $minimum, mixed $maximum): Chain; + + public static function notBoolType(): Chain; + + public static function notBoolVal(): Chain; + + public static function notBsn(): Chain; + + public static function notCall(callable $callable, Rule $rule): Chain; + + public static function notCallableType(): Chain; + + public static function notCallback(callable $callback, mixed ...$arguments): Chain; + + public static function notCharset(string $charset, string ...$charsets): Chain; + + public static function notCnh(): Chain; + + public static function notCnpj(): Chain; + + public static function notConsecutive(Rule $rule1, Rule $rule2, Rule ...$rules): Chain; + + public static function notConsonant(string ...$additionalChars): Chain; + + public static function notContains(mixed $containsValue, bool $identical = false): Chain; + + /** + * @param non-empty-array $needles + */ + public static function notContainsAny(array $needles, bool $identical = false): Chain; + + public static function notControl(string ...$additionalChars): Chain; + + public static function notCountable(): Chain; + + /** + * @param "alpha-2"|"alpha-3"|"numeric" $set + */ + public static function notCountryCode(string $set = 'alpha-2'): Chain; + + public static function notCpf(): Chain; + + public static function notCreditCard(string $brand = 'Any'): Chain; + + /** + * @param "alpha-3"|"numeric" $set + */ + public static function notCurrencyCode(string $set = 'alpha-3'): Chain; + + public static function notDate(string $format = 'Y-m-d'): Chain; + + public static function notDateTime(?string $format = null): Chain; + + /** + * @param "years"|"months"|"days"|"hours"|"minutes"|"seconds"|"microseconds" $type + */ + public static function notDateTimeDiff( + string $type, + Rule $rule, + ?string $format = null, + ?DateTimeImmutable $now = null, + ): Chain; + + public static function notDecimal(int $decimals): Chain; + + public static function notDigit(string ...$additionalChars): Chain; + + public static function notDirectory(): Chain; + + public static function notDomain(bool $tldCheck = true): Chain; + + public static function notEach(Rule $rule): Chain; + + public static function notEmail(): Chain; + + public static function notEndsWith(mixed $endValue, bool $identical = false): Chain; + + public static function notEquals(mixed $compareTo): Chain; + + public static function notEquivalent(mixed $compareTo): Chain; + + public static function notEven(): Chain; + + public static function notExecutable(): Chain; + + public static function notExists(): Chain; + + public static function notExtension(string $extension): Chain; + + public static function notFactor(int $dividend): Chain; + + public static function notFalseVal(): Chain; + + public static function notFibonacci(): Chain; + + public static function notFile(): Chain; + + public static function notFilterVar(int $filter, mixed $options = null): Chain; + + public static function notFinite(): Chain; + + public static function notFloatType(): Chain; + + public static function notFloatVal(): Chain; + + public static function notGraph(string ...$additionalChars): Chain; + + public static function notGreaterThan(mixed $compareTo): Chain; + + public static function notGreaterThanOrEqual(mixed $compareTo): Chain; + + public static function notHetu(): Chain; + + public static function notHexRgbColor(): Chain; + + public static function notIban(): Chain; + + public static function notIdentical(mixed $compareTo): Chain; + + public static function notImage(): Chain; + + public static function notImei(): Chain; + + public static function notIn(mixed $haystack, bool $compareIdentical = false): Chain; + + public static function notInfinite(): Chain; + + /** + * @param class-string $class + */ + public static function notInstance(string $class): Chain; + + public static function notIntType(): Chain; + + public static function notIntVal(): Chain; + + public static function notIp(string $range = '*', ?int $options = null): Chain; + + public static function notIsbn(): Chain; + + public static function notIterableType(): Chain; + + public static function notIterableVal(): Chain; + + public static function notJson(): Chain; + + public static function notKey(string|int $key, Rule $rule): Chain; + + public static function notKeyExists(string|int $key): Chain; + + public static function notKeyOptional(string|int $key, Rule $rule): Chain; + + public static function notKeySet(Rule $rule, Rule ...$rules): Chain; + + /** + * @param "alpha-2"|"alpha-3" $set + */ + public static function notLanguageCode(string $set = 'alpha-2'): Chain; + + /** + * @param callable(mixed): Rule $ruleCreator + */ + public static function notLazy(callable $ruleCreator): Chain; + + public static function notLeapDate(string $format): Chain; + + public static function notLeapYear(): Chain; + + public static function notLength(Rule $rule): Chain; + + public static function notLessThan(mixed $compareTo): Chain; + + public static function notLessThanOrEqual(mixed $compareTo): Chain; + + public static function notLowercase(): Chain; + + public static function notLuhn(): Chain; + + public static function notMacAddress(): Chain; + + public static function notMax(Rule $rule): Chain; + + public static function notMimetype(string $mimetype): Chain; + + public static function notMin(Rule $rule): Chain; + + public static function notMultiple(int $multipleOf): Chain; + + public static function notNegative(): Chain; + + public static function notNfeAccessKey(): Chain; + + public static function notNif(): Chain; + + public static function notNip(): Chain; + + public static function notNo(bool $useLocale = false): Chain; + + public static function notNoWhitespace(): Chain; + + public static function notNoneOf(Rule $rule1, Rule $rule2, Rule ...$rules): Chain; + + public static function notNullType(): Chain; + + public static function notNumber(): Chain; + + public static function notNumericVal(): Chain; + + public static function notObjectType(): Chain; + + public static function notOdd(): Chain; + + public static function notOneOf(Rule $rule1, Rule $rule2, Rule ...$rules): Chain; + + public static function notPerfectSquare(): Chain; + + public static function notPesel(): Chain; + + public static function notPhone(?string $countryCode = null): Chain; + + public static function notPhpLabel(): Chain; + + public static function notPis(): Chain; + + public static function notPolishIdCard(): Chain; + + public static function notPortugueseNif(): Chain; + + public static function notPositive(): Chain; + + public static function notPostalCode(string $countryCode, bool $formatted = false): Chain; + + public static function notPrimeNumber(): Chain; + + public static function notPrintable(string ...$additionalChars): Chain; + + public static function notProperty(string $propertyName, Rule $rule): Chain; + + public static function notPropertyExists(string $propertyName): Chain; + + public static function notPropertyOptional(string $propertyName, Rule $rule): Chain; + + public static function notPublicDomainSuffix(): Chain; + + public static function notPunct(string ...$additionalChars): Chain; + + public static function notReadable(): Chain; + + public static function notRegex(string $regex): Chain; + + public static function notResourceType(): Chain; + + public static function notRoman(): Chain; + + public static function notScalarVal(): Chain; + + /** + * @param "B"|"KB"|"MB"|"GB"|"TB"|"PB"|"EB"|"ZB"|"YB" $unit + */ + public static function notSize(string $unit, Rule $rule): Chain; + + public static function notSlug(): Chain; + + public static function notSorted(string $direction): Chain; + + public static function notSpace(string ...$additionalChars): Chain; + + public static function notStartsWith(mixed $startValue, bool $identical = false): Chain; + + public static function notStringType(): Chain; + + public static function notStringVal(): Chain; + + public static function notSubdivisionCode(string $countryCode): Chain; + + /** + * @param mixed[] $superset + */ + public static function notSubset(array $superset): Chain; + + public static function notSymbolicLink(): Chain; + + public static function notTime(string $format = 'H:i:s'): Chain; + + public static function notTld(): Chain; + + public static function notTrueVal(): Chain; + + public static function notUnique(): Chain; + + public static function notUploaded(): Chain; + + public static function notUppercase(): Chain; + + public static function notUrl(): Chain; + + public static function notUuid(?int $version = null): Chain; + + public static function notVersion(): Chain; + + public static function notVideoUrl(?string $service = null): Chain; + + public static function notVowel(string ...$additionalChars): Chain; + + public static function notWhen(Rule $when, Rule $then, ?Rule $else = null): Chain; + + public static function notWritable(): Chain; + + public static function notXdigit(string ...$additionalChars): Chain; + + public static function notYes(bool $useLocale = false): Chain; +} diff --git a/library/Mixins/NotChain.php b/library/Mixins/NotChain.php new file mode 100644 index 000000000..2088868ea --- /dev/null +++ b/library/Mixins/NotChain.php @@ -0,0 +1,353 @@ + + * SPDX-License-Identifier: MIT + */ + +declare(strict_types=1); + +namespace Respect\Validation\Mixins; + +use DateTimeImmutable; +use Respect\Validation\Rule; + +interface NotChain +{ + public function notAllOf(Rule $rule1, Rule $rule2, Rule ...$rules): Chain; + + public function notAlnum(string ...$additionalChars): Chain; + + public function notAlpha(string ...$additionalChars): Chain; + + public function notAlwaysInvalid(): Chain; + + public function notAlwaysValid(): Chain; + + public function notAnyOf(Rule $rule1, Rule $rule2, Rule ...$rules): Chain; + + public function notArrayType(): Chain; + + public function notArrayVal(): Chain; + + public function notBase( + int $base, + string $chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', + ): Chain; + + public function notBase64(): Chain; + + public function notBetween(mixed $minValue, mixed $maxValue): Chain; + + public function notBetweenExclusive(mixed $minimum, mixed $maximum): Chain; + + public function notBoolType(): Chain; + + public function notBoolVal(): Chain; + + public function notBsn(): Chain; + + public function notCall(callable $callable, Rule $rule): Chain; + + public function notCallableType(): Chain; + + public function notCallback(callable $callback, mixed ...$arguments): Chain; + + public function notCharset(string $charset, string ...$charsets): Chain; + + public function notCnh(): Chain; + + public function notCnpj(): Chain; + + public function notConsecutive(Rule $rule1, Rule $rule2, Rule ...$rules): Chain; + + public function notConsonant(string ...$additionalChars): Chain; + + public function notContains(mixed $containsValue, bool $identical = false): Chain; + + /** + * @param non-empty-array $needles + */ + public function notContainsAny(array $needles, bool $identical = false): Chain; + + public function notControl(string ...$additionalChars): Chain; + + public function notCountable(): Chain; + + /** + * @param "alpha-2"|"alpha-3"|"numeric" $set + */ + public function notCountryCode(string $set = 'alpha-2'): Chain; + + public function notCpf(): Chain; + + public function notCreditCard(string $brand = 'Any'): Chain; + + /** + * @param "alpha-3"|"numeric" $set + */ + public function notCurrencyCode(string $set = 'alpha-3'): Chain; + + public function notDate(string $format = 'Y-m-d'): Chain; + + public function notDateTime(?string $format = null): Chain; + + /** + * @param "years"|"months"|"days"|"hours"|"minutes"|"seconds"|"microseconds" $type + */ + public function notDateTimeDiff( + string $type, + Rule $rule, + ?string $format = null, + ?DateTimeImmutable $now = null, + ): Chain; + + public function notDecimal(int $decimals): Chain; + + public function notDigit(string ...$additionalChars): Chain; + + public function notDirectory(): Chain; + + public function notDomain(bool $tldCheck = true): Chain; + + public function notEach(Rule $rule): Chain; + + public function notEmail(): Chain; + + public function notEndsWith(mixed $endValue, bool $identical = false): Chain; + + public function notEquals(mixed $compareTo): Chain; + + public function notEquivalent(mixed $compareTo): Chain; + + public function notEven(): Chain; + + public function notExecutable(): Chain; + + public function notExists(): Chain; + + public function notExtension(string $extension): Chain; + + public function notFactor(int $dividend): Chain; + + public function notFalseVal(): Chain; + + public function notFibonacci(): Chain; + + public function notFile(): Chain; + + public function notFilterVar(int $filter, mixed $options = null): Chain; + + public function notFinite(): Chain; + + public function notFloatType(): Chain; + + public function notFloatVal(): Chain; + + public function notGraph(string ...$additionalChars): Chain; + + public function notGreaterThan(mixed $compareTo): Chain; + + public function notGreaterThanOrEqual(mixed $compareTo): Chain; + + public function notHetu(): Chain; + + public function notHexRgbColor(): Chain; + + public function notIban(): Chain; + + public function notIdentical(mixed $compareTo): Chain; + + public function notImage(): Chain; + + public function notImei(): Chain; + + public function notIn(mixed $haystack, bool $compareIdentical = false): Chain; + + public function notInfinite(): Chain; + + /** + * @param class-string $class + */ + public function notInstance(string $class): Chain; + + public function notIntType(): Chain; + + public function notIntVal(): Chain; + + public function notIp(string $range = '*', ?int $options = null): Chain; + + public function notIsbn(): Chain; + + public function notIterableType(): Chain; + + public function notIterableVal(): Chain; + + public function notJson(): Chain; + + public function notKey(string|int $key, Rule $rule): Chain; + + public function notKeyExists(string|int $key): Chain; + + public function notKeyOptional(string|int $key, Rule $rule): Chain; + + public function notKeySet(Rule $rule, Rule ...$rules): Chain; + + /** + * @param "alpha-2"|"alpha-3" $set + */ + public function notLanguageCode(string $set = 'alpha-2'): Chain; + + /** + * @param callable(mixed): Rule $ruleCreator + */ + public function notLazy(callable $ruleCreator): Chain; + + public function notLeapDate(string $format): Chain; + + public function notLeapYear(): Chain; + + public function notLength(Rule $rule): Chain; + + public function notLessThan(mixed $compareTo): Chain; + + public function notLessThanOrEqual(mixed $compareTo): Chain; + + public function notLowercase(): Chain; + + public function notLuhn(): Chain; + + public function notMacAddress(): Chain; + + public function notMax(Rule $rule): Chain; + + public function notMimetype(string $mimetype): Chain; + + public function notMin(Rule $rule): Chain; + + public function notMultiple(int $multipleOf): Chain; + + public function notNegative(): Chain; + + public function notNfeAccessKey(): Chain; + + public function notNif(): Chain; + + public function notNip(): Chain; + + public function notNo(bool $useLocale = false): Chain; + + public function notNoWhitespace(): Chain; + + public function notNoneOf(Rule $rule1, Rule $rule2, Rule ...$rules): Chain; + + public function notNullType(): Chain; + + public function notNumber(): Chain; + + public function notNumericVal(): Chain; + + public function notObjectType(): Chain; + + public function notOdd(): Chain; + + public function notOneOf(Rule $rule1, Rule $rule2, Rule ...$rules): Chain; + + public function notPerfectSquare(): Chain; + + public function notPesel(): Chain; + + public function notPhone(?string $countryCode = null): Chain; + + public function notPhpLabel(): Chain; + + public function notPis(): Chain; + + public function notPolishIdCard(): Chain; + + public function notPortugueseNif(): Chain; + + public function notPositive(): Chain; + + public function notPostalCode(string $countryCode, bool $formatted = false): Chain; + + public function notPrimeNumber(): Chain; + + public function notPrintable(string ...$additionalChars): Chain; + + public function notProperty(string $propertyName, Rule $rule): Chain; + + public function notPropertyExists(string $propertyName): Chain; + + public function notPropertyOptional(string $propertyName, Rule $rule): Chain; + + public function notPublicDomainSuffix(): Chain; + + public function notPunct(string ...$additionalChars): Chain; + + public function notReadable(): Chain; + + public function notRegex(string $regex): Chain; + + public function notResourceType(): Chain; + + public function notRoman(): Chain; + + public function notScalarVal(): Chain; + + /** + * @param "B"|"KB"|"MB"|"GB"|"TB"|"PB"|"EB"|"ZB"|"YB" $unit + */ + public function notSize(string $unit, Rule $rule): Chain; + + public function notSlug(): Chain; + + public function notSorted(string $direction): Chain; + + public function notSpace(string ...$additionalChars): Chain; + + public function notStartsWith(mixed $startValue, bool $identical = false): Chain; + + public function notStringType(): Chain; + + public function notStringVal(): Chain; + + public function notSubdivisionCode(string $countryCode): Chain; + + /** + * @param mixed[] $superset + */ + public function notSubset(array $superset): Chain; + + public function notSymbolicLink(): Chain; + + public function notTime(string $format = 'H:i:s'): Chain; + + public function notTld(): Chain; + + public function notTrueVal(): Chain; + + public function notUnique(): Chain; + + public function notUploaded(): Chain; + + public function notUppercase(): Chain; + + public function notUrl(): Chain; + + public function notUuid(?int $version = null): Chain; + + public function notVersion(): Chain; + + public function notVideoUrl(?string $service = null): Chain; + + public function notVowel(string ...$additionalChars): Chain; + + public function notWhen(Rule $when, Rule $then, ?Rule $else = null): Chain; + + public function notWritable(): Chain; + + public function notXdigit(string ...$additionalChars): Chain; + + public function notYes(bool $useLocale = false): Chain; +} diff --git a/library/Mixins/NullOrBuilder.php b/library/Mixins/NullOrBuilder.php new file mode 100644 index 000000000..4ddf9cd1f --- /dev/null +++ b/library/Mixins/NullOrBuilder.php @@ -0,0 +1,363 @@ + + * SPDX-License-Identifier: MIT + */ + +declare(strict_types=1); + +namespace Respect\Validation\Mixins; + +use DateTimeImmutable; +use Respect\Validation\Rule; + +interface NullOrBuilder +{ + public static function nullOrAllOf(Rule $rule1, Rule $rule2, Rule ...$rules): Chain; + + public static function nullOrAlnum(string ...$additionalChars): Chain; + + public static function nullOrAlpha(string ...$additionalChars): Chain; + + public static function nullOrAlwaysInvalid(): Chain; + + public static function nullOrAlwaysValid(): Chain; + + public static function nullOrAnyOf(Rule $rule1, Rule $rule2, Rule ...$rules): Chain; + + public static function nullOrArrayType(): Chain; + + public static function nullOrArrayVal(): Chain; + + public static function nullOrAttributes(): Chain; + + public static function nullOrBase( + int $base, + string $chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', + ): Chain; + + public static function nullOrBase64(): Chain; + + public static function nullOrBetween(mixed $minValue, mixed $maxValue): Chain; + + public static function nullOrBetweenExclusive(mixed $minimum, mixed $maximum): Chain; + + public static function nullOrBoolType(): Chain; + + public static function nullOrBoolVal(): Chain; + + public static function nullOrBsn(): Chain; + + public static function nullOrCall(callable $callable, Rule $rule): Chain; + + public static function nullOrCallableType(): Chain; + + public static function nullOrCallback(callable $callback, mixed ...$arguments): Chain; + + public static function nullOrCharset(string $charset, string ...$charsets): Chain; + + public static function nullOrCnh(): Chain; + + public static function nullOrCnpj(): Chain; + + public static function nullOrConsecutive(Rule $rule1, Rule $rule2, Rule ...$rules): Chain; + + public static function nullOrConsonant(string ...$additionalChars): Chain; + + public static function nullOrContains(mixed $containsValue, bool $identical = false): Chain; + + /** + * @param non-empty-array $needles + */ + public static function nullOrContainsAny(array $needles, bool $identical = false): Chain; + + public static function nullOrControl(string ...$additionalChars): Chain; + + public static function nullOrCountable(): Chain; + + /** + * @param "alpha-2"|"alpha-3"|"numeric" $set + */ + public static function nullOrCountryCode(string $set = 'alpha-2'): Chain; + + public static function nullOrCpf(): Chain; + + public static function nullOrCreditCard(string $brand = 'Any'): Chain; + + /** + * @param "alpha-3"|"numeric" $set + */ + public static function nullOrCurrencyCode(string $set = 'alpha-3'): Chain; + + public static function nullOrDate(string $format = 'Y-m-d'): Chain; + + public static function nullOrDateTime(?string $format = null): Chain; + + /** + * @param "years"|"months"|"days"|"hours"|"minutes"|"seconds"|"microseconds" $type + */ + public static function nullOrDateTimeDiff( + string $type, + Rule $rule, + ?string $format = null, + ?DateTimeImmutable $now = null, + ): Chain; + + public static function nullOrDecimal(int $decimals): Chain; + + public static function nullOrDigit(string ...$additionalChars): Chain; + + public static function nullOrDirectory(): Chain; + + public static function nullOrDomain(bool $tldCheck = true): Chain; + + public static function nullOrEach(Rule $rule): Chain; + + public static function nullOrEmail(): Chain; + + public static function nullOrEndsWith(mixed $endValue, bool $identical = false): Chain; + + public static function nullOrEquals(mixed $compareTo): Chain; + + public static function nullOrEquivalent(mixed $compareTo): Chain; + + public static function nullOrEven(): Chain; + + public static function nullOrExecutable(): Chain; + + public static function nullOrExists(): Chain; + + public static function nullOrExtension(string $extension): Chain; + + public static function nullOrFactor(int $dividend): Chain; + + public static function nullOrFalseVal(): Chain; + + public static function nullOrFibonacci(): Chain; + + public static function nullOrFile(): Chain; + + public static function nullOrFilterVar(int $filter, mixed $options = null): Chain; + + public static function nullOrFinite(): Chain; + + public static function nullOrFloatType(): Chain; + + public static function nullOrFloatVal(): Chain; + + public static function nullOrGraph(string ...$additionalChars): Chain; + + public static function nullOrGreaterThan(mixed $compareTo): Chain; + + public static function nullOrGreaterThanOrEqual(mixed $compareTo): Chain; + + public static function nullOrHetu(): Chain; + + public static function nullOrHexRgbColor(): Chain; + + public static function nullOrIban(): Chain; + + public static function nullOrIdentical(mixed $compareTo): Chain; + + public static function nullOrImage(): Chain; + + public static function nullOrImei(): Chain; + + public static function nullOrIn(mixed $haystack, bool $compareIdentical = false): Chain; + + public static function nullOrInfinite(): Chain; + + /** + * @param class-string $class + */ + public static function nullOrInstance(string $class): Chain; + + public static function nullOrIntType(): Chain; + + public static function nullOrIntVal(): Chain; + + public static function nullOrIp(string $range = '*', ?int $options = null): Chain; + + public static function nullOrIsbn(): Chain; + + public static function nullOrIterableType(): Chain; + + public static function nullOrIterableVal(): Chain; + + public static function nullOrJson(): Chain; + + public static function nullOrKey(string|int $key, Rule $rule): Chain; + + public static function nullOrKeyExists(string|int $key): Chain; + + public static function nullOrKeyOptional(string|int $key, Rule $rule): Chain; + + public static function nullOrKeySet(Rule $rule, Rule ...$rules): Chain; + + /** + * @param "alpha-2"|"alpha-3" $set + */ + public static function nullOrLanguageCode(string $set = 'alpha-2'): Chain; + + /** + * @param callable(mixed): Rule $ruleCreator + */ + public static function nullOrLazy(callable $ruleCreator): Chain; + + public static function nullOrLeapDate(string $format): Chain; + + public static function nullOrLeapYear(): Chain; + + public static function nullOrLength(Rule $rule): Chain; + + public static function nullOrLessThan(mixed $compareTo): Chain; + + public static function nullOrLessThanOrEqual(mixed $compareTo): Chain; + + public static function nullOrLowercase(): Chain; + + public static function nullOrLuhn(): Chain; + + public static function nullOrMacAddress(): Chain; + + public static function nullOrMax(Rule $rule): Chain; + + public static function nullOrMimetype(string $mimetype): Chain; + + public static function nullOrMin(Rule $rule): Chain; + + public static function nullOrMultiple(int $multipleOf): Chain; + + public static function nullOrNegative(): Chain; + + public static function nullOrNfeAccessKey(): Chain; + + public static function nullOrNif(): Chain; + + public static function nullOrNip(): Chain; + + public static function nullOrNo(bool $useLocale = false): Chain; + + public static function nullOrNoWhitespace(): Chain; + + public static function nullOrNoneOf(Rule $rule1, Rule $rule2, Rule ...$rules): Chain; + + public static function nullOrNot(Rule $rule): Chain; + + public static function nullOrNotBlank(): Chain; + + public static function nullOrNotEmoji(): Chain; + + public static function nullOrNotEmpty(): Chain; + + public static function nullOrNullType(): Chain; + + public static function nullOrNumber(): Chain; + + public static function nullOrNumericVal(): Chain; + + public static function nullOrObjectType(): Chain; + + public static function nullOrOdd(): Chain; + + public static function nullOrOneOf(Rule $rule1, Rule $rule2, Rule ...$rules): Chain; + + public static function nullOrPerfectSquare(): Chain; + + public static function nullOrPesel(): Chain; + + public static function nullOrPhone(?string $countryCode = null): Chain; + + public static function nullOrPhpLabel(): Chain; + + public static function nullOrPis(): Chain; + + public static function nullOrPolishIdCard(): Chain; + + public static function nullOrPortugueseNif(): Chain; + + public static function nullOrPositive(): Chain; + + public static function nullOrPostalCode(string $countryCode, bool $formatted = false): Chain; + + public static function nullOrPrimeNumber(): Chain; + + public static function nullOrPrintable(string ...$additionalChars): Chain; + + public static function nullOrProperty(string $propertyName, Rule $rule): Chain; + + public static function nullOrPropertyExists(string $propertyName): Chain; + + public static function nullOrPropertyOptional(string $propertyName, Rule $rule): Chain; + + public static function nullOrPublicDomainSuffix(): Chain; + + public static function nullOrPunct(string ...$additionalChars): Chain; + + public static function nullOrReadable(): Chain; + + public static function nullOrRegex(string $regex): Chain; + + public static function nullOrResourceType(): Chain; + + public static function nullOrRoman(): Chain; + + public static function nullOrScalarVal(): Chain; + + /** + * @param "B"|"KB"|"MB"|"GB"|"TB"|"PB"|"EB"|"ZB"|"YB" $unit + */ + public static function nullOrSize(string $unit, Rule $rule): Chain; + + public static function nullOrSlug(): Chain; + + public static function nullOrSorted(string $direction): Chain; + + public static function nullOrSpace(string ...$additionalChars): Chain; + + public static function nullOrStartsWith(mixed $startValue, bool $identical = false): Chain; + + public static function nullOrStringType(): Chain; + + public static function nullOrStringVal(): Chain; + + public static function nullOrSubdivisionCode(string $countryCode): Chain; + + /** + * @param mixed[] $superset + */ + public static function nullOrSubset(array $superset): Chain; + + public static function nullOrSymbolicLink(): Chain; + + public static function nullOrTime(string $format = 'H:i:s'): Chain; + + public static function nullOrTld(): Chain; + + public static function nullOrTrueVal(): Chain; + + public static function nullOrUnique(): Chain; + + public static function nullOrUploaded(): Chain; + + public static function nullOrUppercase(): Chain; + + public static function nullOrUrl(): Chain; + + public static function nullOrUuid(?int $version = null): Chain; + + public static function nullOrVersion(): Chain; + + public static function nullOrVideoUrl(?string $service = null): Chain; + + public static function nullOrVowel(string ...$additionalChars): Chain; + + public static function nullOrWhen(Rule $when, Rule $then, ?Rule $else = null): Chain; + + public static function nullOrWritable(): Chain; + + public static function nullOrXdigit(string ...$additionalChars): Chain; + + public static function nullOrYes(bool $useLocale = false): Chain; +} diff --git a/library/Mixins/NullOrChain.php b/library/Mixins/NullOrChain.php new file mode 100644 index 000000000..6ab9d4e3c --- /dev/null +++ b/library/Mixins/NullOrChain.php @@ -0,0 +1,363 @@ + + * SPDX-License-Identifier: MIT + */ + +declare(strict_types=1); + +namespace Respect\Validation\Mixins; + +use DateTimeImmutable; +use Respect\Validation\Rule; + +interface NullOrChain +{ + public function nullOrAllOf(Rule $rule1, Rule $rule2, Rule ...$rules): Chain; + + public function nullOrAlnum(string ...$additionalChars): Chain; + + public function nullOrAlpha(string ...$additionalChars): Chain; + + public function nullOrAlwaysInvalid(): Chain; + + public function nullOrAlwaysValid(): Chain; + + public function nullOrAnyOf(Rule $rule1, Rule $rule2, Rule ...$rules): Chain; + + public function nullOrArrayType(): Chain; + + public function nullOrArrayVal(): Chain; + + public function nullOrAttributes(): Chain; + + public function nullOrBase( + int $base, + string $chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', + ): Chain; + + public function nullOrBase64(): Chain; + + public function nullOrBetween(mixed $minValue, mixed $maxValue): Chain; + + public function nullOrBetweenExclusive(mixed $minimum, mixed $maximum): Chain; + + public function nullOrBoolType(): Chain; + + public function nullOrBoolVal(): Chain; + + public function nullOrBsn(): Chain; + + public function nullOrCall(callable $callable, Rule $rule): Chain; + + public function nullOrCallableType(): Chain; + + public function nullOrCallback(callable $callback, mixed ...$arguments): Chain; + + public function nullOrCharset(string $charset, string ...$charsets): Chain; + + public function nullOrCnh(): Chain; + + public function nullOrCnpj(): Chain; + + public function nullOrConsecutive(Rule $rule1, Rule $rule2, Rule ...$rules): Chain; + + public function nullOrConsonant(string ...$additionalChars): Chain; + + public function nullOrContains(mixed $containsValue, bool $identical = false): Chain; + + /** + * @param non-empty-array $needles + */ + public function nullOrContainsAny(array $needles, bool $identical = false): Chain; + + public function nullOrControl(string ...$additionalChars): Chain; + + public function nullOrCountable(): Chain; + + /** + * @param "alpha-2"|"alpha-3"|"numeric" $set + */ + public function nullOrCountryCode(string $set = 'alpha-2'): Chain; + + public function nullOrCpf(): Chain; + + public function nullOrCreditCard(string $brand = 'Any'): Chain; + + /** + * @param "alpha-3"|"numeric" $set + */ + public function nullOrCurrencyCode(string $set = 'alpha-3'): Chain; + + public function nullOrDate(string $format = 'Y-m-d'): Chain; + + public function nullOrDateTime(?string $format = null): Chain; + + /** + * @param "years"|"months"|"days"|"hours"|"minutes"|"seconds"|"microseconds" $type + */ + public function nullOrDateTimeDiff( + string $type, + Rule $rule, + ?string $format = null, + ?DateTimeImmutable $now = null, + ): Chain; + + public function nullOrDecimal(int $decimals): Chain; + + public function nullOrDigit(string ...$additionalChars): Chain; + + public function nullOrDirectory(): Chain; + + public function nullOrDomain(bool $tldCheck = true): Chain; + + public function nullOrEach(Rule $rule): Chain; + + public function nullOrEmail(): Chain; + + public function nullOrEndsWith(mixed $endValue, bool $identical = false): Chain; + + public function nullOrEquals(mixed $compareTo): Chain; + + public function nullOrEquivalent(mixed $compareTo): Chain; + + public function nullOrEven(): Chain; + + public function nullOrExecutable(): Chain; + + public function nullOrExists(): Chain; + + public function nullOrExtension(string $extension): Chain; + + public function nullOrFactor(int $dividend): Chain; + + public function nullOrFalseVal(): Chain; + + public function nullOrFibonacci(): Chain; + + public function nullOrFile(): Chain; + + public function nullOrFilterVar(int $filter, mixed $options = null): Chain; + + public function nullOrFinite(): Chain; + + public function nullOrFloatType(): Chain; + + public function nullOrFloatVal(): Chain; + + public function nullOrGraph(string ...$additionalChars): Chain; + + public function nullOrGreaterThan(mixed $compareTo): Chain; + + public function nullOrGreaterThanOrEqual(mixed $compareTo): Chain; + + public function nullOrHetu(): Chain; + + public function nullOrHexRgbColor(): Chain; + + public function nullOrIban(): Chain; + + public function nullOrIdentical(mixed $compareTo): Chain; + + public function nullOrImage(): Chain; + + public function nullOrImei(): Chain; + + public function nullOrIn(mixed $haystack, bool $compareIdentical = false): Chain; + + public function nullOrInfinite(): Chain; + + /** + * @param class-string $class + */ + public function nullOrInstance(string $class): Chain; + + public function nullOrIntType(): Chain; + + public function nullOrIntVal(): Chain; + + public function nullOrIp(string $range = '*', ?int $options = null): Chain; + + public function nullOrIsbn(): Chain; + + public function nullOrIterableType(): Chain; + + public function nullOrIterableVal(): Chain; + + public function nullOrJson(): Chain; + + public function nullOrKey(string|int $key, Rule $rule): Chain; + + public function nullOrKeyExists(string|int $key): Chain; + + public function nullOrKeyOptional(string|int $key, Rule $rule): Chain; + + public function nullOrKeySet(Rule $rule, Rule ...$rules): Chain; + + /** + * @param "alpha-2"|"alpha-3" $set + */ + public function nullOrLanguageCode(string $set = 'alpha-2'): Chain; + + /** + * @param callable(mixed): Rule $ruleCreator + */ + public function nullOrLazy(callable $ruleCreator): Chain; + + public function nullOrLeapDate(string $format): Chain; + + public function nullOrLeapYear(): Chain; + + public function nullOrLength(Rule $rule): Chain; + + public function nullOrLessThan(mixed $compareTo): Chain; + + public function nullOrLessThanOrEqual(mixed $compareTo): Chain; + + public function nullOrLowercase(): Chain; + + public function nullOrLuhn(): Chain; + + public function nullOrMacAddress(): Chain; + + public function nullOrMax(Rule $rule): Chain; + + public function nullOrMimetype(string $mimetype): Chain; + + public function nullOrMin(Rule $rule): Chain; + + public function nullOrMultiple(int $multipleOf): Chain; + + public function nullOrNegative(): Chain; + + public function nullOrNfeAccessKey(): Chain; + + public function nullOrNif(): Chain; + + public function nullOrNip(): Chain; + + public function nullOrNo(bool $useLocale = false): Chain; + + public function nullOrNoWhitespace(): Chain; + + public function nullOrNoneOf(Rule $rule1, Rule $rule2, Rule ...$rules): Chain; + + public function nullOrNot(Rule $rule): Chain; + + public function nullOrNotBlank(): Chain; + + public function nullOrNotEmoji(): Chain; + + public function nullOrNotEmpty(): Chain; + + public function nullOrNullType(): Chain; + + public function nullOrNumber(): Chain; + + public function nullOrNumericVal(): Chain; + + public function nullOrObjectType(): Chain; + + public function nullOrOdd(): Chain; + + public function nullOrOneOf(Rule $rule1, Rule $rule2, Rule ...$rules): Chain; + + public function nullOrPerfectSquare(): Chain; + + public function nullOrPesel(): Chain; + + public function nullOrPhone(?string $countryCode = null): Chain; + + public function nullOrPhpLabel(): Chain; + + public function nullOrPis(): Chain; + + public function nullOrPolishIdCard(): Chain; + + public function nullOrPortugueseNif(): Chain; + + public function nullOrPositive(): Chain; + + public function nullOrPostalCode(string $countryCode, bool $formatted = false): Chain; + + public function nullOrPrimeNumber(): Chain; + + public function nullOrPrintable(string ...$additionalChars): Chain; + + public function nullOrProperty(string $propertyName, Rule $rule): Chain; + + public function nullOrPropertyExists(string $propertyName): Chain; + + public function nullOrPropertyOptional(string $propertyName, Rule $rule): Chain; + + public function nullOrPublicDomainSuffix(): Chain; + + public function nullOrPunct(string ...$additionalChars): Chain; + + public function nullOrReadable(): Chain; + + public function nullOrRegex(string $regex): Chain; + + public function nullOrResourceType(): Chain; + + public function nullOrRoman(): Chain; + + public function nullOrScalarVal(): Chain; + + /** + * @param "B"|"KB"|"MB"|"GB"|"TB"|"PB"|"EB"|"ZB"|"YB" $unit + */ + public function nullOrSize(string $unit, Rule $rule): Chain; + + public function nullOrSlug(): Chain; + + public function nullOrSorted(string $direction): Chain; + + public function nullOrSpace(string ...$additionalChars): Chain; + + public function nullOrStartsWith(mixed $startValue, bool $identical = false): Chain; + + public function nullOrStringType(): Chain; + + public function nullOrStringVal(): Chain; + + public function nullOrSubdivisionCode(string $countryCode): Chain; + + /** + * @param mixed[] $superset + */ + public function nullOrSubset(array $superset): Chain; + + public function nullOrSymbolicLink(): Chain; + + public function nullOrTime(string $format = 'H:i:s'): Chain; + + public function nullOrTld(): Chain; + + public function nullOrTrueVal(): Chain; + + public function nullOrUnique(): Chain; + + public function nullOrUploaded(): Chain; + + public function nullOrUppercase(): Chain; + + public function nullOrUrl(): Chain; + + public function nullOrUuid(?int $version = null): Chain; + + public function nullOrVersion(): Chain; + + public function nullOrVideoUrl(?string $service = null): Chain; + + public function nullOrVowel(string ...$additionalChars): Chain; + + public function nullOrWhen(Rule $when, Rule $then, ?Rule $else = null): Chain; + + public function nullOrWritable(): Chain; + + public function nullOrXdigit(string ...$additionalChars): Chain; + + public function nullOrYes(bool $useLocale = false): Chain; +} diff --git a/library/Mixins/StaticProperty.php b/library/Mixins/PropertyBuilder.php similarity index 61% rename from library/Mixins/StaticProperty.php rename to library/Mixins/PropertyBuilder.php index a444a248e..ec069c751 100644 --- a/library/Mixins/StaticProperty.php +++ b/library/Mixins/PropertyBuilder.php @@ -12,121 +12,90 @@ use DateTimeImmutable; use Respect\Validation\Rule; -interface StaticProperty +interface PropertyBuilder { - public static function propertyAllOf( - string $propertyName, - Rule $rule1, - Rule $rule2, - Rule ...$rules, - ): ChainedValidator; + public static function propertyAllOf(string $propertyName, Rule $rule1, Rule $rule2, Rule ...$rules): Chain; - public static function propertyAlnum(string $propertyName, string ...$additionalChars): ChainedValidator; + public static function propertyAlnum(string $propertyName, string ...$additionalChars): Chain; - public static function propertyAlpha(string $propertyName, string ...$additionalChars): ChainedValidator; + public static function propertyAlpha(string $propertyName, string ...$additionalChars): Chain; - public static function propertyAlwaysInvalid(string $propertyName): ChainedValidator; + public static function propertyAlwaysInvalid(string $propertyName): Chain; - public static function propertyAlwaysValid(string $propertyName): ChainedValidator; + public static function propertyAlwaysValid(string $propertyName): Chain; - public static function propertyAnyOf( - string $propertyName, - Rule $rule1, - Rule $rule2, - Rule ...$rules, - ): ChainedValidator; + public static function propertyAnyOf(string $propertyName, Rule $rule1, Rule $rule2, Rule ...$rules): Chain; - public static function propertyArrayType(string $propertyName): ChainedValidator; + public static function propertyArrayType(string $propertyName): Chain; - public static function propertyArrayVal(string $propertyName): ChainedValidator; + public static function propertyArrayVal(string $propertyName): Chain; public static function propertyBase( string $propertyName, int $base, string $chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', - ): ChainedValidator; + ): Chain; - public static function propertyBase64(string $propertyName): ChainedValidator; + public static function propertyBase64(string $propertyName): Chain; - public static function propertyBetween(string $propertyName, mixed $minValue, mixed $maxValue): ChainedValidator; + public static function propertyBetween(string $propertyName, mixed $minValue, mixed $maxValue): Chain; - public static function propertyBetweenExclusive( - string $propertyName, - mixed $minimum, - mixed $maximum, - ): ChainedValidator; + public static function propertyBetweenExclusive(string $propertyName, mixed $minimum, mixed $maximum): Chain; - public static function propertyBoolType(string $propertyName): ChainedValidator; + public static function propertyBoolType(string $propertyName): Chain; - public static function propertyBoolVal(string $propertyName): ChainedValidator; + public static function propertyBoolVal(string $propertyName): Chain; - public static function propertyBsn(string $propertyName): ChainedValidator; + public static function propertyBsn(string $propertyName): Chain; - public static function propertyCall(string $propertyName, callable $callable, Rule $rule): ChainedValidator; + public static function propertyCall(string $propertyName, callable $callable, Rule $rule): Chain; - public static function propertyCallableType(string $propertyName): ChainedValidator; + public static function propertyCallableType(string $propertyName): Chain; - public static function propertyCallback( - string $propertyName, - callable $callback, - mixed ...$arguments, - ): ChainedValidator; + public static function propertyCallback(string $propertyName, callable $callback, mixed ...$arguments): Chain; - public static function propertyCharset( - string $propertyName, - string $charset, - string ...$charsets, - ): ChainedValidator; + public static function propertyCharset(string $propertyName, string $charset, string ...$charsets): Chain; - public static function propertyCnh(string $propertyName): ChainedValidator; + public static function propertyCnh(string $propertyName): Chain; - public static function propertyCnpj(string $propertyName): ChainedValidator; + public static function propertyCnpj(string $propertyName): Chain; - public static function propertyConsecutive( - string $propertyName, - Rule $rule1, - Rule $rule2, - Rule ...$rules, - ): ChainedValidator; + public static function propertyConsecutive(string $propertyName, Rule $rule1, Rule $rule2, Rule ...$rules): Chain; - public static function propertyConsonant(string $propertyName, string ...$additionalChars): ChainedValidator; + public static function propertyConsonant(string $propertyName, string ...$additionalChars): Chain; public static function propertyContains( string $propertyName, mixed $containsValue, bool $identical = false, - ): ChainedValidator; + ): Chain; /** * @param non-empty-array $needles */ - public static function propertyContainsAny( - string $propertyName, - array $needles, - bool $identical = false, - ): ChainedValidator; + public static function propertyContainsAny(string $propertyName, array $needles, bool $identical = false): Chain; - public static function propertyControl(string $propertyName, string ...$additionalChars): ChainedValidator; + public static function propertyControl(string $propertyName, string ...$additionalChars): Chain; - public static function propertyCountable(string $propertyName): ChainedValidator; + public static function propertyCountable(string $propertyName): Chain; /** * @param "alpha-2"|"alpha-3"|"numeric" $set */ - public static function propertyCountryCode(string $propertyName, string $set = 'alpha-2'): ChainedValidator; + public static function propertyCountryCode(string $propertyName, string $set = 'alpha-2'): Chain; - public static function propertyCpf(string $propertyName): ChainedValidator; + public static function propertyCpf(string $propertyName): Chain; - public static function propertyCreditCard(string $propertyName, string $brand = 'Any'): ChainedValidator; + public static function propertyCreditCard(string $propertyName, string $brand = 'Any'): Chain; /** * @param "alpha-3"|"numeric" $set */ - public static function propertyCurrencyCode(string $propertyName, string $set = 'alpha-3'): ChainedValidator; + public static function propertyCurrencyCode(string $propertyName, string $set = 'alpha-3'): Chain; - public static function propertyDate(string $propertyName, string $format = 'Y-m-d'): ChainedValidator; + public static function propertyDate(string $propertyName, string $format = 'Y-m-d'): Chain; - public static function propertyDateTime(string $propertyName, ?string $format = null): ChainedValidator; + public static function propertyDateTime(string $propertyName, ?string $format = null): Chain; /** * @param "years"|"months"|"days"|"hours"|"minutes"|"seconds"|"microseconds" $type @@ -137,289 +106,254 @@ public static function propertyDateTimeDiff( Rule $rule, ?string $format = null, ?DateTimeImmutable $now = null, - ): ChainedValidator; + ): Chain; - public static function propertyDecimal(string $propertyName, int $decimals): ChainedValidator; + public static function propertyDecimal(string $propertyName, int $decimals): Chain; - public static function propertyDigit(string $propertyName, string ...$additionalChars): ChainedValidator; + public static function propertyDigit(string $propertyName, string ...$additionalChars): Chain; - public static function propertyDirectory(string $propertyName): ChainedValidator; + public static function propertyDirectory(string $propertyName): Chain; - public static function propertyDomain(string $propertyName, bool $tldCheck = true): ChainedValidator; + public static function propertyDomain(string $propertyName, bool $tldCheck = true): Chain; - public static function propertyEach(string $propertyName, Rule $rule): ChainedValidator; + public static function propertyEach(string $propertyName, Rule $rule): Chain; - public static function propertyEmail(string $propertyName): ChainedValidator; + public static function propertyEmail(string $propertyName): Chain; - public static function propertyEndsWith( - string $propertyName, - mixed $endValue, - bool $identical = false, - ): ChainedValidator; + public static function propertyEndsWith(string $propertyName, mixed $endValue, bool $identical = false): Chain; - public static function propertyEquals(string $propertyName, mixed $compareTo): ChainedValidator; + public static function propertyEquals(string $propertyName, mixed $compareTo): Chain; - public static function propertyEquivalent(string $propertyName, mixed $compareTo): ChainedValidator; + public static function propertyEquivalent(string $propertyName, mixed $compareTo): Chain; - public static function propertyEven(string $propertyName): ChainedValidator; + public static function propertyEven(string $propertyName): Chain; - public static function propertyExecutable(string $propertyName): ChainedValidator; + public static function propertyExecutable(string $propertyName): Chain; - public static function propertyExtension(string $propertyName, string $extension): ChainedValidator; + public static function propertyExtension(string $propertyName, string $extension): Chain; - public static function propertyFactor(string $propertyName, int $dividend): ChainedValidator; + public static function propertyFactor(string $propertyName, int $dividend): Chain; - public static function propertyFalseVal(string $propertyName): ChainedValidator; + public static function propertyFalseVal(string $propertyName): Chain; - public static function propertyFibonacci(string $propertyName): ChainedValidator; + public static function propertyFibonacci(string $propertyName): Chain; - public static function propertyFile(string $propertyName): ChainedValidator; + public static function propertyFile(string $propertyName): Chain; - public static function propertyFilterVar( - string $propertyName, - int $filter, - mixed $options = null, - ): ChainedValidator; + public static function propertyFilterVar(string $propertyName, int $filter, mixed $options = null): Chain; - public static function propertyFinite(string $propertyName): ChainedValidator; + public static function propertyFinite(string $propertyName): Chain; - public static function propertyFloatType(string $propertyName): ChainedValidator; + public static function propertyFloatType(string $propertyName): Chain; - public static function propertyFloatVal(string $propertyName): ChainedValidator; + public static function propertyFloatVal(string $propertyName): Chain; - public static function propertyGraph(string $propertyName, string ...$additionalChars): ChainedValidator; + public static function propertyGraph(string $propertyName, string ...$additionalChars): Chain; - public static function propertyGreaterThan(string $propertyName, mixed $compareTo): ChainedValidator; + public static function propertyGreaterThan(string $propertyName, mixed $compareTo): Chain; - public static function propertyGreaterThanOrEqual(string $propertyName, mixed $compareTo): ChainedValidator; + public static function propertyGreaterThanOrEqual(string $propertyName, mixed $compareTo): Chain; - public static function propertyHetu(string $propertyName): ChainedValidator; + public static function propertyHetu(string $propertyName): Chain; - public static function propertyHexRgbColor(string $propertyName): ChainedValidator; + public static function propertyHexRgbColor(string $propertyName): Chain; - public static function propertyIban(string $propertyName): ChainedValidator; + public static function propertyIban(string $propertyName): Chain; - public static function propertyIdentical(string $propertyName, mixed $compareTo): ChainedValidator; + public static function propertyIdentical(string $propertyName, mixed $compareTo): Chain; - public static function propertyImage(string $propertyName): ChainedValidator; + public static function propertyImage(string $propertyName): Chain; - public static function propertyImei(string $propertyName): ChainedValidator; + public static function propertyImei(string $propertyName): Chain; - public static function propertyIn( - string $propertyName, - mixed $haystack, - bool $compareIdentical = false, - ): ChainedValidator; + public static function propertyIn(string $propertyName, mixed $haystack, bool $compareIdentical = false): Chain; - public static function propertyInfinite(string $propertyName): ChainedValidator; + public static function propertyInfinite(string $propertyName): Chain; /** * @param class-string $class */ - public static function propertyInstance(string $propertyName, string $class): ChainedValidator; + public static function propertyInstance(string $propertyName, string $class): Chain; - public static function propertyIntType(string $propertyName): ChainedValidator; + public static function propertyIntType(string $propertyName): Chain; - public static function propertyIntVal(string $propertyName): ChainedValidator; + public static function propertyIntVal(string $propertyName): Chain; - public static function propertyIp( - string $propertyName, - string $range = '*', - ?int $options = null, - ): ChainedValidator; + public static function propertyIp(string $propertyName, string $range = '*', ?int $options = null): Chain; - public static function propertyIsbn(string $propertyName): ChainedValidator; + public static function propertyIsbn(string $propertyName): Chain; - public static function propertyIterableType(string $propertyName): ChainedValidator; + public static function propertyIterableType(string $propertyName): Chain; - public static function propertyIterableVal(string $propertyName): ChainedValidator; + public static function propertyIterableVal(string $propertyName): Chain; - public static function propertyJson(string $propertyName): ChainedValidator; + public static function propertyJson(string $propertyName): Chain; /** * @param "alpha-2"|"alpha-3" $set */ - public static function propertyLanguageCode(string $propertyName, string $set = 'alpha-2'): ChainedValidator; + public static function propertyLanguageCode(string $propertyName, string $set = 'alpha-2'): Chain; /** * @param callable(mixed): Rule $ruleCreator */ - public static function propertyLazy(string $propertyName, callable $ruleCreator): ChainedValidator; + public static function propertyLazy(string $propertyName, callable $ruleCreator): Chain; - public static function propertyLeapDate(string $propertyName, string $format): ChainedValidator; + public static function propertyLeapDate(string $propertyName, string $format): Chain; - public static function propertyLeapYear(string $propertyName): ChainedValidator; + public static function propertyLeapYear(string $propertyName): Chain; - public static function propertyLength(string $propertyName, Rule $rule): ChainedValidator; + public static function propertyLength(string $propertyName, Rule $rule): Chain; - public static function propertyLessThan(string $propertyName, mixed $compareTo): ChainedValidator; + public static function propertyLessThan(string $propertyName, mixed $compareTo): Chain; - public static function propertyLessThanOrEqual(string $propertyName, mixed $compareTo): ChainedValidator; + public static function propertyLessThanOrEqual(string $propertyName, mixed $compareTo): Chain; - public static function propertyLowercase(string $propertyName): ChainedValidator; + public static function propertyLowercase(string $propertyName): Chain; - public static function propertyLuhn(string $propertyName): ChainedValidator; + public static function propertyLuhn(string $propertyName): Chain; - public static function propertyMacAddress(string $propertyName): ChainedValidator; + public static function propertyMacAddress(string $propertyName): Chain; - public static function propertyMax(string $propertyName, Rule $rule): ChainedValidator; + public static function propertyMax(string $propertyName, Rule $rule): Chain; - public static function propertyMimetype(string $propertyName, string $mimetype): ChainedValidator; + public static function propertyMimetype(string $propertyName, string $mimetype): Chain; - public static function propertyMin(string $propertyName, Rule $rule): ChainedValidator; + public static function propertyMin(string $propertyName, Rule $rule): Chain; - public static function propertyMultiple(string $propertyName, int $multipleOf): ChainedValidator; + public static function propertyMultiple(string $propertyName, int $multipleOf): Chain; - public static function propertyNegative(string $propertyName): ChainedValidator; + public static function propertyNegative(string $propertyName): Chain; - public static function propertyNfeAccessKey(string $propertyName): ChainedValidator; + public static function propertyNfeAccessKey(string $propertyName): Chain; - public static function propertyNif(string $propertyName): ChainedValidator; + public static function propertyNif(string $propertyName): Chain; - public static function propertyNip(string $propertyName): ChainedValidator; + public static function propertyNip(string $propertyName): Chain; - public static function propertyNo(string $propertyName, bool $useLocale = false): ChainedValidator; + public static function propertyNo(string $propertyName, bool $useLocale = false): Chain; - public static function propertyNoWhitespace(string $propertyName): ChainedValidator; + public static function propertyNoWhitespace(string $propertyName): Chain; - public static function propertyNoneOf( - string $propertyName, - Rule $rule1, - Rule $rule2, - Rule ...$rules, - ): ChainedValidator; + public static function propertyNoneOf(string $propertyName, Rule $rule1, Rule $rule2, Rule ...$rules): Chain; - public static function propertyNot(string $propertyName, Rule $rule): ChainedValidator; + public static function propertyNot(string $propertyName, Rule $rule): Chain; - public static function propertyNotBlank(string $propertyName): ChainedValidator; + public static function propertyNotBlank(string $propertyName): Chain; - public static function propertyNotEmoji(string $propertyName): ChainedValidator; + public static function propertyNotEmoji(string $propertyName): Chain; - public static function propertyNotEmpty(string $propertyName): ChainedValidator; + public static function propertyNotEmpty(string $propertyName): Chain; - public static function propertyNotOptional(string $propertyName): ChainedValidator; + public static function propertyNotOptional(string $propertyName): Chain; - public static function propertyNotUndef(string $propertyName): ChainedValidator; + public static function propertyNotUndef(string $propertyName): Chain; - public static function propertyNullType(string $propertyName): ChainedValidator; + public static function propertyNullType(string $propertyName): Chain; - public static function propertyNumber(string $propertyName): ChainedValidator; + public static function propertyNumber(string $propertyName): Chain; - public static function propertyNumericVal(string $propertyName): ChainedValidator; + public static function propertyNumericVal(string $propertyName): Chain; - public static function propertyObjectType(string $propertyName): ChainedValidator; + public static function propertyObjectType(string $propertyName): Chain; - public static function propertyOdd(string $propertyName): ChainedValidator; + public static function propertyOdd(string $propertyName): Chain; - public static function propertyOneOf( - string $propertyName, - Rule $rule1, - Rule $rule2, - Rule ...$rules, - ): ChainedValidator; + public static function propertyOneOf(string $propertyName, Rule $rule1, Rule $rule2, Rule ...$rules): Chain; - public static function propertyPerfectSquare(string $propertyName): ChainedValidator; + public static function propertyPerfectSquare(string $propertyName): Chain; - public static function propertyPesel(string $propertyName): ChainedValidator; + public static function propertyPesel(string $propertyName): Chain; - public static function propertyPhone(string $propertyName, ?string $countryCode = null): ChainedValidator; + public static function propertyPhone(string $propertyName, ?string $countryCode = null): Chain; - public static function propertyPhpLabel(string $propertyName): ChainedValidator; + public static function propertyPhpLabel(string $propertyName): Chain; - public static function propertyPis(string $propertyName): ChainedValidator; + public static function propertyPis(string $propertyName): Chain; - public static function propertyPolishIdCard(string $propertyName): ChainedValidator; + public static function propertyPolishIdCard(string $propertyName): Chain; - public static function propertyPortugueseNif(string $propertyName): ChainedValidator; + public static function propertyPortugueseNif(string $propertyName): Chain; - public static function propertyPositive(string $propertyName): ChainedValidator; + public static function propertyPositive(string $propertyName): Chain; public static function propertyPostalCode( string $propertyName, string $countryCode, bool $formatted = false, - ): ChainedValidator; + ): Chain; - public static function propertyPrimeNumber(string $propertyName): ChainedValidator; + public static function propertyPrimeNumber(string $propertyName): Chain; - public static function propertyPrintable(string $propertyName, string ...$additionalChars): ChainedValidator; + public static function propertyPrintable(string $propertyName, string ...$additionalChars): Chain; - public static function propertyPublicDomainSuffix(string $propertyName): ChainedValidator; + public static function propertyPublicDomainSuffix(string $propertyName): Chain; - public static function propertyPunct(string $propertyName, string ...$additionalChars): ChainedValidator; + public static function propertyPunct(string $propertyName, string ...$additionalChars): Chain; - public static function propertyReadable(string $propertyName): ChainedValidator; + public static function propertyReadable(string $propertyName): Chain; - public static function propertyRegex(string $propertyName, string $regex): ChainedValidator; + public static function propertyRegex(string $propertyName, string $regex): Chain; - public static function propertyResourceType(string $propertyName): ChainedValidator; + public static function propertyResourceType(string $propertyName): Chain; - public static function propertyRoman(string $propertyName): ChainedValidator; + public static function propertyRoman(string $propertyName): Chain; - public static function propertyScalarVal(string $propertyName): ChainedValidator; + public static function propertyScalarVal(string $propertyName): Chain; /** * @param "B"|"KB"|"MB"|"GB"|"TB"|"PB"|"EB"|"ZB"|"YB" $unit */ - public static function propertySize(string $propertyName, string $unit, Rule $rule): ChainedValidator; + public static function propertySize(string $propertyName, string $unit, Rule $rule): Chain; - public static function propertySlug(string $propertyName): ChainedValidator; + public static function propertySlug(string $propertyName): Chain; - public static function propertySorted(string $propertyName, string $direction): ChainedValidator; + public static function propertySorted(string $propertyName, string $direction): Chain; - public static function propertySpace(string $propertyName, string ...$additionalChars): ChainedValidator; + public static function propertySpace(string $propertyName, string ...$additionalChars): Chain; - public static function propertyStartsWith( - string $propertyName, - mixed $startValue, - bool $identical = false, - ): ChainedValidator; + public static function propertyStartsWith(string $propertyName, mixed $startValue, bool $identical = false): Chain; - public static function propertyStringType(string $propertyName): ChainedValidator; + public static function propertyStringType(string $propertyName): Chain; - public static function propertyStringVal(string $propertyName): ChainedValidator; + public static function propertyStringVal(string $propertyName): Chain; - public static function propertySubdivisionCode(string $propertyName, string $countryCode): ChainedValidator; + public static function propertySubdivisionCode(string $propertyName, string $countryCode): Chain; /** * @param mixed[] $superset */ - public static function propertySubset(string $propertyName, array $superset): ChainedValidator; + public static function propertySubset(string $propertyName, array $superset): Chain; - public static function propertySymbolicLink(string $propertyName): ChainedValidator; + public static function propertySymbolicLink(string $propertyName): Chain; - public static function propertyTime(string $propertyName, string $format = 'H:i:s'): ChainedValidator; + public static function propertyTime(string $propertyName, string $format = 'H:i:s'): Chain; - public static function propertyTld(string $propertyName): ChainedValidator; + public static function propertyTld(string $propertyName): Chain; - public static function propertyTrueVal(string $propertyName): ChainedValidator; + public static function propertyTrueVal(string $propertyName): Chain; - public static function propertyUnique(string $propertyName): ChainedValidator; + public static function propertyUnique(string $propertyName): Chain; - public static function propertyUploaded(string $propertyName): ChainedValidator; + public static function propertyUploaded(string $propertyName): Chain; - public static function propertyUppercase(string $propertyName): ChainedValidator; + public static function propertyUppercase(string $propertyName): Chain; - public static function propertyUrl(string $propertyName): ChainedValidator; + public static function propertyUrl(string $propertyName): Chain; - public static function propertyUuid(string $propertyName, ?int $version = null): ChainedValidator; + public static function propertyUuid(string $propertyName, ?int $version = null): Chain; - public static function propertyVersion(string $propertyName): ChainedValidator; + public static function propertyVersion(string $propertyName): Chain; - public static function propertyVideoUrl(string $propertyName, ?string $service = null): ChainedValidator; + public static function propertyVideoUrl(string $propertyName, ?string $service = null): Chain; - public static function propertyVowel(string $propertyName, string ...$additionalChars): ChainedValidator; + public static function propertyVowel(string $propertyName, string ...$additionalChars): Chain; - public static function propertyWhen( - string $propertyName, - Rule $when, - Rule $then, - ?Rule $else = null, - ): ChainedValidator; + public static function propertyWhen(string $propertyName, Rule $when, Rule $then, ?Rule $else = null): Chain; - public static function propertyWritable(string $propertyName): ChainedValidator; + public static function propertyWritable(string $propertyName): Chain; - public static function propertyXdigit(string $propertyName, string ...$additionalChars): ChainedValidator; + public static function propertyXdigit(string $propertyName, string ...$additionalChars): Chain; - public static function propertyYes(string $propertyName, bool $useLocale = false): ChainedValidator; + public static function propertyYes(string $propertyName, bool $useLocale = false): Chain; } diff --git a/library/Mixins/ChainedProperty.php b/library/Mixins/PropertyChain.php similarity index 57% rename from library/Mixins/ChainedProperty.php rename to library/Mixins/PropertyChain.php index dc63fdca2..96f909f66 100644 --- a/library/Mixins/ChainedProperty.php +++ b/library/Mixins/PropertyChain.php @@ -12,99 +12,86 @@ use DateTimeImmutable; use Respect\Validation\Rule; -interface ChainedProperty +interface PropertyChain { - public function propertyAllOf(string $propertyName, Rule $rule1, Rule $rule2, Rule ...$rules): ChainedValidator; + public function propertyAllOf(string $propertyName, Rule $rule1, Rule $rule2, Rule ...$rules): Chain; - public function propertyAlnum(string $propertyName, string ...$additionalChars): ChainedValidator; + public function propertyAlnum(string $propertyName, string ...$additionalChars): Chain; - public function propertyAlpha(string $propertyName, string ...$additionalChars): ChainedValidator; + public function propertyAlpha(string $propertyName, string ...$additionalChars): Chain; - public function propertyAlwaysInvalid(string $propertyName): ChainedValidator; + public function propertyAlwaysInvalid(string $propertyName): Chain; - public function propertyAlwaysValid(string $propertyName): ChainedValidator; + public function propertyAlwaysValid(string $propertyName): Chain; - public function propertyAnyOf(string $propertyName, Rule $rule1, Rule $rule2, Rule ...$rules): ChainedValidator; + public function propertyAnyOf(string $propertyName, Rule $rule1, Rule $rule2, Rule ...$rules): Chain; - public function propertyArrayType(string $propertyName): ChainedValidator; + public function propertyArrayType(string $propertyName): Chain; - public function propertyArrayVal(string $propertyName): ChainedValidator; + public function propertyArrayVal(string $propertyName): Chain; public function propertyBase( string $propertyName, int $base, string $chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', - ): ChainedValidator; + ): Chain; - public function propertyBase64(string $propertyName): ChainedValidator; + public function propertyBase64(string $propertyName): Chain; - public function propertyBetween(string $propertyName, mixed $minValue, mixed $maxValue): ChainedValidator; + public function propertyBetween(string $propertyName, mixed $minValue, mixed $maxValue): Chain; - public function propertyBetweenExclusive(string $propertyName, mixed $minimum, mixed $maximum): ChainedValidator; + public function propertyBetweenExclusive(string $propertyName, mixed $minimum, mixed $maximum): Chain; - public function propertyBoolType(string $propertyName): ChainedValidator; + public function propertyBoolType(string $propertyName): Chain; - public function propertyBoolVal(string $propertyName): ChainedValidator; + public function propertyBoolVal(string $propertyName): Chain; - public function propertyBsn(string $propertyName): ChainedValidator; + public function propertyBsn(string $propertyName): Chain; - public function propertyCall(string $propertyName, callable $callable, Rule $rule): ChainedValidator; + public function propertyCall(string $propertyName, callable $callable, Rule $rule): Chain; - public function propertyCallableType(string $propertyName): ChainedValidator; + public function propertyCallableType(string $propertyName): Chain; - public function propertyCallback(string $propertyName, callable $callback, mixed ...$arguments): ChainedValidator; + public function propertyCallback(string $propertyName, callable $callback, mixed ...$arguments): Chain; - public function propertyCharset(string $propertyName, string $charset, string ...$charsets): ChainedValidator; + public function propertyCharset(string $propertyName, string $charset, string ...$charsets): Chain; - public function propertyCnh(string $propertyName): ChainedValidator; + public function propertyCnh(string $propertyName): Chain; - public function propertyCnpj(string $propertyName): ChainedValidator; + public function propertyCnpj(string $propertyName): Chain; - public function propertyConsecutive( - string $propertyName, - Rule $rule1, - Rule $rule2, - Rule ...$rules, - ): ChainedValidator; + public function propertyConsecutive(string $propertyName, Rule $rule1, Rule $rule2, Rule ...$rules): Chain; - public function propertyConsonant(string $propertyName, string ...$additionalChars): ChainedValidator; + public function propertyConsonant(string $propertyName, string ...$additionalChars): Chain; - public function propertyContains( - string $propertyName, - mixed $containsValue, - bool $identical = false, - ): ChainedValidator; + public function propertyContains(string $propertyName, mixed $containsValue, bool $identical = false): Chain; /** * @param non-empty-array $needles */ - public function propertyContainsAny( - string $propertyName, - array $needles, - bool $identical = false, - ): ChainedValidator; + public function propertyContainsAny(string $propertyName, array $needles, bool $identical = false): Chain; - public function propertyControl(string $propertyName, string ...$additionalChars): ChainedValidator; + public function propertyControl(string $propertyName, string ...$additionalChars): Chain; - public function propertyCountable(string $propertyName): ChainedValidator; + public function propertyCountable(string $propertyName): Chain; /** * @param "alpha-2"|"alpha-3"|"numeric" $set */ - public function propertyCountryCode(string $propertyName, string $set = 'alpha-2'): ChainedValidator; + public function propertyCountryCode(string $propertyName, string $set = 'alpha-2'): Chain; - public function propertyCpf(string $propertyName): ChainedValidator; + public function propertyCpf(string $propertyName): Chain; - public function propertyCreditCard(string $propertyName, string $brand = 'Any'): ChainedValidator; + public function propertyCreditCard(string $propertyName, string $brand = 'Any'): Chain; /** * @param "alpha-3"|"numeric" $set */ - public function propertyCurrencyCode(string $propertyName, string $set = 'alpha-3'): ChainedValidator; + public function propertyCurrencyCode(string $propertyName, string $set = 'alpha-3'): Chain; - public function propertyDate(string $propertyName, string $format = 'Y-m-d'): ChainedValidator; + public function propertyDate(string $propertyName, string $format = 'Y-m-d'): Chain; - public function propertyDateTime(string $propertyName, ?string $format = null): ChainedValidator; + public function propertyDateTime(string $propertyName, ?string $format = null): Chain; /** * @param "years"|"months"|"days"|"hours"|"minutes"|"seconds"|"microseconds" $type @@ -115,262 +102,250 @@ public function propertyDateTimeDiff( Rule $rule, ?string $format = null, ?DateTimeImmutable $now = null, - ): ChainedValidator; + ): Chain; - public function propertyDecimal(string $propertyName, int $decimals): ChainedValidator; + public function propertyDecimal(string $propertyName, int $decimals): Chain; - public function propertyDigit(string $propertyName, string ...$additionalChars): ChainedValidator; + public function propertyDigit(string $propertyName, string ...$additionalChars): Chain; - public function propertyDirectory(string $propertyName): ChainedValidator; + public function propertyDirectory(string $propertyName): Chain; - public function propertyDomain(string $propertyName, bool $tldCheck = true): ChainedValidator; + public function propertyDomain(string $propertyName, bool $tldCheck = true): Chain; - public function propertyEach(string $propertyName, Rule $rule): ChainedValidator; + public function propertyEach(string $propertyName, Rule $rule): Chain; - public function propertyEmail(string $propertyName): ChainedValidator; + public function propertyEmail(string $propertyName): Chain; - public function propertyEndsWith(string $propertyName, mixed $endValue, bool $identical = false): ChainedValidator; + public function propertyEndsWith(string $propertyName, mixed $endValue, bool $identical = false): Chain; - public function propertyEquals(string $propertyName, mixed $compareTo): ChainedValidator; + public function propertyEquals(string $propertyName, mixed $compareTo): Chain; - public function propertyEquivalent(string $propertyName, mixed $compareTo): ChainedValidator; + public function propertyEquivalent(string $propertyName, mixed $compareTo): Chain; - public function propertyEven(string $propertyName): ChainedValidator; + public function propertyEven(string $propertyName): Chain; - public function propertyExecutable(string $propertyName): ChainedValidator; + public function propertyExecutable(string $propertyName): Chain; - public function propertyExtension(string $propertyName, string $extension): ChainedValidator; + public function propertyExtension(string $propertyName, string $extension): Chain; - public function propertyFactor(string $propertyName, int $dividend): ChainedValidator; + public function propertyFactor(string $propertyName, int $dividend): Chain; - public function propertyFalseVal(string $propertyName): ChainedValidator; + public function propertyFalseVal(string $propertyName): Chain; - public function propertyFibonacci(string $propertyName): ChainedValidator; + public function propertyFibonacci(string $propertyName): Chain; - public function propertyFile(string $propertyName): ChainedValidator; + public function propertyFile(string $propertyName): Chain; - public function propertyFilterVar(string $propertyName, int $filter, mixed $options = null): ChainedValidator; + public function propertyFilterVar(string $propertyName, int $filter, mixed $options = null): Chain; - public function propertyFinite(string $propertyName): ChainedValidator; + public function propertyFinite(string $propertyName): Chain; - public function propertyFloatType(string $propertyName): ChainedValidator; + public function propertyFloatType(string $propertyName): Chain; - public function propertyFloatVal(string $propertyName): ChainedValidator; + public function propertyFloatVal(string $propertyName): Chain; - public function propertyGraph(string $propertyName, string ...$additionalChars): ChainedValidator; + public function propertyGraph(string $propertyName, string ...$additionalChars): Chain; - public function propertyGreaterThan(string $propertyName, mixed $compareTo): ChainedValidator; + public function propertyGreaterThan(string $propertyName, mixed $compareTo): Chain; - public function propertyGreaterThanOrEqual(string $propertyName, mixed $compareTo): ChainedValidator; + public function propertyGreaterThanOrEqual(string $propertyName, mixed $compareTo): Chain; - public function propertyHetu(string $propertyName): ChainedValidator; + public function propertyHetu(string $propertyName): Chain; - public function propertyHexRgbColor(string $propertyName): ChainedValidator; + public function propertyHexRgbColor(string $propertyName): Chain; - public function propertyIban(string $propertyName): ChainedValidator; + public function propertyIban(string $propertyName): Chain; - public function propertyIdentical(string $propertyName, mixed $compareTo): ChainedValidator; + public function propertyIdentical(string $propertyName, mixed $compareTo): Chain; - public function propertyImage(string $propertyName): ChainedValidator; + public function propertyImage(string $propertyName): Chain; - public function propertyImei(string $propertyName): ChainedValidator; + public function propertyImei(string $propertyName): Chain; - public function propertyIn( - string $propertyName, - mixed $haystack, - bool $compareIdentical = false, - ): ChainedValidator; + public function propertyIn(string $propertyName, mixed $haystack, bool $compareIdentical = false): Chain; - public function propertyInfinite(string $propertyName): ChainedValidator; + public function propertyInfinite(string $propertyName): Chain; /** * @param class-string $class */ - public function propertyInstance(string $propertyName, string $class): ChainedValidator; + public function propertyInstance(string $propertyName, string $class): Chain; - public function propertyIntType(string $propertyName): ChainedValidator; + public function propertyIntType(string $propertyName): Chain; - public function propertyIntVal(string $propertyName): ChainedValidator; + public function propertyIntVal(string $propertyName): Chain; - public function propertyIp(string $propertyName, string $range = '*', ?int $options = null): ChainedValidator; + public function propertyIp(string $propertyName, string $range = '*', ?int $options = null): Chain; - public function propertyIsbn(string $propertyName): ChainedValidator; + public function propertyIsbn(string $propertyName): Chain; - public function propertyIterableType(string $propertyName): ChainedValidator; + public function propertyIterableType(string $propertyName): Chain; - public function propertyIterableVal(string $propertyName): ChainedValidator; + public function propertyIterableVal(string $propertyName): Chain; - public function propertyJson(string $propertyName): ChainedValidator; + public function propertyJson(string $propertyName): Chain; /** * @param "alpha-2"|"alpha-3" $set */ - public function propertyLanguageCode(string $propertyName, string $set = 'alpha-2'): ChainedValidator; + public function propertyLanguageCode(string $propertyName, string $set = 'alpha-2'): Chain; /** * @param callable(mixed): Rule $ruleCreator */ - public function propertyLazy(string $propertyName, callable $ruleCreator): ChainedValidator; + public function propertyLazy(string $propertyName, callable $ruleCreator): Chain; - public function propertyLeapDate(string $propertyName, string $format): ChainedValidator; + public function propertyLeapDate(string $propertyName, string $format): Chain; - public function propertyLeapYear(string $propertyName): ChainedValidator; + public function propertyLeapYear(string $propertyName): Chain; - public function propertyLength(string $propertyName, Rule $rule): ChainedValidator; + public function propertyLength(string $propertyName, Rule $rule): Chain; - public function propertyLessThan(string $propertyName, mixed $compareTo): ChainedValidator; + public function propertyLessThan(string $propertyName, mixed $compareTo): Chain; - public function propertyLessThanOrEqual(string $propertyName, mixed $compareTo): ChainedValidator; + public function propertyLessThanOrEqual(string $propertyName, mixed $compareTo): Chain; - public function propertyLowercase(string $propertyName): ChainedValidator; + public function propertyLowercase(string $propertyName): Chain; - public function propertyLuhn(string $propertyName): ChainedValidator; + public function propertyLuhn(string $propertyName): Chain; - public function propertyMacAddress(string $propertyName): ChainedValidator; + public function propertyMacAddress(string $propertyName): Chain; - public function propertyMax(string $propertyName, Rule $rule): ChainedValidator; + public function propertyMax(string $propertyName, Rule $rule): Chain; - public function propertyMimetype(string $propertyName, string $mimetype): ChainedValidator; + public function propertyMimetype(string $propertyName, string $mimetype): Chain; - public function propertyMin(string $propertyName, Rule $rule): ChainedValidator; + public function propertyMin(string $propertyName, Rule $rule): Chain; - public function propertyMultiple(string $propertyName, int $multipleOf): ChainedValidator; + public function propertyMultiple(string $propertyName, int $multipleOf): Chain; - public function propertyNegative(string $propertyName): ChainedValidator; + public function propertyNegative(string $propertyName): Chain; - public function propertyNfeAccessKey(string $propertyName): ChainedValidator; + public function propertyNfeAccessKey(string $propertyName): Chain; - public function propertyNif(string $propertyName): ChainedValidator; + public function propertyNif(string $propertyName): Chain; - public function propertyNip(string $propertyName): ChainedValidator; + public function propertyNip(string $propertyName): Chain; - public function propertyNo(string $propertyName, bool $useLocale = false): ChainedValidator; + public function propertyNo(string $propertyName, bool $useLocale = false): Chain; - public function propertyNoWhitespace(string $propertyName): ChainedValidator; + public function propertyNoWhitespace(string $propertyName): Chain; - public function propertyNoneOf(string $propertyName, Rule $rule1, Rule $rule2, Rule ...$rules): ChainedValidator; + public function propertyNoneOf(string $propertyName, Rule $rule1, Rule $rule2, Rule ...$rules): Chain; - public function propertyNot(string $propertyName, Rule $rule): ChainedValidator; + public function propertyNot(string $propertyName, Rule $rule): Chain; - public function propertyNotBlank(string $propertyName): ChainedValidator; + public function propertyNotBlank(string $propertyName): Chain; - public function propertyNotEmoji(string $propertyName): ChainedValidator; + public function propertyNotEmoji(string $propertyName): Chain; - public function propertyNotEmpty(string $propertyName): ChainedValidator; + public function propertyNotEmpty(string $propertyName): Chain; - public function propertyNotOptional(string $propertyName): ChainedValidator; + public function propertyNotOptional(string $propertyName): Chain; - public function propertyNotUndef(string $propertyName): ChainedValidator; + public function propertyNotUndef(string $propertyName): Chain; - public function propertyNullType(string $propertyName): ChainedValidator; + public function propertyNullType(string $propertyName): Chain; - public function propertyNumber(string $propertyName): ChainedValidator; + public function propertyNumber(string $propertyName): Chain; - public function propertyNumericVal(string $propertyName): ChainedValidator; + public function propertyNumericVal(string $propertyName): Chain; - public function propertyObjectType(string $propertyName): ChainedValidator; + public function propertyObjectType(string $propertyName): Chain; - public function propertyOdd(string $propertyName): ChainedValidator; + public function propertyOdd(string $propertyName): Chain; - public function propertyOneOf(string $propertyName, Rule $rule1, Rule $rule2, Rule ...$rules): ChainedValidator; + public function propertyOneOf(string $propertyName, Rule $rule1, Rule $rule2, Rule ...$rules): Chain; - public function propertyPerfectSquare(string $propertyName): ChainedValidator; + public function propertyPerfectSquare(string $propertyName): Chain; - public function propertyPesel(string $propertyName): ChainedValidator; + public function propertyPesel(string $propertyName): Chain; - public function propertyPhone(string $propertyName, ?string $countryCode = null): ChainedValidator; + public function propertyPhone(string $propertyName, ?string $countryCode = null): Chain; - public function propertyPhpLabel(string $propertyName): ChainedValidator; + public function propertyPhpLabel(string $propertyName): Chain; - public function propertyPis(string $propertyName): ChainedValidator; + public function propertyPis(string $propertyName): Chain; - public function propertyPolishIdCard(string $propertyName): ChainedValidator; + public function propertyPolishIdCard(string $propertyName): Chain; - public function propertyPortugueseNif(string $propertyName): ChainedValidator; + public function propertyPortugueseNif(string $propertyName): Chain; - public function propertyPositive(string $propertyName): ChainedValidator; + public function propertyPositive(string $propertyName): Chain; - public function propertyPostalCode( - string $propertyName, - string $countryCode, - bool $formatted = false, - ): ChainedValidator; + public function propertyPostalCode(string $propertyName, string $countryCode, bool $formatted = false): Chain; - public function propertyPrimeNumber(string $propertyName): ChainedValidator; + public function propertyPrimeNumber(string $propertyName): Chain; - public function propertyPrintable(string $propertyName, string ...$additionalChars): ChainedValidator; + public function propertyPrintable(string $propertyName, string ...$additionalChars): Chain; - public function propertyPublicDomainSuffix(string $propertyName): ChainedValidator; + public function propertyPublicDomainSuffix(string $propertyName): Chain; - public function propertyPunct(string $propertyName, string ...$additionalChars): ChainedValidator; + public function propertyPunct(string $propertyName, string ...$additionalChars): Chain; - public function propertyReadable(string $propertyName): ChainedValidator; + public function propertyReadable(string $propertyName): Chain; - public function propertyRegex(string $propertyName, string $regex): ChainedValidator; + public function propertyRegex(string $propertyName, string $regex): Chain; - public function propertyResourceType(string $propertyName): ChainedValidator; + public function propertyResourceType(string $propertyName): Chain; - public function propertyRoman(string $propertyName): ChainedValidator; + public function propertyRoman(string $propertyName): Chain; - public function propertyScalarVal(string $propertyName): ChainedValidator; + public function propertyScalarVal(string $propertyName): Chain; /** * @param "B"|"KB"|"MB"|"GB"|"TB"|"PB"|"EB"|"ZB"|"YB" $unit */ - public function propertySize(string $propertyName, string $unit, Rule $rule): ChainedValidator; + public function propertySize(string $propertyName, string $unit, Rule $rule): Chain; - public function propertySlug(string $propertyName): ChainedValidator; + public function propertySlug(string $propertyName): Chain; - public function propertySorted(string $propertyName, string $direction): ChainedValidator; + public function propertySorted(string $propertyName, string $direction): Chain; - public function propertySpace(string $propertyName, string ...$additionalChars): ChainedValidator; + public function propertySpace(string $propertyName, string ...$additionalChars): Chain; - public function propertyStartsWith( - string $propertyName, - mixed $startValue, - bool $identical = false, - ): ChainedValidator; + public function propertyStartsWith(string $propertyName, mixed $startValue, bool $identical = false): Chain; - public function propertyStringType(string $propertyName): ChainedValidator; + public function propertyStringType(string $propertyName): Chain; - public function propertyStringVal(string $propertyName): ChainedValidator; + public function propertyStringVal(string $propertyName): Chain; - public function propertySubdivisionCode(string $propertyName, string $countryCode): ChainedValidator; + public function propertySubdivisionCode(string $propertyName, string $countryCode): Chain; /** * @param mixed[] $superset */ - public function propertySubset(string $propertyName, array $superset): ChainedValidator; + public function propertySubset(string $propertyName, array $superset): Chain; - public function propertySymbolicLink(string $propertyName): ChainedValidator; + public function propertySymbolicLink(string $propertyName): Chain; - public function propertyTime(string $propertyName, string $format = 'H:i:s'): ChainedValidator; + public function propertyTime(string $propertyName, string $format = 'H:i:s'): Chain; - public function propertyTld(string $propertyName): ChainedValidator; + public function propertyTld(string $propertyName): Chain; - public function propertyTrueVal(string $propertyName): ChainedValidator; + public function propertyTrueVal(string $propertyName): Chain; - public function propertyUnique(string $propertyName): ChainedValidator; + public function propertyUnique(string $propertyName): Chain; - public function propertyUploaded(string $propertyName): ChainedValidator; + public function propertyUploaded(string $propertyName): Chain; - public function propertyUppercase(string $propertyName): ChainedValidator; + public function propertyUppercase(string $propertyName): Chain; - public function propertyUrl(string $propertyName): ChainedValidator; + public function propertyUrl(string $propertyName): Chain; - public function propertyUuid(string $propertyName, ?int $version = null): ChainedValidator; + public function propertyUuid(string $propertyName, ?int $version = null): Chain; - public function propertyVersion(string $propertyName): ChainedValidator; + public function propertyVersion(string $propertyName): Chain; - public function propertyVideoUrl(string $propertyName, ?string $service = null): ChainedValidator; + public function propertyVideoUrl(string $propertyName, ?string $service = null): Chain; - public function propertyVowel(string $propertyName, string ...$additionalChars): ChainedValidator; + public function propertyVowel(string $propertyName, string ...$additionalChars): Chain; - public function propertyWhen(string $propertyName, Rule $when, Rule $then, ?Rule $else = null): ChainedValidator; + public function propertyWhen(string $propertyName, Rule $when, Rule $then, ?Rule $else = null): Chain; - public function propertyWritable(string $propertyName): ChainedValidator; + public function propertyWritable(string $propertyName): Chain; - public function propertyXdigit(string $propertyName, string ...$additionalChars): ChainedValidator; + public function propertyXdigit(string $propertyName, string ...$additionalChars): Chain; - public function propertyYes(string $propertyName, bool $useLocale = false): ChainedValidator; + public function propertyYes(string $propertyName, bool $useLocale = false): Chain; } diff --git a/library/Mixins/StaticKey.php b/library/Mixins/StaticKey.php deleted file mode 100644 index b07bf401b..000000000 --- a/library/Mixins/StaticKey.php +++ /dev/null @@ -1,363 +0,0 @@ - - * SPDX-License-Identifier: MIT - */ - -declare(strict_types=1); - -namespace Respect\Validation\Mixins; - -use DateTimeImmutable; -use Respect\Validation\Rule; - -interface StaticKey -{ - public static function keyAllOf(int|string $key, Rule $rule1, Rule $rule2, Rule ...$rules): ChainedValidator; - - public static function keyAlnum(int|string $key, string ...$additionalChars): ChainedValidator; - - public static function keyAlpha(int|string $key, string ...$additionalChars): ChainedValidator; - - public static function keyAlwaysInvalid(int|string $key): ChainedValidator; - - public static function keyAlwaysValid(int|string $key): ChainedValidator; - - public static function keyAnyOf(int|string $key, Rule $rule1, Rule $rule2, Rule ...$rules): ChainedValidator; - - public static function keyArrayType(int|string $key): ChainedValidator; - - public static function keyArrayVal(int|string $key): ChainedValidator; - - public static function keyBase( - int|string $key, - int $base, - string $chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', - ): ChainedValidator; - - public static function keyBase64(int|string $key): ChainedValidator; - - public static function keyBetween(int|string $key, mixed $minValue, mixed $maxValue): ChainedValidator; - - public static function keyBetweenExclusive(int|string $key, mixed $minimum, mixed $maximum): ChainedValidator; - - public static function keyBoolType(int|string $key): ChainedValidator; - - public static function keyBoolVal(int|string $key): ChainedValidator; - - public static function keyBsn(int|string $key): ChainedValidator; - - public static function keyCall(int|string $key, callable $callable, Rule $rule): ChainedValidator; - - public static function keyCallableType(int|string $key): ChainedValidator; - - public static function keyCallback(int|string $key, callable $callback, mixed ...$arguments): ChainedValidator; - - public static function keyCharset(int|string $key, string $charset, string ...$charsets): ChainedValidator; - - public static function keyCnh(int|string $key): ChainedValidator; - - public static function keyCnpj(int|string $key): ChainedValidator; - - public static function keyConsecutive(int|string $key, Rule $rule1, Rule $rule2, Rule ...$rules): ChainedValidator; - - public static function keyConsonant(int|string $key, string ...$additionalChars): ChainedValidator; - - public static function keyContains( - int|string $key, - mixed $containsValue, - bool $identical = false, - ): ChainedValidator; - - /** - * @param non-empty-array $needles - */ - public static function keyContainsAny(int|string $key, array $needles, bool $identical = false): ChainedValidator; - - public static function keyControl(int|string $key, string ...$additionalChars): ChainedValidator; - - public static function keyCountable(int|string $key): ChainedValidator; - - /** - * @param "alpha-2"|"alpha-3"|"numeric" $set - */ - public static function keyCountryCode(int|string $key, string $set = 'alpha-2'): ChainedValidator; - - public static function keyCpf(int|string $key): ChainedValidator; - - public static function keyCreditCard(int|string $key, string $brand = 'Any'): ChainedValidator; - - /** - * @param "alpha-3"|"numeric" $set - */ - public static function keyCurrencyCode(int|string $key, string $set = 'alpha-3'): ChainedValidator; - - public static function keyDate(int|string $key, string $format = 'Y-m-d'): ChainedValidator; - - public static function keyDateTime(int|string $key, ?string $format = null): ChainedValidator; - - /** - * @param "years"|"months"|"days"|"hours"|"minutes"|"seconds"|"microseconds" $type - */ - public static function keyDateTimeDiff( - int|string $key, - string $type, - Rule $rule, - ?string $format = null, - ?DateTimeImmutable $now = null, - ): ChainedValidator; - - public static function keyDecimal(int|string $key, int $decimals): ChainedValidator; - - public static function keyDigit(int|string $key, string ...$additionalChars): ChainedValidator; - - public static function keyDirectory(int|string $key): ChainedValidator; - - public static function keyDomain(int|string $key, bool $tldCheck = true): ChainedValidator; - - public static function keyEach(int|string $key, Rule $rule): ChainedValidator; - - public static function keyEmail(int|string $key): ChainedValidator; - - public static function keyEndsWith(int|string $key, mixed $endValue, bool $identical = false): ChainedValidator; - - public static function keyEquals(int|string $key, mixed $compareTo): ChainedValidator; - - public static function keyEquivalent(int|string $key, mixed $compareTo): ChainedValidator; - - public static function keyEven(int|string $key): ChainedValidator; - - public static function keyExecutable(int|string $key): ChainedValidator; - - public static function keyExtension(int|string $key, string $extension): ChainedValidator; - - public static function keyFactor(int|string $key, int $dividend): ChainedValidator; - - public static function keyFalseVal(int|string $key): ChainedValidator; - - public static function keyFibonacci(int|string $key): ChainedValidator; - - public static function keyFile(int|string $key): ChainedValidator; - - public static function keyFilterVar(int|string $key, int $filter, mixed $options = null): ChainedValidator; - - public static function keyFinite(int|string $key): ChainedValidator; - - public static function keyFloatType(int|string $key): ChainedValidator; - - public static function keyFloatVal(int|string $key): ChainedValidator; - - public static function keyGraph(int|string $key, string ...$additionalChars): ChainedValidator; - - public static function keyGreaterThan(int|string $key, mixed $compareTo): ChainedValidator; - - public static function keyGreaterThanOrEqual(int|string $key, mixed $compareTo): ChainedValidator; - - public static function keyHetu(int|string $key): ChainedValidator; - - public static function keyHexRgbColor(int|string $key): ChainedValidator; - - public static function keyIban(int|string $key): ChainedValidator; - - public static function keyIdentical(int|string $key, mixed $compareTo): ChainedValidator; - - public static function keyImage(int|string $key): ChainedValidator; - - public static function keyImei(int|string $key): ChainedValidator; - - public static function keyIn(int|string $key, mixed $haystack, bool $compareIdentical = false): ChainedValidator; - - public static function keyInfinite(int|string $key): ChainedValidator; - - /** - * @param class-string $class - */ - public static function keyInstance(int|string $key, string $class): ChainedValidator; - - public static function keyIntType(int|string $key): ChainedValidator; - - public static function keyIntVal(int|string $key): ChainedValidator; - - public static function keyIp(int|string $key, string $range = '*', ?int $options = null): ChainedValidator; - - public static function keyIsbn(int|string $key): ChainedValidator; - - public static function keyIterableType(int|string $key): ChainedValidator; - - public static function keyIterableVal(int|string $key): ChainedValidator; - - public static function keyJson(int|string $key): ChainedValidator; - - /** - * @param "alpha-2"|"alpha-3" $set - */ - public static function keyLanguageCode(int|string $key, string $set = 'alpha-2'): ChainedValidator; - - /** - * @param callable(mixed): Rule $ruleCreator - */ - public static function keyLazy(int|string $key, callable $ruleCreator): ChainedValidator; - - public static function keyLeapDate(int|string $key, string $format): ChainedValidator; - - public static function keyLeapYear(int|string $key): ChainedValidator; - - public static function keyLength(int|string $key, Rule $rule): ChainedValidator; - - public static function keyLessThan(int|string $key, mixed $compareTo): ChainedValidator; - - public static function keyLessThanOrEqual(int|string $key, mixed $compareTo): ChainedValidator; - - public static function keyLowercase(int|string $key): ChainedValidator; - - public static function keyLuhn(int|string $key): ChainedValidator; - - public static function keyMacAddress(int|string $key): ChainedValidator; - - public static function keyMax(int|string $key, Rule $rule): ChainedValidator; - - public static function keyMimetype(int|string $key, string $mimetype): ChainedValidator; - - public static function keyMin(int|string $key, Rule $rule): ChainedValidator; - - public static function keyMultiple(int|string $key, int $multipleOf): ChainedValidator; - - public static function keyNegative(int|string $key): ChainedValidator; - - public static function keyNfeAccessKey(int|string $key): ChainedValidator; - - public static function keyNif(int|string $key): ChainedValidator; - - public static function keyNip(int|string $key): ChainedValidator; - - public static function keyNo(int|string $key, bool $useLocale = false): ChainedValidator; - - public static function keyNoWhitespace(int|string $key): ChainedValidator; - - public static function keyNoneOf(int|string $key, Rule $rule1, Rule $rule2, Rule ...$rules): ChainedValidator; - - public static function keyNot(int|string $key, Rule $rule): ChainedValidator; - - public static function keyNotBlank(int|string $key): ChainedValidator; - - public static function keyNotEmoji(int|string $key): ChainedValidator; - - public static function keyNotEmpty(int|string $key): ChainedValidator; - - public static function keyNotOptional(int|string $key): ChainedValidator; - - public static function keyNotUndef(int|string $key): ChainedValidator; - - public static function keyNullType(int|string $key): ChainedValidator; - - public static function keyNumber(int|string $key): ChainedValidator; - - public static function keyNumericVal(int|string $key): ChainedValidator; - - public static function keyObjectType(int|string $key): ChainedValidator; - - public static function keyOdd(int|string $key): ChainedValidator; - - public static function keyOneOf(int|string $key, Rule $rule1, Rule $rule2, Rule ...$rules): ChainedValidator; - - public static function keyPerfectSquare(int|string $key): ChainedValidator; - - public static function keyPesel(int|string $key): ChainedValidator; - - public static function keyPhone(int|string $key, ?string $countryCode = null): ChainedValidator; - - public static function keyPhpLabel(int|string $key): ChainedValidator; - - public static function keyPis(int|string $key): ChainedValidator; - - public static function keyPolishIdCard(int|string $key): ChainedValidator; - - public static function keyPortugueseNif(int|string $key): ChainedValidator; - - public static function keyPositive(int|string $key): ChainedValidator; - - public static function keyPostalCode( - int|string $key, - string $countryCode, - bool $formatted = false, - ): ChainedValidator; - - public static function keyPrimeNumber(int|string $key): ChainedValidator; - - public static function keyPrintable(int|string $key, string ...$additionalChars): ChainedValidator; - - public static function keyPublicDomainSuffix(int|string $key): ChainedValidator; - - public static function keyPunct(int|string $key, string ...$additionalChars): ChainedValidator; - - public static function keyReadable(int|string $key): ChainedValidator; - - public static function keyRegex(int|string $key, string $regex): ChainedValidator; - - public static function keyResourceType(int|string $key): ChainedValidator; - - public static function keyRoman(int|string $key): ChainedValidator; - - public static function keyScalarVal(int|string $key): ChainedValidator; - - /** - * @param "B"|"KB"|"MB"|"GB"|"TB"|"PB"|"EB"|"ZB"|"YB" $unit - */ - public static function keySize(int|string $key, string $unit, Rule $rule): ChainedValidator; - - public static function keySlug(int|string $key): ChainedValidator; - - public static function keySorted(int|string $key, string $direction): ChainedValidator; - - public static function keySpace(int|string $key, string ...$additionalChars): ChainedValidator; - - public static function keyStartsWith( - int|string $key, - mixed $startValue, - bool $identical = false, - ): ChainedValidator; - - public static function keyStringType(int|string $key): ChainedValidator; - - public static function keyStringVal(int|string $key): ChainedValidator; - - public static function keySubdivisionCode(int|string $key, string $countryCode): ChainedValidator; - - /** - * @param mixed[] $superset - */ - public static function keySubset(int|string $key, array $superset): ChainedValidator; - - public static function keySymbolicLink(int|string $key): ChainedValidator; - - public static function keyTime(int|string $key, string $format = 'H:i:s'): ChainedValidator; - - public static function keyTld(int|string $key): ChainedValidator; - - public static function keyTrueVal(int|string $key): ChainedValidator; - - public static function keyUnique(int|string $key): ChainedValidator; - - public static function keyUploaded(int|string $key): ChainedValidator; - - public static function keyUppercase(int|string $key): ChainedValidator; - - public static function keyUrl(int|string $key): ChainedValidator; - - public static function keyUuid(int|string $key, ?int $version = null): ChainedValidator; - - public static function keyVersion(int|string $key): ChainedValidator; - - public static function keyVideoUrl(int|string $key, ?string $service = null): ChainedValidator; - - public static function keyVowel(int|string $key, string ...$additionalChars): ChainedValidator; - - public static function keyWhen(int|string $key, Rule $when, Rule $then, ?Rule $else = null): ChainedValidator; - - public static function keyWritable(int|string $key): ChainedValidator; - - public static function keyXdigit(int|string $key, string ...$additionalChars): ChainedValidator; - - public static function keyYes(int|string $key, bool $useLocale = false): ChainedValidator; -} diff --git a/library/Mixins/StaticMax.php b/library/Mixins/StaticMax.php deleted file mode 100644 index 7090e1b49..000000000 --- a/library/Mixins/StaticMax.php +++ /dev/null @@ -1,53 +0,0 @@ - - * SPDX-License-Identifier: MIT - */ - -declare(strict_types=1); - -namespace Respect\Validation\Mixins; - -interface StaticMax -{ - public static function maxBetween(mixed $minValue, mixed $maxValue): ChainedValidator; - - public static function maxBetweenExclusive(mixed $minimum, mixed $maximum): ChainedValidator; - - public static function maxEquals(mixed $compareTo): ChainedValidator; - - public static function maxEquivalent(mixed $compareTo): ChainedValidator; - - public static function maxEven(): ChainedValidator; - - public static function maxFactor(int $dividend): ChainedValidator; - - public static function maxFibonacci(): ChainedValidator; - - public static function maxFinite(): ChainedValidator; - - public static function maxGreaterThan(mixed $compareTo): ChainedValidator; - - public static function maxGreaterThanOrEqual(mixed $compareTo): ChainedValidator; - - public static function maxIdentical(mixed $compareTo): ChainedValidator; - - public static function maxIn(mixed $haystack, bool $compareIdentical = false): ChainedValidator; - - public static function maxInfinite(): ChainedValidator; - - public static function maxLessThan(mixed $compareTo): ChainedValidator; - - public static function maxLessThanOrEqual(mixed $compareTo): ChainedValidator; - - public static function maxMultiple(int $multipleOf): ChainedValidator; - - public static function maxOdd(): ChainedValidator; - - public static function maxPerfectSquare(): ChainedValidator; - - public static function maxPositive(): ChainedValidator; - - public static function maxPrimeNumber(): ChainedValidator; -} diff --git a/library/Mixins/StaticMin.php b/library/Mixins/StaticMin.php deleted file mode 100644 index 68ba98943..000000000 --- a/library/Mixins/StaticMin.php +++ /dev/null @@ -1,53 +0,0 @@ - - * SPDX-License-Identifier: MIT - */ - -declare(strict_types=1); - -namespace Respect\Validation\Mixins; - -interface StaticMin -{ - public static function minBetween(mixed $minValue, mixed $maxValue): ChainedValidator; - - public static function minBetweenExclusive(mixed $minimum, mixed $maximum): ChainedValidator; - - public static function minEquals(mixed $compareTo): ChainedValidator; - - public static function minEquivalent(mixed $compareTo): ChainedValidator; - - public static function minEven(): ChainedValidator; - - public static function minFactor(int $dividend): ChainedValidator; - - public static function minFibonacci(): ChainedValidator; - - public static function minFinite(): ChainedValidator; - - public static function minGreaterThan(mixed $compareTo): ChainedValidator; - - public static function minGreaterThanOrEqual(mixed $compareTo): ChainedValidator; - - public static function minIdentical(mixed $compareTo): ChainedValidator; - - public static function minIn(mixed $haystack, bool $compareIdentical = false): ChainedValidator; - - public static function minInfinite(): ChainedValidator; - - public static function minLessThan(mixed $compareTo): ChainedValidator; - - public static function minLessThanOrEqual(mixed $compareTo): ChainedValidator; - - public static function minMultiple(int $multipleOf): ChainedValidator; - - public static function minOdd(): ChainedValidator; - - public static function minPerfectSquare(): ChainedValidator; - - public static function minPositive(): ChainedValidator; - - public static function minPrimeNumber(): ChainedValidator; -} diff --git a/library/Mixins/StaticNot.php b/library/Mixins/StaticNot.php deleted file mode 100644 index 220f9f06e..000000000 --- a/library/Mixins/StaticNot.php +++ /dev/null @@ -1,353 +0,0 @@ - - * SPDX-License-Identifier: MIT - */ - -declare(strict_types=1); - -namespace Respect\Validation\Mixins; - -use DateTimeImmutable; -use Respect\Validation\Rule; - -interface StaticNot -{ - public static function notAllOf(Rule $rule1, Rule $rule2, Rule ...$rules): ChainedValidator; - - public static function notAlnum(string ...$additionalChars): ChainedValidator; - - public static function notAlpha(string ...$additionalChars): ChainedValidator; - - public static function notAlwaysInvalid(): ChainedValidator; - - public static function notAlwaysValid(): ChainedValidator; - - public static function notAnyOf(Rule $rule1, Rule $rule2, Rule ...$rules): ChainedValidator; - - public static function notArrayType(): ChainedValidator; - - public static function notArrayVal(): ChainedValidator; - - public static function notBase( - int $base, - string $chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', - ): ChainedValidator; - - public static function notBase64(): ChainedValidator; - - public static function notBetween(mixed $minValue, mixed $maxValue): ChainedValidator; - - public static function notBetweenExclusive(mixed $minimum, mixed $maximum): ChainedValidator; - - public static function notBoolType(): ChainedValidator; - - public static function notBoolVal(): ChainedValidator; - - public static function notBsn(): ChainedValidator; - - public static function notCall(callable $callable, Rule $rule): ChainedValidator; - - public static function notCallableType(): ChainedValidator; - - public static function notCallback(callable $callback, mixed ...$arguments): ChainedValidator; - - public static function notCharset(string $charset, string ...$charsets): ChainedValidator; - - public static function notCnh(): ChainedValidator; - - public static function notCnpj(): ChainedValidator; - - public static function notConsecutive(Rule $rule1, Rule $rule2, Rule ...$rules): ChainedValidator; - - public static function notConsonant(string ...$additionalChars): ChainedValidator; - - public static function notContains(mixed $containsValue, bool $identical = false): ChainedValidator; - - /** - * @param non-empty-array $needles - */ - public static function notContainsAny(array $needles, bool $identical = false): ChainedValidator; - - public static function notControl(string ...$additionalChars): ChainedValidator; - - public static function notCountable(): ChainedValidator; - - /** - * @param "alpha-2"|"alpha-3"|"numeric" $set - */ - public static function notCountryCode(string $set = 'alpha-2'): ChainedValidator; - - public static function notCpf(): ChainedValidator; - - public static function notCreditCard(string $brand = 'Any'): ChainedValidator; - - /** - * @param "alpha-3"|"numeric" $set - */ - public static function notCurrencyCode(string $set = 'alpha-3'): ChainedValidator; - - public static function notDate(string $format = 'Y-m-d'): ChainedValidator; - - public static function notDateTime(?string $format = null): ChainedValidator; - - /** - * @param "years"|"months"|"days"|"hours"|"minutes"|"seconds"|"microseconds" $type - */ - public static function notDateTimeDiff( - string $type, - Rule $rule, - ?string $format = null, - ?DateTimeImmutable $now = null, - ): ChainedValidator; - - public static function notDecimal(int $decimals): ChainedValidator; - - public static function notDigit(string ...$additionalChars): ChainedValidator; - - public static function notDirectory(): ChainedValidator; - - public static function notDomain(bool $tldCheck = true): ChainedValidator; - - public static function notEach(Rule $rule): ChainedValidator; - - public static function notEmail(): ChainedValidator; - - public static function notEndsWith(mixed $endValue, bool $identical = false): ChainedValidator; - - public static function notEquals(mixed $compareTo): ChainedValidator; - - public static function notEquivalent(mixed $compareTo): ChainedValidator; - - public static function notEven(): ChainedValidator; - - public static function notExecutable(): ChainedValidator; - - public static function notExists(): ChainedValidator; - - public static function notExtension(string $extension): ChainedValidator; - - public static function notFactor(int $dividend): ChainedValidator; - - public static function notFalseVal(): ChainedValidator; - - public static function notFibonacci(): ChainedValidator; - - public static function notFile(): ChainedValidator; - - public static function notFilterVar(int $filter, mixed $options = null): ChainedValidator; - - public static function notFinite(): ChainedValidator; - - public static function notFloatType(): ChainedValidator; - - public static function notFloatVal(): ChainedValidator; - - public static function notGraph(string ...$additionalChars): ChainedValidator; - - public static function notGreaterThan(mixed $compareTo): ChainedValidator; - - public static function notGreaterThanOrEqual(mixed $compareTo): ChainedValidator; - - public static function notHetu(): ChainedValidator; - - public static function notHexRgbColor(): ChainedValidator; - - public static function notIban(): ChainedValidator; - - public static function notIdentical(mixed $compareTo): ChainedValidator; - - public static function notImage(): ChainedValidator; - - public static function notImei(): ChainedValidator; - - public static function notIn(mixed $haystack, bool $compareIdentical = false): ChainedValidator; - - public static function notInfinite(): ChainedValidator; - - /** - * @param class-string $class - */ - public static function notInstance(string $class): ChainedValidator; - - public static function notIntType(): ChainedValidator; - - public static function notIntVal(): ChainedValidator; - - public static function notIp(string $range = '*', ?int $options = null): ChainedValidator; - - public static function notIsbn(): ChainedValidator; - - public static function notIterableType(): ChainedValidator; - - public static function notIterableVal(): ChainedValidator; - - public static function notJson(): ChainedValidator; - - public static function notKey(string|int $key, Rule $rule): ChainedValidator; - - public static function notKeyExists(string|int $key): ChainedValidator; - - public static function notKeyOptional(string|int $key, Rule $rule): ChainedValidator; - - public static function notKeySet(Rule $rule, Rule ...$rules): ChainedValidator; - - /** - * @param "alpha-2"|"alpha-3" $set - */ - public static function notLanguageCode(string $set = 'alpha-2'): ChainedValidator; - - /** - * @param callable(mixed): Rule $ruleCreator - */ - public static function notLazy(callable $ruleCreator): ChainedValidator; - - public static function notLeapDate(string $format): ChainedValidator; - - public static function notLeapYear(): ChainedValidator; - - public static function notLength(Rule $rule): ChainedValidator; - - public static function notLessThan(mixed $compareTo): ChainedValidator; - - public static function notLessThanOrEqual(mixed $compareTo): ChainedValidator; - - public static function notLowercase(): ChainedValidator; - - public static function notLuhn(): ChainedValidator; - - public static function notMacAddress(): ChainedValidator; - - public static function notMax(Rule $rule): ChainedValidator; - - public static function notMimetype(string $mimetype): ChainedValidator; - - public static function notMin(Rule $rule): ChainedValidator; - - public static function notMultiple(int $multipleOf): ChainedValidator; - - public static function notNegative(): ChainedValidator; - - public static function notNfeAccessKey(): ChainedValidator; - - public static function notNif(): ChainedValidator; - - public static function notNip(): ChainedValidator; - - public static function notNo(bool $useLocale = false): ChainedValidator; - - public static function notNoWhitespace(): ChainedValidator; - - public static function notNoneOf(Rule $rule1, Rule $rule2, Rule ...$rules): ChainedValidator; - - public static function notNullType(): ChainedValidator; - - public static function notNumber(): ChainedValidator; - - public static function notNumericVal(): ChainedValidator; - - public static function notObjectType(): ChainedValidator; - - public static function notOdd(): ChainedValidator; - - public static function notOneOf(Rule $rule1, Rule $rule2, Rule ...$rules): ChainedValidator; - - public static function notPerfectSquare(): ChainedValidator; - - public static function notPesel(): ChainedValidator; - - public static function notPhone(?string $countryCode = null): ChainedValidator; - - public static function notPhpLabel(): ChainedValidator; - - public static function notPis(): ChainedValidator; - - public static function notPolishIdCard(): ChainedValidator; - - public static function notPortugueseNif(): ChainedValidator; - - public static function notPositive(): ChainedValidator; - - public static function notPostalCode(string $countryCode, bool $formatted = false): ChainedValidator; - - public static function notPrimeNumber(): ChainedValidator; - - public static function notPrintable(string ...$additionalChars): ChainedValidator; - - public static function notProperty(string $propertyName, Rule $rule): ChainedValidator; - - public static function notPropertyExists(string $propertyName): ChainedValidator; - - public static function notPropertyOptional(string $propertyName, Rule $rule): ChainedValidator; - - public static function notPublicDomainSuffix(): ChainedValidator; - - public static function notPunct(string ...$additionalChars): ChainedValidator; - - public static function notReadable(): ChainedValidator; - - public static function notRegex(string $regex): ChainedValidator; - - public static function notResourceType(): ChainedValidator; - - public static function notRoman(): ChainedValidator; - - public static function notScalarVal(): ChainedValidator; - - /** - * @param "B"|"KB"|"MB"|"GB"|"TB"|"PB"|"EB"|"ZB"|"YB" $unit - */ - public static function notSize(string $unit, Rule $rule): ChainedValidator; - - public static function notSlug(): ChainedValidator; - - public static function notSorted(string $direction): ChainedValidator; - - public static function notSpace(string ...$additionalChars): ChainedValidator; - - public static function notStartsWith(mixed $startValue, bool $identical = false): ChainedValidator; - - public static function notStringType(): ChainedValidator; - - public static function notStringVal(): ChainedValidator; - - public static function notSubdivisionCode(string $countryCode): ChainedValidator; - - /** - * @param mixed[] $superset - */ - public static function notSubset(array $superset): ChainedValidator; - - public static function notSymbolicLink(): ChainedValidator; - - public static function notTime(string $format = 'H:i:s'): ChainedValidator; - - public static function notTld(): ChainedValidator; - - public static function notTrueVal(): ChainedValidator; - - public static function notUnique(): ChainedValidator; - - public static function notUploaded(): ChainedValidator; - - public static function notUppercase(): ChainedValidator; - - public static function notUrl(): ChainedValidator; - - public static function notUuid(?int $version = null): ChainedValidator; - - public static function notVersion(): ChainedValidator; - - public static function notVideoUrl(?string $service = null): ChainedValidator; - - public static function notVowel(string ...$additionalChars): ChainedValidator; - - public static function notWhen(Rule $when, Rule $then, ?Rule $else = null): ChainedValidator; - - public static function notWritable(): ChainedValidator; - - public static function notXdigit(string ...$additionalChars): ChainedValidator; - - public static function notYes(bool $useLocale = false): ChainedValidator; -} diff --git a/library/Mixins/StaticNullOr.php b/library/Mixins/StaticNullOr.php deleted file mode 100644 index 8a0b47b95..000000000 --- a/library/Mixins/StaticNullOr.php +++ /dev/null @@ -1,363 +0,0 @@ - - * SPDX-License-Identifier: MIT - */ - -declare(strict_types=1); - -namespace Respect\Validation\Mixins; - -use DateTimeImmutable; -use Respect\Validation\Rule; - -interface StaticNullOr -{ - public static function nullOrAllOf(Rule $rule1, Rule $rule2, Rule ...$rules): ChainedValidator; - - public static function nullOrAlnum(string ...$additionalChars): ChainedValidator; - - public static function nullOrAlpha(string ...$additionalChars): ChainedValidator; - - public static function nullOrAlwaysInvalid(): ChainedValidator; - - public static function nullOrAlwaysValid(): ChainedValidator; - - public static function nullOrAnyOf(Rule $rule1, Rule $rule2, Rule ...$rules): ChainedValidator; - - public static function nullOrArrayType(): ChainedValidator; - - public static function nullOrArrayVal(): ChainedValidator; - - public static function nullOrAttributes(): ChainedValidator; - - public static function nullOrBase( - int $base, - string $chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', - ): ChainedValidator; - - public static function nullOrBase64(): ChainedValidator; - - public static function nullOrBetween(mixed $minValue, mixed $maxValue): ChainedValidator; - - public static function nullOrBetweenExclusive(mixed $minimum, mixed $maximum): ChainedValidator; - - public static function nullOrBoolType(): ChainedValidator; - - public static function nullOrBoolVal(): ChainedValidator; - - public static function nullOrBsn(): ChainedValidator; - - public static function nullOrCall(callable $callable, Rule $rule): ChainedValidator; - - public static function nullOrCallableType(): ChainedValidator; - - public static function nullOrCallback(callable $callback, mixed ...$arguments): ChainedValidator; - - public static function nullOrCharset(string $charset, string ...$charsets): ChainedValidator; - - public static function nullOrCnh(): ChainedValidator; - - public static function nullOrCnpj(): ChainedValidator; - - public static function nullOrConsecutive(Rule $rule1, Rule $rule2, Rule ...$rules): ChainedValidator; - - public static function nullOrConsonant(string ...$additionalChars): ChainedValidator; - - public static function nullOrContains(mixed $containsValue, bool $identical = false): ChainedValidator; - - /** - * @param non-empty-array $needles - */ - public static function nullOrContainsAny(array $needles, bool $identical = false): ChainedValidator; - - public static function nullOrControl(string ...$additionalChars): ChainedValidator; - - public static function nullOrCountable(): ChainedValidator; - - /** - * @param "alpha-2"|"alpha-3"|"numeric" $set - */ - public static function nullOrCountryCode(string $set = 'alpha-2'): ChainedValidator; - - public static function nullOrCpf(): ChainedValidator; - - public static function nullOrCreditCard(string $brand = 'Any'): ChainedValidator; - - /** - * @param "alpha-3"|"numeric" $set - */ - public static function nullOrCurrencyCode(string $set = 'alpha-3'): ChainedValidator; - - public static function nullOrDate(string $format = 'Y-m-d'): ChainedValidator; - - public static function nullOrDateTime(?string $format = null): ChainedValidator; - - /** - * @param "years"|"months"|"days"|"hours"|"minutes"|"seconds"|"microseconds" $type - */ - public static function nullOrDateTimeDiff( - string $type, - Rule $rule, - ?string $format = null, - ?DateTimeImmutable $now = null, - ): ChainedValidator; - - public static function nullOrDecimal(int $decimals): ChainedValidator; - - public static function nullOrDigit(string ...$additionalChars): ChainedValidator; - - public static function nullOrDirectory(): ChainedValidator; - - public static function nullOrDomain(bool $tldCheck = true): ChainedValidator; - - public static function nullOrEach(Rule $rule): ChainedValidator; - - public static function nullOrEmail(): ChainedValidator; - - public static function nullOrEndsWith(mixed $endValue, bool $identical = false): ChainedValidator; - - public static function nullOrEquals(mixed $compareTo): ChainedValidator; - - public static function nullOrEquivalent(mixed $compareTo): ChainedValidator; - - public static function nullOrEven(): ChainedValidator; - - public static function nullOrExecutable(): ChainedValidator; - - public static function nullOrExists(): ChainedValidator; - - public static function nullOrExtension(string $extension): ChainedValidator; - - public static function nullOrFactor(int $dividend): ChainedValidator; - - public static function nullOrFalseVal(): ChainedValidator; - - public static function nullOrFibonacci(): ChainedValidator; - - public static function nullOrFile(): ChainedValidator; - - public static function nullOrFilterVar(int $filter, mixed $options = null): ChainedValidator; - - public static function nullOrFinite(): ChainedValidator; - - public static function nullOrFloatType(): ChainedValidator; - - public static function nullOrFloatVal(): ChainedValidator; - - public static function nullOrGraph(string ...$additionalChars): ChainedValidator; - - public static function nullOrGreaterThan(mixed $compareTo): ChainedValidator; - - public static function nullOrGreaterThanOrEqual(mixed $compareTo): ChainedValidator; - - public static function nullOrHetu(): ChainedValidator; - - public static function nullOrHexRgbColor(): ChainedValidator; - - public static function nullOrIban(): ChainedValidator; - - public static function nullOrIdentical(mixed $compareTo): ChainedValidator; - - public static function nullOrImage(): ChainedValidator; - - public static function nullOrImei(): ChainedValidator; - - public static function nullOrIn(mixed $haystack, bool $compareIdentical = false): ChainedValidator; - - public static function nullOrInfinite(): ChainedValidator; - - /** - * @param class-string $class - */ - public static function nullOrInstance(string $class): ChainedValidator; - - public static function nullOrIntType(): ChainedValidator; - - public static function nullOrIntVal(): ChainedValidator; - - public static function nullOrIp(string $range = '*', ?int $options = null): ChainedValidator; - - public static function nullOrIsbn(): ChainedValidator; - - public static function nullOrIterableType(): ChainedValidator; - - public static function nullOrIterableVal(): ChainedValidator; - - public static function nullOrJson(): ChainedValidator; - - public static function nullOrKey(string|int $key, Rule $rule): ChainedValidator; - - public static function nullOrKeyExists(string|int $key): ChainedValidator; - - public static function nullOrKeyOptional(string|int $key, Rule $rule): ChainedValidator; - - public static function nullOrKeySet(Rule $rule, Rule ...$rules): ChainedValidator; - - /** - * @param "alpha-2"|"alpha-3" $set - */ - public static function nullOrLanguageCode(string $set = 'alpha-2'): ChainedValidator; - - /** - * @param callable(mixed): Rule $ruleCreator - */ - public static function nullOrLazy(callable $ruleCreator): ChainedValidator; - - public static function nullOrLeapDate(string $format): ChainedValidator; - - public static function nullOrLeapYear(): ChainedValidator; - - public static function nullOrLength(Rule $rule): ChainedValidator; - - public static function nullOrLessThan(mixed $compareTo): ChainedValidator; - - public static function nullOrLessThanOrEqual(mixed $compareTo): ChainedValidator; - - public static function nullOrLowercase(): ChainedValidator; - - public static function nullOrLuhn(): ChainedValidator; - - public static function nullOrMacAddress(): ChainedValidator; - - public static function nullOrMax(Rule $rule): ChainedValidator; - - public static function nullOrMimetype(string $mimetype): ChainedValidator; - - public static function nullOrMin(Rule $rule): ChainedValidator; - - public static function nullOrMultiple(int $multipleOf): ChainedValidator; - - public static function nullOrNegative(): ChainedValidator; - - public static function nullOrNfeAccessKey(): ChainedValidator; - - public static function nullOrNif(): ChainedValidator; - - public static function nullOrNip(): ChainedValidator; - - public static function nullOrNo(bool $useLocale = false): ChainedValidator; - - public static function nullOrNoWhitespace(): ChainedValidator; - - public static function nullOrNoneOf(Rule $rule1, Rule $rule2, Rule ...$rules): ChainedValidator; - - public static function nullOrNot(Rule $rule): ChainedValidator; - - public static function nullOrNotBlank(): ChainedValidator; - - public static function nullOrNotEmoji(): ChainedValidator; - - public static function nullOrNotEmpty(): ChainedValidator; - - public static function nullOrNullType(): ChainedValidator; - - public static function nullOrNumber(): ChainedValidator; - - public static function nullOrNumericVal(): ChainedValidator; - - public static function nullOrObjectType(): ChainedValidator; - - public static function nullOrOdd(): ChainedValidator; - - public static function nullOrOneOf(Rule $rule1, Rule $rule2, Rule ...$rules): ChainedValidator; - - public static function nullOrPerfectSquare(): ChainedValidator; - - public static function nullOrPesel(): ChainedValidator; - - public static function nullOrPhone(?string $countryCode = null): ChainedValidator; - - public static function nullOrPhpLabel(): ChainedValidator; - - public static function nullOrPis(): ChainedValidator; - - public static function nullOrPolishIdCard(): ChainedValidator; - - public static function nullOrPortugueseNif(): ChainedValidator; - - public static function nullOrPositive(): ChainedValidator; - - public static function nullOrPostalCode(string $countryCode, bool $formatted = false): ChainedValidator; - - public static function nullOrPrimeNumber(): ChainedValidator; - - public static function nullOrPrintable(string ...$additionalChars): ChainedValidator; - - public static function nullOrProperty(string $propertyName, Rule $rule): ChainedValidator; - - public static function nullOrPropertyExists(string $propertyName): ChainedValidator; - - public static function nullOrPropertyOptional(string $propertyName, Rule $rule): ChainedValidator; - - public static function nullOrPublicDomainSuffix(): ChainedValidator; - - public static function nullOrPunct(string ...$additionalChars): ChainedValidator; - - public static function nullOrReadable(): ChainedValidator; - - public static function nullOrRegex(string $regex): ChainedValidator; - - public static function nullOrResourceType(): ChainedValidator; - - public static function nullOrRoman(): ChainedValidator; - - public static function nullOrScalarVal(): ChainedValidator; - - /** - * @param "B"|"KB"|"MB"|"GB"|"TB"|"PB"|"EB"|"ZB"|"YB" $unit - */ - public static function nullOrSize(string $unit, Rule $rule): ChainedValidator; - - public static function nullOrSlug(): ChainedValidator; - - public static function nullOrSorted(string $direction): ChainedValidator; - - public static function nullOrSpace(string ...$additionalChars): ChainedValidator; - - public static function nullOrStartsWith(mixed $startValue, bool $identical = false): ChainedValidator; - - public static function nullOrStringType(): ChainedValidator; - - public static function nullOrStringVal(): ChainedValidator; - - public static function nullOrSubdivisionCode(string $countryCode): ChainedValidator; - - /** - * @param mixed[] $superset - */ - public static function nullOrSubset(array $superset): ChainedValidator; - - public static function nullOrSymbolicLink(): ChainedValidator; - - public static function nullOrTime(string $format = 'H:i:s'): ChainedValidator; - - public static function nullOrTld(): ChainedValidator; - - public static function nullOrTrueVal(): ChainedValidator; - - public static function nullOrUnique(): ChainedValidator; - - public static function nullOrUploaded(): ChainedValidator; - - public static function nullOrUppercase(): ChainedValidator; - - public static function nullOrUrl(): ChainedValidator; - - public static function nullOrUuid(?int $version = null): ChainedValidator; - - public static function nullOrVersion(): ChainedValidator; - - public static function nullOrVideoUrl(?string $service = null): ChainedValidator; - - public static function nullOrVowel(string ...$additionalChars): ChainedValidator; - - public static function nullOrWhen(Rule $when, Rule $then, ?Rule $else = null): ChainedValidator; - - public static function nullOrWritable(): ChainedValidator; - - public static function nullOrXdigit(string ...$additionalChars): ChainedValidator; - - public static function nullOrYes(bool $useLocale = false): ChainedValidator; -} diff --git a/library/Mixins/StaticUndefOr.php b/library/Mixins/StaticUndefOr.php deleted file mode 100644 index 7fd08b985..000000000 --- a/library/Mixins/StaticUndefOr.php +++ /dev/null @@ -1,361 +0,0 @@ - - * SPDX-License-Identifier: MIT - */ - -declare(strict_types=1); - -namespace Respect\Validation\Mixins; - -use DateTimeImmutable; -use Respect\Validation\Rule; - -interface StaticUndefOr -{ - public static function undefOrAllOf(Rule $rule1, Rule $rule2, Rule ...$rules): ChainedValidator; - - public static function undefOrAlnum(string ...$additionalChars): ChainedValidator; - - public static function undefOrAlpha(string ...$additionalChars): ChainedValidator; - - public static function undefOrAlwaysInvalid(): ChainedValidator; - - public static function undefOrAlwaysValid(): ChainedValidator; - - public static function undefOrAnyOf(Rule $rule1, Rule $rule2, Rule ...$rules): ChainedValidator; - - public static function undefOrArrayType(): ChainedValidator; - - public static function undefOrArrayVal(): ChainedValidator; - - public static function undefOrBase( - int $base, - string $chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', - ): ChainedValidator; - - public static function undefOrBase64(): ChainedValidator; - - public static function undefOrBetween(mixed $minValue, mixed $maxValue): ChainedValidator; - - public static function undefOrBetweenExclusive(mixed $minimum, mixed $maximum): ChainedValidator; - - public static function undefOrBoolType(): ChainedValidator; - - public static function undefOrBoolVal(): ChainedValidator; - - public static function undefOrBsn(): ChainedValidator; - - public static function undefOrCall(callable $callable, Rule $rule): ChainedValidator; - - public static function undefOrCallableType(): ChainedValidator; - - public static function undefOrCallback(callable $callback, mixed ...$arguments): ChainedValidator; - - public static function undefOrCharset(string $charset, string ...$charsets): ChainedValidator; - - public static function undefOrCnh(): ChainedValidator; - - public static function undefOrCnpj(): ChainedValidator; - - public static function undefOrConsecutive(Rule $rule1, Rule $rule2, Rule ...$rules): ChainedValidator; - - public static function undefOrConsonant(string ...$additionalChars): ChainedValidator; - - public static function undefOrContains(mixed $containsValue, bool $identical = false): ChainedValidator; - - /** - * @param non-empty-array $needles - */ - public static function undefOrContainsAny(array $needles, bool $identical = false): ChainedValidator; - - public static function undefOrControl(string ...$additionalChars): ChainedValidator; - - public static function undefOrCountable(): ChainedValidator; - - /** - * @param "alpha-2"|"alpha-3"|"numeric" $set - */ - public static function undefOrCountryCode(string $set = 'alpha-2'): ChainedValidator; - - public static function undefOrCpf(): ChainedValidator; - - public static function undefOrCreditCard(string $brand = 'Any'): ChainedValidator; - - /** - * @param "alpha-3"|"numeric" $set - */ - public static function undefOrCurrencyCode(string $set = 'alpha-3'): ChainedValidator; - - public static function undefOrDate(string $format = 'Y-m-d'): ChainedValidator; - - public static function undefOrDateTime(?string $format = null): ChainedValidator; - - /** - * @param "years"|"months"|"days"|"hours"|"minutes"|"seconds"|"microseconds" $type - */ - public static function undefOrDateTimeDiff( - string $type, - Rule $rule, - ?string $format = null, - ?DateTimeImmutable $now = null, - ): ChainedValidator; - - public static function undefOrDecimal(int $decimals): ChainedValidator; - - public static function undefOrDigit(string ...$additionalChars): ChainedValidator; - - public static function undefOrDirectory(): ChainedValidator; - - public static function undefOrDomain(bool $tldCheck = true): ChainedValidator; - - public static function undefOrEach(Rule $rule): ChainedValidator; - - public static function undefOrEmail(): ChainedValidator; - - public static function undefOrEndsWith(mixed $endValue, bool $identical = false): ChainedValidator; - - public static function undefOrEquals(mixed $compareTo): ChainedValidator; - - public static function undefOrEquivalent(mixed $compareTo): ChainedValidator; - - public static function undefOrEven(): ChainedValidator; - - public static function undefOrExecutable(): ChainedValidator; - - public static function undefOrExists(): ChainedValidator; - - public static function undefOrExtension(string $extension): ChainedValidator; - - public static function undefOrFactor(int $dividend): ChainedValidator; - - public static function undefOrFalseVal(): ChainedValidator; - - public static function undefOrFibonacci(): ChainedValidator; - - public static function undefOrFile(): ChainedValidator; - - public static function undefOrFilterVar(int $filter, mixed $options = null): ChainedValidator; - - public static function undefOrFinite(): ChainedValidator; - - public static function undefOrFloatType(): ChainedValidator; - - public static function undefOrFloatVal(): ChainedValidator; - - public static function undefOrGraph(string ...$additionalChars): ChainedValidator; - - public static function undefOrGreaterThan(mixed $compareTo): ChainedValidator; - - public static function undefOrGreaterThanOrEqual(mixed $compareTo): ChainedValidator; - - public static function undefOrHetu(): ChainedValidator; - - public static function undefOrHexRgbColor(): ChainedValidator; - - public static function undefOrIban(): ChainedValidator; - - public static function undefOrIdentical(mixed $compareTo): ChainedValidator; - - public static function undefOrImage(): ChainedValidator; - - public static function undefOrImei(): ChainedValidator; - - public static function undefOrIn(mixed $haystack, bool $compareIdentical = false): ChainedValidator; - - public static function undefOrInfinite(): ChainedValidator; - - /** - * @param class-string $class - */ - public static function undefOrInstance(string $class): ChainedValidator; - - public static function undefOrIntType(): ChainedValidator; - - public static function undefOrIntVal(): ChainedValidator; - - public static function undefOrIp(string $range = '*', ?int $options = null): ChainedValidator; - - public static function undefOrIsbn(): ChainedValidator; - - public static function undefOrIterableType(): ChainedValidator; - - public static function undefOrIterableVal(): ChainedValidator; - - public static function undefOrJson(): ChainedValidator; - - public static function undefOrKey(string|int $key, Rule $rule): ChainedValidator; - - public static function undefOrKeyExists(string|int $key): ChainedValidator; - - public static function undefOrKeyOptional(string|int $key, Rule $rule): ChainedValidator; - - public static function undefOrKeySet(Rule $rule, Rule ...$rules): ChainedValidator; - - /** - * @param "alpha-2"|"alpha-3" $set - */ - public static function undefOrLanguageCode(string $set = 'alpha-2'): ChainedValidator; - - /** - * @param callable(mixed): Rule $ruleCreator - */ - public static function undefOrLazy(callable $ruleCreator): ChainedValidator; - - public static function undefOrLeapDate(string $format): ChainedValidator; - - public static function undefOrLeapYear(): ChainedValidator; - - public static function undefOrLength(Rule $rule): ChainedValidator; - - public static function undefOrLessThan(mixed $compareTo): ChainedValidator; - - public static function undefOrLessThanOrEqual(mixed $compareTo): ChainedValidator; - - public static function undefOrLowercase(): ChainedValidator; - - public static function undefOrLuhn(): ChainedValidator; - - public static function undefOrMacAddress(): ChainedValidator; - - public static function undefOrMax(Rule $rule): ChainedValidator; - - public static function undefOrMimetype(string $mimetype): ChainedValidator; - - public static function undefOrMin(Rule $rule): ChainedValidator; - - public static function undefOrMultiple(int $multipleOf): ChainedValidator; - - public static function undefOrNegative(): ChainedValidator; - - public static function undefOrNfeAccessKey(): ChainedValidator; - - public static function undefOrNif(): ChainedValidator; - - public static function undefOrNip(): ChainedValidator; - - public static function undefOrNo(bool $useLocale = false): ChainedValidator; - - public static function undefOrNoWhitespace(): ChainedValidator; - - public static function undefOrNoneOf(Rule $rule1, Rule $rule2, Rule ...$rules): ChainedValidator; - - public static function undefOrNot(Rule $rule): ChainedValidator; - - public static function undefOrNotBlank(): ChainedValidator; - - public static function undefOrNotEmoji(): ChainedValidator; - - public static function undefOrNotEmpty(): ChainedValidator; - - public static function undefOrNullType(): ChainedValidator; - - public static function undefOrNumber(): ChainedValidator; - - public static function undefOrNumericVal(): ChainedValidator; - - public static function undefOrObjectType(): ChainedValidator; - - public static function undefOrOdd(): ChainedValidator; - - public static function undefOrOneOf(Rule $rule1, Rule $rule2, Rule ...$rules): ChainedValidator; - - public static function undefOrPerfectSquare(): ChainedValidator; - - public static function undefOrPesel(): ChainedValidator; - - public static function undefOrPhone(?string $countryCode = null): ChainedValidator; - - public static function undefOrPhpLabel(): ChainedValidator; - - public static function undefOrPis(): ChainedValidator; - - public static function undefOrPolishIdCard(): ChainedValidator; - - public static function undefOrPortugueseNif(): ChainedValidator; - - public static function undefOrPositive(): ChainedValidator; - - public static function undefOrPostalCode(string $countryCode, bool $formatted = false): ChainedValidator; - - public static function undefOrPrimeNumber(): ChainedValidator; - - public static function undefOrPrintable(string ...$additionalChars): ChainedValidator; - - public static function undefOrProperty(string $propertyName, Rule $rule): ChainedValidator; - - public static function undefOrPropertyExists(string $propertyName): ChainedValidator; - - public static function undefOrPropertyOptional(string $propertyName, Rule $rule): ChainedValidator; - - public static function undefOrPublicDomainSuffix(): ChainedValidator; - - public static function undefOrPunct(string ...$additionalChars): ChainedValidator; - - public static function undefOrReadable(): ChainedValidator; - - public static function undefOrRegex(string $regex): ChainedValidator; - - public static function undefOrResourceType(): ChainedValidator; - - public static function undefOrRoman(): ChainedValidator; - - public static function undefOrScalarVal(): ChainedValidator; - - /** - * @param "B"|"KB"|"MB"|"GB"|"TB"|"PB"|"EB"|"ZB"|"YB" $unit - */ - public static function undefOrSize(string $unit, Rule $rule): ChainedValidator; - - public static function undefOrSlug(): ChainedValidator; - - public static function undefOrSorted(string $direction): ChainedValidator; - - public static function undefOrSpace(string ...$additionalChars): ChainedValidator; - - public static function undefOrStartsWith(mixed $startValue, bool $identical = false): ChainedValidator; - - public static function undefOrStringType(): ChainedValidator; - - public static function undefOrStringVal(): ChainedValidator; - - public static function undefOrSubdivisionCode(string $countryCode): ChainedValidator; - - /** - * @param mixed[] $superset - */ - public static function undefOrSubset(array $superset): ChainedValidator; - - public static function undefOrSymbolicLink(): ChainedValidator; - - public static function undefOrTime(string $format = 'H:i:s'): ChainedValidator; - - public static function undefOrTld(): ChainedValidator; - - public static function undefOrTrueVal(): ChainedValidator; - - public static function undefOrUnique(): ChainedValidator; - - public static function undefOrUploaded(): ChainedValidator; - - public static function undefOrUppercase(): ChainedValidator; - - public static function undefOrUrl(): ChainedValidator; - - public static function undefOrUuid(?int $version = null): ChainedValidator; - - public static function undefOrVersion(): ChainedValidator; - - public static function undefOrVideoUrl(?string $service = null): ChainedValidator; - - public static function undefOrVowel(string ...$additionalChars): ChainedValidator; - - public static function undefOrWhen(Rule $when, Rule $then, ?Rule $else = null): ChainedValidator; - - public static function undefOrWritable(): ChainedValidator; - - public static function undefOrXdigit(string ...$additionalChars): ChainedValidator; - - public static function undefOrYes(bool $useLocale = false): ChainedValidator; -} diff --git a/library/Mixins/StaticValidator.php b/library/Mixins/StaticValidator.php deleted file mode 100644 index 11a37f15c..000000000 --- a/library/Mixins/StaticValidator.php +++ /dev/null @@ -1,389 +0,0 @@ - - * SPDX-License-Identifier: MIT - */ - -declare(strict_types=1); - -namespace Respect\Validation\Mixins; - -use DateTimeImmutable; -use Respect\Validation\Rule; - -interface StaticValidator extends - StaticKey, - StaticLength, - StaticMax, - StaticMin, - StaticNot, - StaticNullOr, - StaticProperty, - StaticUndefOr -{ - public static function allOf(Rule $rule1, Rule $rule2, Rule ...$rules): ChainedValidator; - - public static function alnum(string ...$additionalChars): ChainedValidator; - - public static function alpha(string ...$additionalChars): ChainedValidator; - - public static function alwaysInvalid(): ChainedValidator; - - public static function alwaysValid(): ChainedValidator; - - public static function anyOf(Rule $rule1, Rule $rule2, Rule ...$rules): ChainedValidator; - - public static function arrayType(): ChainedValidator; - - public static function arrayVal(): ChainedValidator; - - public static function attributes(): ChainedValidator; - - public static function base( - int $base, - string $chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', - ): ChainedValidator; - - public static function base64(): ChainedValidator; - - public static function between(mixed $minValue, mixed $maxValue): ChainedValidator; - - public static function betweenExclusive(mixed $minimum, mixed $maximum): ChainedValidator; - - public static function boolType(): ChainedValidator; - - public static function boolVal(): ChainedValidator; - - public static function bsn(): ChainedValidator; - - public static function call(callable $callable, Rule $rule): ChainedValidator; - - public static function callableType(): ChainedValidator; - - public static function callback(callable $callback, mixed ...$arguments): ChainedValidator; - - public static function charset(string $charset, string ...$charsets): ChainedValidator; - - public static function cnh(): ChainedValidator; - - public static function cnpj(): ChainedValidator; - - public static function consecutive(Rule $rule1, Rule $rule2, Rule ...$rules): ChainedValidator; - - public static function consonant(string ...$additionalChars): ChainedValidator; - - public static function contains(mixed $containsValue, bool $identical = false): ChainedValidator; - - /** - * @param non-empty-array $needles - */ - public static function containsAny(array $needles, bool $identical = false): ChainedValidator; - - public static function control(string ...$additionalChars): ChainedValidator; - - public static function countable(): ChainedValidator; - - /** - * @param "alpha-2"|"alpha-3"|"numeric" $set - */ - public static function countryCode(string $set = 'alpha-2'): ChainedValidator; - - public static function cpf(): ChainedValidator; - - public static function creditCard(string $brand = 'Any'): ChainedValidator; - - /** - * @param "alpha-3"|"numeric" $set - */ - public static function currencyCode(string $set = 'alpha-3'): ChainedValidator; - - public static function date(string $format = 'Y-m-d'): ChainedValidator; - - public static function dateTime(?string $format = null): ChainedValidator; - - /** - * @param "years"|"months"|"days"|"hours"|"minutes"|"seconds"|"microseconds" $type - */ - public static function dateTimeDiff( - string $type, - Rule $rule, - ?string $format = null, - ?DateTimeImmutable $now = null, - ): ChainedValidator; - - public static function decimal(int $decimals): ChainedValidator; - - public static function digit(string ...$additionalChars): ChainedValidator; - - public static function directory(): ChainedValidator; - - public static function domain(bool $tldCheck = true): ChainedValidator; - - public static function each(Rule $rule): ChainedValidator; - - public static function email(): ChainedValidator; - - public static function endsWith(mixed $endValue, bool $identical = false): ChainedValidator; - - public static function equals(mixed $compareTo): ChainedValidator; - - public static function equivalent(mixed $compareTo): ChainedValidator; - - public static function even(): ChainedValidator; - - public static function executable(): ChainedValidator; - - public static function exists(): ChainedValidator; - - public static function extension(string $extension): ChainedValidator; - - public static function factor(int $dividend): ChainedValidator; - - public static function falseVal(): ChainedValidator; - - public static function fibonacci(): ChainedValidator; - - public static function file(): ChainedValidator; - - public static function filterVar(int $filter, mixed $options = null): ChainedValidator; - - public static function finite(): ChainedValidator; - - public static function floatType(): ChainedValidator; - - public static function floatVal(): ChainedValidator; - - public static function graph(string ...$additionalChars): ChainedValidator; - - public static function greaterThan(mixed $compareTo): ChainedValidator; - - public static function greaterThanOrEqual(mixed $compareTo): ChainedValidator; - - public static function hetu(): ChainedValidator; - - public static function hexRgbColor(): ChainedValidator; - - public static function iban(): ChainedValidator; - - public static function identical(mixed $compareTo): ChainedValidator; - - public static function image(): ChainedValidator; - - public static function imei(): ChainedValidator; - - public static function in(mixed $haystack, bool $compareIdentical = false): ChainedValidator; - - public static function infinite(): ChainedValidator; - - /** - * @param class-string $class - */ - public static function instance(string $class): ChainedValidator; - - public static function intType(): ChainedValidator; - - public static function intVal(): ChainedValidator; - - public static function ip(string $range = '*', ?int $options = null): ChainedValidator; - - public static function isbn(): ChainedValidator; - - public static function iterableType(): ChainedValidator; - - public static function iterableVal(): ChainedValidator; - - public static function json(): ChainedValidator; - - public static function key(string|int $key, Rule $rule): ChainedValidator; - - public static function keyExists(string|int $key): ChainedValidator; - - public static function keyOptional(string|int $key, Rule $rule): ChainedValidator; - - public static function keySet(Rule $rule, Rule ...$rules): ChainedValidator; - - /** - * @param "alpha-2"|"alpha-3" $set - */ - public static function languageCode(string $set = 'alpha-2'): ChainedValidator; - - /** - * @param callable(mixed): Rule $ruleCreator - */ - public static function lazy(callable $ruleCreator): ChainedValidator; - - public static function leapDate(string $format): ChainedValidator; - - public static function leapYear(): ChainedValidator; - - public static function length(Rule $rule): ChainedValidator; - - public static function lessThan(mixed $compareTo): ChainedValidator; - - public static function lessThanOrEqual(mixed $compareTo): ChainedValidator; - - public static function lowercase(): ChainedValidator; - - public static function luhn(): ChainedValidator; - - public static function macAddress(): ChainedValidator; - - public static function max(Rule $rule): ChainedValidator; - - public static function mimetype(string $mimetype): ChainedValidator; - - public static function min(Rule $rule): ChainedValidator; - - public static function multiple(int $multipleOf): ChainedValidator; - - public static function negative(): ChainedValidator; - - public static function nfeAccessKey(): ChainedValidator; - - public static function nif(): ChainedValidator; - - public static function nip(): ChainedValidator; - - public static function no(bool $useLocale = false): ChainedValidator; - - public static function noWhitespace(): ChainedValidator; - - public static function noneOf(Rule $rule1, Rule $rule2, Rule ...$rules): ChainedValidator; - - public static function not(Rule $rule): ChainedValidator; - - public static function notBlank(): ChainedValidator; - - public static function notEmoji(): ChainedValidator; - - public static function notEmpty(): ChainedValidator; - - public static function notOptional(): ChainedValidator; - - public static function notUndef(): ChainedValidator; - - public static function nullOr(Rule $rule): ChainedValidator; - - public static function nullType(): ChainedValidator; - - /** - * @deprecated Use {@see nullOr()} instead. - */ - public static function nullable(Rule $rule): ChainedValidator; - - public static function number(): ChainedValidator; - - public static function numericVal(): ChainedValidator; - - public static function objectType(): ChainedValidator; - - public static function odd(): ChainedValidator; - - public static function oneOf(Rule $rule1, Rule $rule2, Rule ...$rules): ChainedValidator; - - /** - * @deprecated Use {@see undefOr()} instead. - */ - public static function optional(Rule $rule): ChainedValidator; - - public static function perfectSquare(): ChainedValidator; - - public static function pesel(): ChainedValidator; - - public static function phone(?string $countryCode = null): ChainedValidator; - - public static function phpLabel(): ChainedValidator; - - public static function pis(): ChainedValidator; - - public static function polishIdCard(): ChainedValidator; - - public static function portugueseNif(): ChainedValidator; - - public static function positive(): ChainedValidator; - - public static function postalCode(string $countryCode, bool $formatted = false): ChainedValidator; - - public static function primeNumber(): ChainedValidator; - - public static function printable(string ...$additionalChars): ChainedValidator; - - public static function property(string $propertyName, Rule $rule): ChainedValidator; - - public static function propertyExists(string $propertyName): ChainedValidator; - - public static function propertyOptional(string $propertyName, Rule $rule): ChainedValidator; - - public static function publicDomainSuffix(): ChainedValidator; - - public static function punct(string ...$additionalChars): ChainedValidator; - - public static function readable(): ChainedValidator; - - public static function regex(string $regex): ChainedValidator; - - public static function resourceType(): ChainedValidator; - - public static function roman(): ChainedValidator; - - public static function scalarVal(): ChainedValidator; - - /** - * @param "B"|"KB"|"MB"|"GB"|"TB"|"PB"|"EB"|"ZB"|"YB" $unit - */ - public static function size(string $unit, Rule $rule): ChainedValidator; - - public static function slug(): ChainedValidator; - - public static function sorted(string $direction): ChainedValidator; - - public static function space(string ...$additionalChars): ChainedValidator; - - public static function startsWith(mixed $startValue, bool $identical = false): ChainedValidator; - - public static function stringType(): ChainedValidator; - - public static function stringVal(): ChainedValidator; - - public static function subdivisionCode(string $countryCode): ChainedValidator; - - /** - * @param mixed[] $superset - */ - public static function subset(array $superset): ChainedValidator; - - public static function symbolicLink(): ChainedValidator; - - public static function time(string $format = 'H:i:s'): ChainedValidator; - - public static function tld(): ChainedValidator; - - public static function trueVal(): ChainedValidator; - - public static function undefOr(Rule $rule): ChainedValidator; - - public static function unique(): ChainedValidator; - - public static function uploaded(): ChainedValidator; - - public static function uppercase(): ChainedValidator; - - public static function url(): ChainedValidator; - - public static function uuid(?int $version = null): ChainedValidator; - - public static function version(): ChainedValidator; - - public static function videoUrl(?string $service = null): ChainedValidator; - - public static function vowel(string ...$additionalChars): ChainedValidator; - - public static function when(Rule $when, Rule $then, ?Rule $else = null): ChainedValidator; - - public static function writable(): ChainedValidator; - - public static function xdigit(string ...$additionalChars): ChainedValidator; - - public static function yes(bool $useLocale = false): ChainedValidator; -} diff --git a/library/Mixins/UndefOrBuilder.php b/library/Mixins/UndefOrBuilder.php new file mode 100644 index 000000000..3d06952f9 --- /dev/null +++ b/library/Mixins/UndefOrBuilder.php @@ -0,0 +1,361 @@ + + * SPDX-License-Identifier: MIT + */ + +declare(strict_types=1); + +namespace Respect\Validation\Mixins; + +use DateTimeImmutable; +use Respect\Validation\Rule; + +interface UndefOrBuilder +{ + public static function undefOrAllOf(Rule $rule1, Rule $rule2, Rule ...$rules): Chain; + + public static function undefOrAlnum(string ...$additionalChars): Chain; + + public static function undefOrAlpha(string ...$additionalChars): Chain; + + public static function undefOrAlwaysInvalid(): Chain; + + public static function undefOrAlwaysValid(): Chain; + + public static function undefOrAnyOf(Rule $rule1, Rule $rule2, Rule ...$rules): Chain; + + public static function undefOrArrayType(): Chain; + + public static function undefOrArrayVal(): Chain; + + public static function undefOrBase( + int $base, + string $chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', + ): Chain; + + public static function undefOrBase64(): Chain; + + public static function undefOrBetween(mixed $minValue, mixed $maxValue): Chain; + + public static function undefOrBetweenExclusive(mixed $minimum, mixed $maximum): Chain; + + public static function undefOrBoolType(): Chain; + + public static function undefOrBoolVal(): Chain; + + public static function undefOrBsn(): Chain; + + public static function undefOrCall(callable $callable, Rule $rule): Chain; + + public static function undefOrCallableType(): Chain; + + public static function undefOrCallback(callable $callback, mixed ...$arguments): Chain; + + public static function undefOrCharset(string $charset, string ...$charsets): Chain; + + public static function undefOrCnh(): Chain; + + public static function undefOrCnpj(): Chain; + + public static function undefOrConsecutive(Rule $rule1, Rule $rule2, Rule ...$rules): Chain; + + public static function undefOrConsonant(string ...$additionalChars): Chain; + + public static function undefOrContains(mixed $containsValue, bool $identical = false): Chain; + + /** + * @param non-empty-array $needles + */ + public static function undefOrContainsAny(array $needles, bool $identical = false): Chain; + + public static function undefOrControl(string ...$additionalChars): Chain; + + public static function undefOrCountable(): Chain; + + /** + * @param "alpha-2"|"alpha-3"|"numeric" $set + */ + public static function undefOrCountryCode(string $set = 'alpha-2'): Chain; + + public static function undefOrCpf(): Chain; + + public static function undefOrCreditCard(string $brand = 'Any'): Chain; + + /** + * @param "alpha-3"|"numeric" $set + */ + public static function undefOrCurrencyCode(string $set = 'alpha-3'): Chain; + + public static function undefOrDate(string $format = 'Y-m-d'): Chain; + + public static function undefOrDateTime(?string $format = null): Chain; + + /** + * @param "years"|"months"|"days"|"hours"|"minutes"|"seconds"|"microseconds" $type + */ + public static function undefOrDateTimeDiff( + string $type, + Rule $rule, + ?string $format = null, + ?DateTimeImmutable $now = null, + ): Chain; + + public static function undefOrDecimal(int $decimals): Chain; + + public static function undefOrDigit(string ...$additionalChars): Chain; + + public static function undefOrDirectory(): Chain; + + public static function undefOrDomain(bool $tldCheck = true): Chain; + + public static function undefOrEach(Rule $rule): Chain; + + public static function undefOrEmail(): Chain; + + public static function undefOrEndsWith(mixed $endValue, bool $identical = false): Chain; + + public static function undefOrEquals(mixed $compareTo): Chain; + + public static function undefOrEquivalent(mixed $compareTo): Chain; + + public static function undefOrEven(): Chain; + + public static function undefOrExecutable(): Chain; + + public static function undefOrExists(): Chain; + + public static function undefOrExtension(string $extension): Chain; + + public static function undefOrFactor(int $dividend): Chain; + + public static function undefOrFalseVal(): Chain; + + public static function undefOrFibonacci(): Chain; + + public static function undefOrFile(): Chain; + + public static function undefOrFilterVar(int $filter, mixed $options = null): Chain; + + public static function undefOrFinite(): Chain; + + public static function undefOrFloatType(): Chain; + + public static function undefOrFloatVal(): Chain; + + public static function undefOrGraph(string ...$additionalChars): Chain; + + public static function undefOrGreaterThan(mixed $compareTo): Chain; + + public static function undefOrGreaterThanOrEqual(mixed $compareTo): Chain; + + public static function undefOrHetu(): Chain; + + public static function undefOrHexRgbColor(): Chain; + + public static function undefOrIban(): Chain; + + public static function undefOrIdentical(mixed $compareTo): Chain; + + public static function undefOrImage(): Chain; + + public static function undefOrImei(): Chain; + + public static function undefOrIn(mixed $haystack, bool $compareIdentical = false): Chain; + + public static function undefOrInfinite(): Chain; + + /** + * @param class-string $class + */ + public static function undefOrInstance(string $class): Chain; + + public static function undefOrIntType(): Chain; + + public static function undefOrIntVal(): Chain; + + public static function undefOrIp(string $range = '*', ?int $options = null): Chain; + + public static function undefOrIsbn(): Chain; + + public static function undefOrIterableType(): Chain; + + public static function undefOrIterableVal(): Chain; + + public static function undefOrJson(): Chain; + + public static function undefOrKey(string|int $key, Rule $rule): Chain; + + public static function undefOrKeyExists(string|int $key): Chain; + + public static function undefOrKeyOptional(string|int $key, Rule $rule): Chain; + + public static function undefOrKeySet(Rule $rule, Rule ...$rules): Chain; + + /** + * @param "alpha-2"|"alpha-3" $set + */ + public static function undefOrLanguageCode(string $set = 'alpha-2'): Chain; + + /** + * @param callable(mixed): Rule $ruleCreator + */ + public static function undefOrLazy(callable $ruleCreator): Chain; + + public static function undefOrLeapDate(string $format): Chain; + + public static function undefOrLeapYear(): Chain; + + public static function undefOrLength(Rule $rule): Chain; + + public static function undefOrLessThan(mixed $compareTo): Chain; + + public static function undefOrLessThanOrEqual(mixed $compareTo): Chain; + + public static function undefOrLowercase(): Chain; + + public static function undefOrLuhn(): Chain; + + public static function undefOrMacAddress(): Chain; + + public static function undefOrMax(Rule $rule): Chain; + + public static function undefOrMimetype(string $mimetype): Chain; + + public static function undefOrMin(Rule $rule): Chain; + + public static function undefOrMultiple(int $multipleOf): Chain; + + public static function undefOrNegative(): Chain; + + public static function undefOrNfeAccessKey(): Chain; + + public static function undefOrNif(): Chain; + + public static function undefOrNip(): Chain; + + public static function undefOrNo(bool $useLocale = false): Chain; + + public static function undefOrNoWhitespace(): Chain; + + public static function undefOrNoneOf(Rule $rule1, Rule $rule2, Rule ...$rules): Chain; + + public static function undefOrNot(Rule $rule): Chain; + + public static function undefOrNotBlank(): Chain; + + public static function undefOrNotEmoji(): Chain; + + public static function undefOrNotEmpty(): Chain; + + public static function undefOrNullType(): Chain; + + public static function undefOrNumber(): Chain; + + public static function undefOrNumericVal(): Chain; + + public static function undefOrObjectType(): Chain; + + public static function undefOrOdd(): Chain; + + public static function undefOrOneOf(Rule $rule1, Rule $rule2, Rule ...$rules): Chain; + + public static function undefOrPerfectSquare(): Chain; + + public static function undefOrPesel(): Chain; + + public static function undefOrPhone(?string $countryCode = null): Chain; + + public static function undefOrPhpLabel(): Chain; + + public static function undefOrPis(): Chain; + + public static function undefOrPolishIdCard(): Chain; + + public static function undefOrPortugueseNif(): Chain; + + public static function undefOrPositive(): Chain; + + public static function undefOrPostalCode(string $countryCode, bool $formatted = false): Chain; + + public static function undefOrPrimeNumber(): Chain; + + public static function undefOrPrintable(string ...$additionalChars): Chain; + + public static function undefOrProperty(string $propertyName, Rule $rule): Chain; + + public static function undefOrPropertyExists(string $propertyName): Chain; + + public static function undefOrPropertyOptional(string $propertyName, Rule $rule): Chain; + + public static function undefOrPublicDomainSuffix(): Chain; + + public static function undefOrPunct(string ...$additionalChars): Chain; + + public static function undefOrReadable(): Chain; + + public static function undefOrRegex(string $regex): Chain; + + public static function undefOrResourceType(): Chain; + + public static function undefOrRoman(): Chain; + + public static function undefOrScalarVal(): Chain; + + /** + * @param "B"|"KB"|"MB"|"GB"|"TB"|"PB"|"EB"|"ZB"|"YB" $unit + */ + public static function undefOrSize(string $unit, Rule $rule): Chain; + + public static function undefOrSlug(): Chain; + + public static function undefOrSorted(string $direction): Chain; + + public static function undefOrSpace(string ...$additionalChars): Chain; + + public static function undefOrStartsWith(mixed $startValue, bool $identical = false): Chain; + + public static function undefOrStringType(): Chain; + + public static function undefOrStringVal(): Chain; + + public static function undefOrSubdivisionCode(string $countryCode): Chain; + + /** + * @param mixed[] $superset + */ + public static function undefOrSubset(array $superset): Chain; + + public static function undefOrSymbolicLink(): Chain; + + public static function undefOrTime(string $format = 'H:i:s'): Chain; + + public static function undefOrTld(): Chain; + + public static function undefOrTrueVal(): Chain; + + public static function undefOrUnique(): Chain; + + public static function undefOrUploaded(): Chain; + + public static function undefOrUppercase(): Chain; + + public static function undefOrUrl(): Chain; + + public static function undefOrUuid(?int $version = null): Chain; + + public static function undefOrVersion(): Chain; + + public static function undefOrVideoUrl(?string $service = null): Chain; + + public static function undefOrVowel(string ...$additionalChars): Chain; + + public static function undefOrWhen(Rule $when, Rule $then, ?Rule $else = null): Chain; + + public static function undefOrWritable(): Chain; + + public static function undefOrXdigit(string ...$additionalChars): Chain; + + public static function undefOrYes(bool $useLocale = false): Chain; +} diff --git a/library/Mixins/UndefOrChain.php b/library/Mixins/UndefOrChain.php new file mode 100644 index 000000000..3fd2d0fbc --- /dev/null +++ b/library/Mixins/UndefOrChain.php @@ -0,0 +1,361 @@ + + * SPDX-License-Identifier: MIT + */ + +declare(strict_types=1); + +namespace Respect\Validation\Mixins; + +use DateTimeImmutable; +use Respect\Validation\Rule; + +interface UndefOrChain +{ + public function undefOrAllOf(Rule $rule1, Rule $rule2, Rule ...$rules): Chain; + + public function undefOrAlnum(string ...$additionalChars): Chain; + + public function undefOrAlpha(string ...$additionalChars): Chain; + + public function undefOrAlwaysInvalid(): Chain; + + public function undefOrAlwaysValid(): Chain; + + public function undefOrAnyOf(Rule $rule1, Rule $rule2, Rule ...$rules): Chain; + + public function undefOrArrayType(): Chain; + + public function undefOrArrayVal(): Chain; + + public function undefOrBase( + int $base, + string $chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', + ): Chain; + + public function undefOrBase64(): Chain; + + public function undefOrBetween(mixed $minValue, mixed $maxValue): Chain; + + public function undefOrBetweenExclusive(mixed $minimum, mixed $maximum): Chain; + + public function undefOrBoolType(): Chain; + + public function undefOrBoolVal(): Chain; + + public function undefOrBsn(): Chain; + + public function undefOrCall(callable $callable, Rule $rule): Chain; + + public function undefOrCallableType(): Chain; + + public function undefOrCallback(callable $callback, mixed ...$arguments): Chain; + + public function undefOrCharset(string $charset, string ...$charsets): Chain; + + public function undefOrCnh(): Chain; + + public function undefOrCnpj(): Chain; + + public function undefOrConsecutive(Rule $rule1, Rule $rule2, Rule ...$rules): Chain; + + public function undefOrConsonant(string ...$additionalChars): Chain; + + public function undefOrContains(mixed $containsValue, bool $identical = false): Chain; + + /** + * @param non-empty-array $needles + */ + public function undefOrContainsAny(array $needles, bool $identical = false): Chain; + + public function undefOrControl(string ...$additionalChars): Chain; + + public function undefOrCountable(): Chain; + + /** + * @param "alpha-2"|"alpha-3"|"numeric" $set + */ + public function undefOrCountryCode(string $set = 'alpha-2'): Chain; + + public function undefOrCpf(): Chain; + + public function undefOrCreditCard(string $brand = 'Any'): Chain; + + /** + * @param "alpha-3"|"numeric" $set + */ + public function undefOrCurrencyCode(string $set = 'alpha-3'): Chain; + + public function undefOrDate(string $format = 'Y-m-d'): Chain; + + public function undefOrDateTime(?string $format = null): Chain; + + /** + * @param "years"|"months"|"days"|"hours"|"minutes"|"seconds"|"microseconds" $type + */ + public function undefOrDateTimeDiff( + string $type, + Rule $rule, + ?string $format = null, + ?DateTimeImmutable $now = null, + ): Chain; + + public function undefOrDecimal(int $decimals): Chain; + + public function undefOrDigit(string ...$additionalChars): Chain; + + public function undefOrDirectory(): Chain; + + public function undefOrDomain(bool $tldCheck = true): Chain; + + public function undefOrEach(Rule $rule): Chain; + + public function undefOrEmail(): Chain; + + public function undefOrEndsWith(mixed $endValue, bool $identical = false): Chain; + + public function undefOrEquals(mixed $compareTo): Chain; + + public function undefOrEquivalent(mixed $compareTo): Chain; + + public function undefOrEven(): Chain; + + public function undefOrExecutable(): Chain; + + public function undefOrExists(): Chain; + + public function undefOrExtension(string $extension): Chain; + + public function undefOrFactor(int $dividend): Chain; + + public function undefOrFalseVal(): Chain; + + public function undefOrFibonacci(): Chain; + + public function undefOrFile(): Chain; + + public function undefOrFilterVar(int $filter, mixed $options = null): Chain; + + public function undefOrFinite(): Chain; + + public function undefOrFloatType(): Chain; + + public function undefOrFloatVal(): Chain; + + public function undefOrGraph(string ...$additionalChars): Chain; + + public function undefOrGreaterThan(mixed $compareTo): Chain; + + public function undefOrGreaterThanOrEqual(mixed $compareTo): Chain; + + public function undefOrHetu(): Chain; + + public function undefOrHexRgbColor(): Chain; + + public function undefOrIban(): Chain; + + public function undefOrIdentical(mixed $compareTo): Chain; + + public function undefOrImage(): Chain; + + public function undefOrImei(): Chain; + + public function undefOrIn(mixed $haystack, bool $compareIdentical = false): Chain; + + public function undefOrInfinite(): Chain; + + /** + * @param class-string $class + */ + public function undefOrInstance(string $class): Chain; + + public function undefOrIntType(): Chain; + + public function undefOrIntVal(): Chain; + + public function undefOrIp(string $range = '*', ?int $options = null): Chain; + + public function undefOrIsbn(): Chain; + + public function undefOrIterableType(): Chain; + + public function undefOrIterableVal(): Chain; + + public function undefOrJson(): Chain; + + public function undefOrKey(string|int $key, Rule $rule): Chain; + + public function undefOrKeyExists(string|int $key): Chain; + + public function undefOrKeyOptional(string|int $key, Rule $rule): Chain; + + public function undefOrKeySet(Rule $rule, Rule ...$rules): Chain; + + /** + * @param "alpha-2"|"alpha-3" $set + */ + public function undefOrLanguageCode(string $set = 'alpha-2'): Chain; + + /** + * @param callable(mixed): Rule $ruleCreator + */ + public function undefOrLazy(callable $ruleCreator): Chain; + + public function undefOrLeapDate(string $format): Chain; + + public function undefOrLeapYear(): Chain; + + public function undefOrLength(Rule $rule): Chain; + + public function undefOrLessThan(mixed $compareTo): Chain; + + public function undefOrLessThanOrEqual(mixed $compareTo): Chain; + + public function undefOrLowercase(): Chain; + + public function undefOrLuhn(): Chain; + + public function undefOrMacAddress(): Chain; + + public function undefOrMax(Rule $rule): Chain; + + public function undefOrMimetype(string $mimetype): Chain; + + public function undefOrMin(Rule $rule): Chain; + + public function undefOrMultiple(int $multipleOf): Chain; + + public function undefOrNegative(): Chain; + + public function undefOrNfeAccessKey(): Chain; + + public function undefOrNif(): Chain; + + public function undefOrNip(): Chain; + + public function undefOrNo(bool $useLocale = false): Chain; + + public function undefOrNoWhitespace(): Chain; + + public function undefOrNoneOf(Rule $rule1, Rule $rule2, Rule ...$rules): Chain; + + public function undefOrNot(Rule $rule): Chain; + + public function undefOrNotBlank(): Chain; + + public function undefOrNotEmoji(): Chain; + + public function undefOrNotEmpty(): Chain; + + public function undefOrNullType(): Chain; + + public function undefOrNumber(): Chain; + + public function undefOrNumericVal(): Chain; + + public function undefOrObjectType(): Chain; + + public function undefOrOdd(): Chain; + + public function undefOrOneOf(Rule $rule1, Rule $rule2, Rule ...$rules): Chain; + + public function undefOrPerfectSquare(): Chain; + + public function undefOrPesel(): Chain; + + public function undefOrPhone(?string $countryCode = null): Chain; + + public function undefOrPhpLabel(): Chain; + + public function undefOrPis(): Chain; + + public function undefOrPolishIdCard(): Chain; + + public function undefOrPortugueseNif(): Chain; + + public function undefOrPositive(): Chain; + + public function undefOrPostalCode(string $countryCode, bool $formatted = false): Chain; + + public function undefOrPrimeNumber(): Chain; + + public function undefOrPrintable(string ...$additionalChars): Chain; + + public function undefOrProperty(string $propertyName, Rule $rule): Chain; + + public function undefOrPropertyExists(string $propertyName): Chain; + + public function undefOrPropertyOptional(string $propertyName, Rule $rule): Chain; + + public function undefOrPublicDomainSuffix(): Chain; + + public function undefOrPunct(string ...$additionalChars): Chain; + + public function undefOrReadable(): Chain; + + public function undefOrRegex(string $regex): Chain; + + public function undefOrResourceType(): Chain; + + public function undefOrRoman(): Chain; + + public function undefOrScalarVal(): Chain; + + /** + * @param "B"|"KB"|"MB"|"GB"|"TB"|"PB"|"EB"|"ZB"|"YB" $unit + */ + public function undefOrSize(string $unit, Rule $rule): Chain; + + public function undefOrSlug(): Chain; + + public function undefOrSorted(string $direction): Chain; + + public function undefOrSpace(string ...$additionalChars): Chain; + + public function undefOrStartsWith(mixed $startValue, bool $identical = false): Chain; + + public function undefOrStringType(): Chain; + + public function undefOrStringVal(): Chain; + + public function undefOrSubdivisionCode(string $countryCode): Chain; + + /** + * @param mixed[] $superset + */ + public function undefOrSubset(array $superset): Chain; + + public function undefOrSymbolicLink(): Chain; + + public function undefOrTime(string $format = 'H:i:s'): Chain; + + public function undefOrTld(): Chain; + + public function undefOrTrueVal(): Chain; + + public function undefOrUnique(): Chain; + + public function undefOrUploaded(): Chain; + + public function undefOrUppercase(): Chain; + + public function undefOrUrl(): Chain; + + public function undefOrUuid(?int $version = null): Chain; + + public function undefOrVersion(): Chain; + + public function undefOrVideoUrl(?string $service = null): Chain; + + public function undefOrVowel(string ...$additionalChars): Chain; + + public function undefOrWhen(Rule $when, Rule $then, ?Rule $else = null): Chain; + + public function undefOrWritable(): Chain; + + public function undefOrXdigit(string ...$additionalChars): Chain; + + public function undefOrYes(bool $useLocale = false): Chain; +} diff --git a/library/Validator.php b/library/Validator.php index ccadf7e9b..06ba7146c 100644 --- a/library/Validator.php +++ b/library/Validator.php @@ -12,7 +12,7 @@ use Respect\Validation\Exceptions\ValidationException; use Respect\Validation\Message\Formatter; use Respect\Validation\Message\Translator; -use Respect\Validation\Mixins\StaticValidator; +use Respect\Validation\Mixins\Builder; use Respect\Validation\Rules\Core\Binder; use Respect\Validation\Rules\Core\Reducer; use Throwable; @@ -22,7 +22,7 @@ use function is_string; /** - * @mixin StaticValidator + * @mixin Builder */ final class Validator implements Rule { diff --git a/phpstan.neon.dist b/phpstan.neon.dist index 331611805..ba0f6f578 100644 --- a/phpstan.neon.dist +++ b/phpstan.neon.dist @@ -23,21 +23,21 @@ parameters: path: tests/feature/Transformers/DeprecatedAgeTest.php - message: '/Call to an undefined static method Respect\\Validation\\Validator::attribute\(\)./' path: tests/feature/Transformers/DeprecatedAttributeTest.php - - message: '/Static method Respect\\Validation\\Mixins\\StaticValidator::key\(\) invoked with \d parameters?, 2 required/' + - message: '/Static method Respect\\Validation\\Mixins\\Builder::key\(\) invoked with \d parameters?, 2 required/' path: tests/feature/Transformers/DeprecatedKeyTest.php - message: '/Call to an undefined static method Respect\\Validation\\Validator::keyNested\(\)./' path: tests/feature/Transformers/DeprecatedKeyNestedTest.php - message: '/Call to an undefined static method Respect\\Validation\\Validator::keyValue\(\)./' path: tests/feature/Transformers/DeprecatedKeyValueTest.php - - message: '/Parameter #1 \$rule of static method Respect\\Validation\\Mixins\\StaticValidator::length\(\) expects Respect\\Validation\\Rule.+/' + - message: '/Parameter #1 \$rule of static method Respect\\Validation\\Mixins\\Builder::length\(\) expects Respect\\Validation\\Rule.+/' path: tests/feature/Transformers/DeprecatedLengthTest.php - - message: '/Static method Respect\\Validation\\Mixins\\StaticValidator::length\(\) invoked with \d parameters, 1 required/' + - message: '/Static method Respect\\Validation\\Mixins\\Builder::length\(\) invoked with \d parameters, 1 required/' path: tests/feature/Transformers/DeprecatedLengthTest.php - - message: '/Parameter #1 \$rule of static method Respect\\Validation\\Mixins\\StaticValidator::max\(\) expects Respect\\Validation\\Rule.+/' + - message: '/Parameter #1 \$rule of static method Respect\\Validation\\Mixins\\Builder::max\(\) expects Respect\\Validation\\Rule.+/' path: tests/feature/Transformers/DeprecatedMaxTest.php - - message: '/Parameter #1 \$rule of static method Respect\\Validation\\Mixins\\StaticValidator::min\(\) expects Respect\\Validation\\Rule.+/' + - message: '/Parameter #1 \$rule of static method Respect\\Validation\\Mixins\\Builder::min\(\) expects Respect\\Validation\\Rule.+/' path: tests/feature/Transformers/DeprecatedMinTest.php - - message: '/Parameter #(1|2) \$(unit|rule) of static method Respect\\Validation\\Mixins\\StaticValidator::size\(\) expects .+/' + - message: '/Parameter #(1|2) \$(unit|rule) of static method Respect\\Validation\\Mixins\\Builder::size\(\) expects .+/' path: tests/feature/Transformers/DeprecatedSizeTest.php - message: '/Call to an undefined static method Respect\\Validation\\Validator::type\(\)./' path: tests/feature/Transformers/DeprecatedTypeTest.php