graphql_schema 0.1.3 → 0.1.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/graphql_schema.gemspec +1 -1
- data/lib/graphql_schema.rb +57 -13
- data/lib/graphql_schema/version.rb +1 -1
- metadata +5 -19
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 | 
            -
             | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 2 | 
            +
            SHA256:
         | 
| 3 | 
            +
              metadata.gz: 97547e740c444ed9e293f4031694a757954b1f5cabf10d45e1e9556fc189703e
         | 
| 4 | 
            +
              data.tar.gz: 41ac5410e992209a7ed3be88c3065c8df7846763242c214bd8cb2b5bcfdab4c9
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: b385a964e26cd64164013105f656134ac1e75328a3c4ed3fe9766506207ea68e983907c8cf4f72ec6cab09ec926eee61c4e9ef047bab279ee68ccdda7e873d35
         | 
| 7 | 
            +
              data.tar.gz: cd5e3fd60261be4036845dfd936b8b7654c0e84c06ad51183cf9d4633dfa4d775a8663e7c546e1234777a8c6c0752f59d64bdf0ae5d1f627be5a7a75b370286c
         | 
    
        data/graphql_schema.gemspec
    CHANGED
    
    | @@ -19,10 +19,10 @@ Gem::Specification.new do |spec| | |
| 19 19 | 
             
              spec.bindir        = "exe"
         | 
| 20 20 | 
             
              spec.executables   = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
         | 
| 21 21 | 
             
              spec.require_paths = ["lib"]
         | 
| 22 | 
            +
              spec.metadata['allowed_push_host'] = "https://rubygems.org"
         | 
| 22 23 |  | 
| 23 24 | 
             
              spec.add_development_dependency "graphql", "~> 1.2"
         | 
| 24 25 | 
             
              spec.add_development_dependency "byebug", '~> 9.0' if RUBY_ENGINE == 'ruby'
         | 
| 25 | 
            -
              spec.add_development_dependency "bundler", "~> 1.12"
         | 
| 26 26 | 
             
              spec.add_development_dependency "rake", "~> 10.0"
         | 
| 27 27 | 
             
              spec.add_development_dependency "minitest", "~> 5.0"
         | 
| 28 28 | 
             
            end
         | 
    
        data/lib/graphql_schema.rb
    CHANGED
    
    | @@ -20,10 +20,34 @@ class GraphQLSchema | |
| 20 20 | 
             
                end
         | 
| 21 21 | 
             
              end
         | 
| 22 22 |  | 
| 23 | 
            +
              def directives
         | 
| 24 | 
            +
                @directives ||= @hash.fetch('directives').map do |directive|
         | 
| 25 | 
            +
                  Directive.new(directive)
         | 
| 26 | 
            +
                end.sort_by(&:name)
         | 
| 27 | 
            +
              end
         | 
| 28 | 
            +
             | 
| 23 29 | 
             
              def types
         | 
| 24 30 | 
             
                @types ||= @hash.fetch('types').map{ |type_hash| TypeDefinition.new(type_hash) }.sort_by(&:name)
         | 
| 25 31 | 
             
              end
         | 
| 26 32 |  | 
| 33 | 
            +
              def types_by_name
         | 
| 34 | 
            +
                @types_by_name ||= types.map { |type| [type.name, type] }.to_h
         | 
| 35 | 
            +
              end
         | 
| 36 | 
            +
             | 
| 37 | 
            +
              module WithArgs
         | 
| 38 | 
            +
                def args
         | 
| 39 | 
            +
                  @args ||= @hash.fetch('args').map{ |arg_hash| InputValue.new(arg_hash) }
         | 
| 40 | 
            +
                end
         | 
| 41 | 
            +
             | 
| 42 | 
            +
                def required_args
         | 
| 43 | 
            +
                  @required_args ||= args.select{ |arg| arg.type.non_null? }
         | 
| 44 | 
            +
                end
         | 
| 45 | 
            +
             | 
| 46 | 
            +
                def optional_args
         | 
| 47 | 
            +
                  @optional_args ||= args.reject{ |arg| arg.type.non_null? }
         | 
| 48 | 
            +
                end
         | 
| 49 | 
            +
              end
         | 
| 50 | 
            +
             | 
| 27 51 | 
             
              module NamedHash
         | 
| 28 52 | 
             
                def name
         | 
| 29 53 | 
             
                  @hash.fetch('name')
         | 
| @@ -89,23 +113,12 @@ class GraphQLSchema | |
| 89 113 | 
             
              class Field
         | 
| 90 114 | 
             
                include NamedHash
         | 
| 91 115 | 
             
                include Deprecatable
         | 
| 116 | 
            +
                include WithArgs
         | 
| 92 117 |  | 
| 93 118 | 
             
                def initialize(field_hash)
         | 
| 94 119 | 
             
                  @hash = field_hash
         | 
| 95 120 | 
             
                end
         | 
| 96 121 |  | 
| 97 | 
            -
                def args
         | 
| 98 | 
            -
                  @args ||= @hash.fetch('args').map{ |arg_hash| InputValue.new(arg_hash) }
         | 
| 99 | 
            -
                end
         | 
| 100 | 
            -
             | 
| 101 | 
            -
                def required_args
         | 
| 102 | 
            -
                  @required_args ||= args.select{ |arg| arg.type.non_null? }
         | 
| 103 | 
            -
                end
         | 
| 104 | 
            -
             | 
| 105 | 
            -
                def optional_args
         | 
| 106 | 
            -
                  @optional_args ||= args.reject{ |arg| arg.type.non_null? }
         | 
| 107 | 
            -
                end
         | 
| 108 | 
            -
             | 
| 109 122 | 
             
                def type
         | 
| 110 123 | 
             
                  @type ||= TypeDeclaration.new(@hash.fetch('type'))
         | 
| 111 124 | 
             
                end
         | 
| @@ -175,6 +188,10 @@ class GraphQLSchema | |
| 175 188 | 
             
                  @of_type ||= TypeDeclaration.new(@hash.fetch('ofType'))
         | 
| 176 189 | 
             
                end
         | 
| 177 190 |  | 
| 191 | 
            +
                def list?
         | 
| 192 | 
            +
                  kind == 'LIST'
         | 
| 193 | 
            +
                end
         | 
| 194 | 
            +
             | 
| 178 195 | 
             
                def non_null?
         | 
| 179 196 | 
             
                  kind == 'NON_NULL'
         | 
| 180 197 | 
             
                end
         | 
| @@ -188,6 +205,10 @@ class GraphQLSchema | |
| 188 205 | 
             
                  end
         | 
| 189 206 | 
             
                end
         | 
| 190 207 |  | 
| 208 | 
            +
                def unwrap_list
         | 
| 209 | 
            +
                  list? ? of_type.unwrap_list : self
         | 
| 210 | 
            +
                end
         | 
| 211 | 
            +
             | 
| 191 212 | 
             
                def unwrap_non_null
         | 
| 192 213 | 
             
                  non_null? ? of_type.unwrap_non_null : self
         | 
| 193 214 | 
             
                end
         | 
| @@ -202,6 +223,25 @@ class GraphQLSchema | |
| 202 223 | 
             
                end
         | 
| 203 224 | 
             
              end
         | 
| 204 225 |  | 
| 226 | 
            +
              class Directive
         | 
| 227 | 
            +
                include NamedHash
         | 
| 228 | 
            +
                include WithArgs
         | 
| 229 | 
            +
             | 
| 230 | 
            +
                BUILTIN = %w(skip include deprecated).to_set
         | 
| 231 | 
            +
             | 
| 232 | 
            +
                def initialize(directive)
         | 
| 233 | 
            +
                  @hash = directive
         | 
| 234 | 
            +
                end
         | 
| 235 | 
            +
             | 
| 236 | 
            +
                def locations
         | 
| 237 | 
            +
                  @hash.fetch('locations')
         | 
| 238 | 
            +
                end
         | 
| 239 | 
            +
             | 
| 240 | 
            +
                def builtin?
         | 
| 241 | 
            +
                  BUILTIN.include?(name)
         | 
| 242 | 
            +
                end
         | 
| 243 | 
            +
              end
         | 
| 244 | 
            +
             | 
| 205 245 | 
             
              class TypeDefinition < Type
         | 
| 206 246 | 
             
                def fields(include_deprecated: false)
         | 
| 207 247 | 
             
                  return unless @hash.fetch('fields')
         | 
| @@ -209,8 +249,12 @@ class GraphQLSchema | |
| 209 249 | 
             
                  include_deprecated ? @fields : @fields.reject(&:deprecated?)
         | 
| 210 250 | 
             
                end
         | 
| 211 251 |  | 
| 252 | 
            +
                def fields_by_name
         | 
| 253 | 
            +
                  @fields_by_name ||= fields(include_deprecated: true).map{ |field| [field.name, field]}.to_h
         | 
| 254 | 
            +
                end
         | 
| 255 | 
            +
             | 
| 212 256 | 
             
                def input_fields
         | 
| 213 | 
            -
                  @input_fields ||= @hash.fetch('inputFields').map{ |field_hash| InputValue.new(field_hash) } | 
| 257 | 
            +
                  @input_fields ||= @hash.fetch('inputFields').map{ |field_hash| InputValue.new(field_hash) }
         | 
| 214 258 | 
             
                end
         | 
| 215 259 |  | 
| 216 260 | 
             
                def required_input_fields
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: graphql_schema
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.1. | 
| 4 | 
            +
              version: 0.1.8
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Dylan Thacker-Smith
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: exe
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date:  | 
| 11 | 
            +
            date: 2021-06-08 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: graphql
         | 
| @@ -38,20 +38,6 @@ dependencies: | |
| 38 38 | 
             
                - - "~>"
         | 
| 39 39 | 
             
                  - !ruby/object:Gem::Version
         | 
| 40 40 | 
             
                    version: '9.0'
         | 
| 41 | 
            -
            - !ruby/object:Gem::Dependency
         | 
| 42 | 
            -
              name: bundler
         | 
| 43 | 
            -
              requirement: !ruby/object:Gem::Requirement
         | 
| 44 | 
            -
                requirements:
         | 
| 45 | 
            -
                - - "~>"
         | 
| 46 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 47 | 
            -
                    version: '1.12'
         | 
| 48 | 
            -
              type: :development
         | 
| 49 | 
            -
              prerelease: false
         | 
| 50 | 
            -
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 51 | 
            -
                requirements:
         | 
| 52 | 
            -
                - - "~>"
         | 
| 53 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 54 | 
            -
                    version: '1.12'
         | 
| 55 41 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 56 42 | 
             
              name: rake
         | 
| 57 43 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -102,7 +88,8 @@ files: | |
| 102 88 | 
             
            homepage: https://github.com/Shopify/graphql_schema
         | 
| 103 89 | 
             
            licenses:
         | 
| 104 90 | 
             
            - MIT
         | 
| 105 | 
            -
            metadata: | 
| 91 | 
            +
            metadata:
         | 
| 92 | 
            +
              allowed_push_host: https://rubygems.org
         | 
| 106 93 | 
             
            post_install_message: 
         | 
| 107 94 | 
             
            rdoc_options: []
         | 
| 108 95 | 
             
            require_paths:
         | 
| @@ -118,8 +105,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 118 105 | 
             
                - !ruby/object:Gem::Version
         | 
| 119 106 | 
             
                  version: '0'
         | 
| 120 107 | 
             
            requirements: []
         | 
| 121 | 
            -
             | 
| 122 | 
            -
            rubygems_version: 2.5.2
         | 
| 108 | 
            +
            rubygems_version: 3.2.17
         | 
| 123 109 | 
             
            signing_key: 
         | 
| 124 110 | 
             
            specification_version: 4
         | 
| 125 111 | 
             
            summary: Classes for convenient use of GraphQL introspection result
         |