Submit
Path:
~
/
/
opt
/
psa
/
admin
/
plib
/
vendor
/
webonyx
/
graphql-php
/
src
/
Validator
/
Rules
/
File Content:
UniqueDirectivesPerLocation.php
<?php declare(strict_types=1); namespace GraphQL\Validator\Rules; use GraphQL\Error\Error; use GraphQL\Error\InvariantViolation; use GraphQL\Language\AST\DirectiveDefinitionNode; use GraphQL\Language\AST\Node; use GraphQL\Language\Visitor; use GraphQL\Type\Definition\Directive; use GraphQL\Validator\QueryValidationContext; use GraphQL\Validator\SDLValidationContext; use GraphQL\Validator\ValidationContext; /** * Unique directive names per location. * * A GraphQL document is only valid if all non-repeatable directives at * a given location are uniquely named. * * @phpstan-import-type VisitorArray from Visitor */ class UniqueDirectivesPerLocation extends ValidationRule { /** @throws InvariantViolation */ public function getVisitor(QueryValidationContext $context): array { return $this->getASTVisitor($context); } /** @throws InvariantViolation */ public function getSDLVisitor(SDLValidationContext $context): array { return $this->getASTVisitor($context); } /** * @throws InvariantViolation * * @phpstan-return VisitorArray */ public function getASTVisitor(ValidationContext $context): array { /** @var array<string, true> $uniqueDirectiveMap */ $uniqueDirectiveMap = []; $schema = $context->getSchema(); $definedDirectives = $schema !== null ? $schema->getDirectives() : Directive::getInternalDirectives(); foreach ($definedDirectives as $directive) { if (! $directive->isRepeatable) { $uniqueDirectiveMap[$directive->name] = true; } } $astDefinitions = $context->getDocument()->definitions; foreach ($astDefinitions as $definition) { if ($definition instanceof DirectiveDefinitionNode && ! $definition->repeatable ) { $uniqueDirectiveMap[$definition->name->value] = true; } } return [ 'enter' => static function (Node $node) use ($uniqueDirectiveMap, $context): void { if (! property_exists($node, 'directives')) { return; } $knownDirectives = []; foreach ($node->directives as $directive) { $directiveName = $directive->name->value; if (isset($uniqueDirectiveMap[$directiveName])) { if (isset($knownDirectives[$directiveName])) { $context->reportError(new Error( static::duplicateDirectiveMessage($directiveName), [$knownDirectives[$directiveName], $directive] )); } else { $knownDirectives[$directiveName] = $directive; } } } }, ]; } public static function duplicateDirectiveMessage(string $directiveName): string { return "The directive \"{$directiveName}\" can only be used once at this location."; } }
Edit
Rename
Chmod
Delete
FILE
FOLDER
INFO
Name
Size
Permission
Action
CustomValidationRule.php
982 bytes
0644
DisableIntrospection.php
1428 bytes
0644
ExecutableDefinitions.php
2093 bytes
0644
FieldsOnCorrectType.php
5239 bytes
0644
FragmentsOnCompositeTypes.php
2212 bytes
0644
KnownArgumentNames.php
2471 bytes
0644
KnownArgumentNamesOnDirectives.php
3669 bytes
0644
KnownDirectives.php
7939 bytes
0644
KnownFragmentNames.php
1023 bytes
0644
KnownTypeNames.php
3455 bytes
0644
LoneAnonymousOperation.php
1591 bytes
0644
LoneSchemaDefinition.php
1793 bytes
0644
NoFragmentCycles.php
3359 bytes
0644
NoUndefinedVariables.php
2351 bytes
0644
NoUnusedFragments.php
2229 bytes
0644
NoUnusedVariables.php
2211 bytes
0644
OverlappingFieldsCanBeMerged.php
31858 bytes
0644
PossibleFragmentSpreads.php
6390 bytes
0644
PossibleTypeExtensions.php
6340 bytes
0644
ProvidedRequiredArguments.php
2024 bytes
0644
ProvidedRequiredArgumentsOnDirectives.php
4287 bytes
0644
QueryComplexity.php
9211 bytes
0644
QueryDepth.php
4144 bytes
0644
QuerySecurityRule.php
6556 bytes
0644
ScalarLeafs.php
1687 bytes
0644
SingleFieldSubscription.php
1506 bytes
0644
UniqueArgumentDefinitionNames.php
2857 bytes
0644
UniqueArgumentNames.php
2003 bytes
0644
UniqueDirectiveNames.php
1971 bytes
0644
UniqueDirectivesPerLocation.php
3165 bytes
0644
UniqueEnumValueNames.php
2450 bytes
0644
UniqueFieldDefinitionNames.php
3831 bytes
0644
UniqueFragmentNames.php
1541 bytes
0644
UniqueInputFieldNames.php
2446 bytes
0644
UniqueOperationNames.php
1692 bytes
0644
UniqueOperationTypes.php
2420 bytes
0644
UniqueTypeNames.php
2172 bytes
0644
UniqueVariableNames.php
1473 bytes
0644
ValidationRule.php
870 bytes
0644
ValuesOfCorrectType.php
7329 bytes
0644
VariablesAreInputTypes.php
1361 bytes
0644
VariablesInAllowedPosition.php
4705 bytes
0644
N4ST4R_ID | Naxtarrr