Class: GraphQL::StaticValidation::TypeStack
- Inherits:
 - 
      Object
      
        
- Object
 - GraphQL::StaticValidation::TypeStack
 
 
- Defined in:
 - lib/graphql/static_validation/type_stack.rb
 
Overview
- Ride along with 
GraphQL::Language::Visitor - Track type info, expose it to validators
 
Defined Under Namespace
Modules: ArgumentStrategy, DirectiveStrategy, FieldStrategy, FragmentDefinitionStrategy, FragmentSpreadStrategy, FragmentWithTypeStrategy, InlineFragmentStrategy, OperationDefinitionStrategy Classes: EnterWithStrategy, LeaveWithStrategy
Constant Summary collapse
- TYPE_INFERRENCE_ROOTS =
          
These are jumping-off points for infering types down the tree
 [ GraphQL::Language::Nodes::OperationDefinition, GraphQL::Language::Nodes::FragmentDefinition, ]
Instance Attribute Summary collapse
- 
  
    
      #argument_definitions  ⇒ Array<GraphQL::Node::Argument> 
    
    
  
  
  
  
    
      readonly
    
    
  
  
  
  
  
  
    
Arguments which have been entered.
 - 
  
    
      #directive_definitions  ⇒ Array<GraphQL::Node::Directive> 
    
    
  
  
  
  
    
      readonly
    
    
  
  
  
  
  
  
    
Directives are pushed on, then popped off while traversing the tree.
 - 
  
    
      #field_definitions  ⇒ Array<GraphQL::Field> 
    
    
  
  
  
  
    
      readonly
    
    
  
  
  
  
  
  
    
When it enters a field, it’s pushed on this stack (useful for nested fields, args).
 - 
  
    
      #object_types  ⇒ Array<GraphQL::ObjectType, GraphQL::Union, GraphQL::Interface> 
    
    
  
  
  
  
    
      readonly
    
    
  
  
  
  
  
  
    
When it enters an object (starting with query or mutation root), it’s pushed on this stack.
 - 
  
    
      #path  ⇒ Array<String> 
    
    
  
  
  
  
    
      readonly
    
    
  
  
  
  
  
  
    
Fields which have been entered (by their AST name).
 - 
  
    
      #schema  ⇒ GraphQL::Schema 
    
    
  
  
  
  
    
      readonly
    
    
  
  
  
  
  
  
    
The schema whose types are present in this document.
 
Instance Method Summary collapse
- 
  
    
      #initialize(schema, visitor)  ⇒ TypeStack 
    
    
  
  
  
    constructor
  
  
  
  
  
  
  
    
A new instance of TypeStack.
 
Constructor Details
#initialize(schema, visitor) ⇒ TypeStack
Returns a new instance of TypeStack.
      38 39 40 41 42 43 44 45 46 47 48 49 50  | 
    
      # File 'lib/graphql/static_validation/type_stack.rb', line 38 def initialize(schema, visitor) @schema = schema @object_types = [] @field_definitions = [] @directive_definitions = [] @argument_definitions = [] @path = [] PUSH_STRATEGIES.each do |node_class, strategy| visitor[node_class].enter << EnterWithStrategy.new(self, strategy) visitor[node_class].leave << LeaveWithStrategy.new(self, strategy) end end  | 
  
Instance Attribute Details
#argument_definitions ⇒ Array<GraphQL::Node::Argument> (readonly)
Returns arguments which have been entered.
      31 32 33  | 
    
      # File 'lib/graphql/static_validation/type_stack.rb', line 31 def argument_definitions @argument_definitions end  | 
  
#directive_definitions ⇒ Array<GraphQL::Node::Directive> (readonly)
Directives are pushed on, then popped off while traversing the tree
      28 29 30  | 
    
      # File 'lib/graphql/static_validation/type_stack.rb', line 28 def directive_definitions @directive_definitions end  | 
  
#field_definitions ⇒ Array<GraphQL::Field> (readonly)
When it enters a field, it’s pushed on this stack (useful for nested fields, args). When it exits, it’s popped off.
      24 25 26  | 
    
      # File 'lib/graphql/static_validation/type_stack.rb', line 24 def field_definitions @field_definitions end  | 
  
#object_types ⇒ Array<GraphQL::ObjectType, GraphQL::Union, GraphQL::Interface> (readonly)
When it enters an object (starting with query or mutation root), it’s pushed on this stack. When it exits, it’s popped off.
      19 20 21  | 
    
      # File 'lib/graphql/static_validation/type_stack.rb', line 19 def object_types @object_types end  | 
  
#path ⇒ Array<String> (readonly)
Returns fields which have been entered (by their AST name).
      34 35 36  | 
    
      # File 'lib/graphql/static_validation/type_stack.rb', line 34 def path @path end  | 
  
#schema ⇒ GraphQL::Schema (readonly)
Returns the schema whose types are present in this document.
      14 15 16  | 
    
      # File 'lib/graphql/static_validation/type_stack.rb', line 14 def schema @schema end  |