code: public static function getDirectiveValues(Directive $directiveDef, $node, $variableValues = null)
      {
          if (isset($node->directives) && $node->directives instanceof NodeList) {
              $directiveNode = Utils::find(
                  $node->directives,
                  static function (DirectiveNode $directive) use ($directiveDef) {
                      return $directive->name->value === $directiveDef->name;
                  }
              );
  
              if ($directiveNode !== null) {
                  return self::getArgumentValues($directiveDef, $directiveNode, $variableValues);
              }
          }
  
          return null;
      }
docs: Prepares an object map of argument values given a directive definition
  and a AST node which may contain directives. Optionally also accepts a map
  of variable values.
  
  If the directive does not exist on the node, returns undefined.
  
  @param FragmentSpreadNode|FieldNode|InlineFragmentNode|EnumValueDefinitionNode|FieldDefinitionNode $node
  @param mixed[]|null                                                                                $variableValues
  
  @return mixed[]|null