hq-graphql 1.1.2 → 2.0.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7efcc65afc49394548596015925cb1507dbcc34a5a7517256b430bef6528e9a0
4
- data.tar.gz: 73412d83d3ed91883e2429b1d6ace253fc7df899358d4a22ff5f70afebdf9a31
3
+ metadata.gz: b4f7f2421a64474e031ddd0a97ef63d36c03218fdfc51bf759f0f1150e1ae5cb
4
+ data.tar.gz: 19addd42ac2c2f4bae1b985cacbda91998a3616b71f2e9923e19e89e8937d111
5
5
  SHA512:
6
- metadata.gz: d91c6236223a1e7d87c4a2fc46bcc3648d291db13d376d7afef25c0441007f4e651072081fcba1ec8edea259b689930d106473d03a91908ab9a4ebf62348c99e
7
- data.tar.gz: 425964b4dfd40e6f30b34a061c8486ce1bcef8d3860ece699790aac1064943a36a203dfc373a66d5f8372eedc4cff5298fe01611eb0a1ada0bf67614c9238a3e
6
+ metadata.gz: '0777580cb64e038700a3d16e6a20ef1883fe5d39575a7d7db13df5e64950bf263946581463546b6dfe53ec4aab262a07cc9114896c7755c1aaf2428e3a81c22a'
7
+ data.tar.gz: e51c0b4555486894697b81420264f6abd515bb81eeeff5df4869b0a3ebb46430e6a20a3c5179e4a6d1b32e930e7253e2706377dc127394b8a66d53831986a3da
data/Rakefile CHANGED
@@ -1,17 +1,19 @@
1
+ # frozen_string_literal: true
2
+
1
3
  begin
2
- require 'bundler/setup'
4
+ require "bundler/setup"
3
5
  rescue LoadError
4
- puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
6
+ puts "You must `gem install bundler` and `bundle install` to run rake tasks"
5
7
  end
6
8
 
7
- require 'rdoc/task'
9
+ require "rdoc/task"
8
10
 
9
11
  RDoc::Task.new(:rdoc) do |rdoc|
10
- rdoc.rdoc_dir = 'rdoc'
11
- rdoc.title = 'HQ::GraphQL'
12
- rdoc.options << '--line-numbers'
13
- rdoc.rdoc_files.include('README.rdoc')
14
- rdoc.rdoc_files.include('lib/**/*.rb')
12
+ rdoc.rdoc_dir = "rdoc"
13
+ rdoc.title = "HQ::GraphQL"
14
+ rdoc.options << "--line-numbers"
15
+ rdoc.rdoc_files.include("README.rdoc")
16
+ rdoc.rdoc_files.include("lib/**/*.rb")
15
17
  end
16
18
 
17
- require 'bundler/gem_tasks'
19
+ require "bundler/gem_tasks"
@@ -1,27 +1,34 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
1
4
  module HQ
2
5
  module GraphQL
3
6
  module ActiveRecordExtensions
4
- class Error < StandardError
5
- MISSING_MODEL_MSG = "Your GraphQL object must be connected to a model: `::HQ::GraphQL::Object.with_model 'User'`".freeze
6
- MISSING_ATTR_MSG = "Can't find attr %{model}.%{attr}'`".freeze
7
- MISSING_ASSOC_MSG = "Can't find association %{model}.%{assoc}'`".freeze
8
- end
7
+ extend T::Sig
8
+ extend T::Helpers
9
9
 
10
- def self.included(base)
11
- base.extend(ClassMethods)
10
+ class Error < StandardError
11
+ MISSING_MODEL_MSG = "Your GraphQL object must be connected to a model: `::HQ::GraphQL::Object.with_model 'User'`"
12
+ MISSING_ATTR_MSG = "Can't find attr %{model}.%{attr}'`"
13
+ MISSING_ASSOC_MSG = "Can't find association %{model}.%{assoc}'`"
12
14
  end
13
15
 
14
16
  module ClassMethods
17
+ extend T::Sig
18
+ include Kernel
19
+
15
20
  attr_accessor :model_name,
16
21
  :auto_load_attributes,
17
22
  :auto_load_associations
18
23
 
24
+ sig { params(block: T.nilable(T.proc.void)).returns(T::Array[T.proc.void]) }
19
25
  def lazy_load(&block)
20
26
  @lazy_load ||= []
21
27
  @lazy_load << block if block
22
28
  @lazy_load
23
29
  end
24
30
 
31
+ sig { void }
25
32
  def lazy_load!
26
33
  lazy_load.map(&:call)
27
34
  @lazy_load = []
@@ -57,6 +64,7 @@ module HQ
57
64
 
58
65
  private
59
66
 
67
+ sig { params(attrs: T.any(String, Symbol)).void }
60
68
  def add_attributes(*attrs)
61
69
  validate_model!
62
70
  added_attributes.concat attrs.map(&:to_sym)
@@ -65,6 +73,7 @@ module HQ
65
73
  alias_method :add_attrs, :add_attributes
66
74
  alias_method :add_attr, :add_attributes
67
75
 
76
+ sig { params(attrs: T.any(String, Symbol)).void }
68
77
  def remove_attributes(*attrs)
69
78
  validate_model!
70
79
  removed_attributes.concat attrs.map(&:to_sym)
@@ -73,12 +82,14 @@ module HQ
73
82
  alias_method :remove_attrs, :remove_attributes
74
83
  alias_method :remove_attr, :remove_attributes
75
84
 
85
+ sig { params(associations: T.any(String, Symbol)).void }
76
86
  def add_associations(*associations)
77
87
  validate_model!
78
88
  added_associations.concat associations.map(&:to_sym)
79
89
  end
80
90
  alias_method :add_association, :add_associations
81
91
 
92
+ sig { params(associations: T.any(String, Symbol)).void }
82
93
  def remove_associations(*associations)
83
94
  validate_model!
84
95
  removed_associations.concat associations.map(&:to_sym)
@@ -89,6 +100,7 @@ module HQ
89
100
  @model_klass ||= model_name.constantize
90
101
  end
91
102
 
103
+ sig { params(attr: Symbol).returns(T.untyped) }
92
104
  def column_from_model(attr)
93
105
  model_klass.columns_hash[attr.to_s] || raise(Error, Error::MISSING_ATTR_MSG % { model: model_name, attr: attr })
94
106
  end
@@ -97,29 +109,34 @@ module HQ
97
109
  model_klass.reflect_on_association(association) || raise(Error, Error::MISSING_ASSOC_MSG % { model: model_name, assoc: association })
98
110
  end
99
111
 
112
+ sig { returns(T::Array[Symbol]) }
100
113
  def added_attributes
101
114
  @added_attributes ||= []
102
115
  end
103
116
 
117
+ sig { returns(T::Array[Symbol]) }
104
118
  def removed_attributes
105
119
  @removed_attributes ||= []
106
120
  end
107
121
 
122
+ sig { returns(T::Array[Symbol]) }
108
123
  def added_associations
109
124
  @added_associations ||= []
110
125
  end
111
126
 
127
+ sig { returns(T::Array[Symbol]) }
112
128
  def removed_associations
113
129
  @removed_associations ||= []
114
130
  end
115
131
 
132
+ sig { void }
116
133
  def validate_model!
117
134
  lazy_load do
118
135
  model_name || raise(Error, Error::MISSING_MODEL_MSG)
119
136
  end
120
137
  end
121
-
122
138
  end
139
+ mixes_in_class_methods(ClassMethods)
123
140
  end
124
141
  end
125
142
  end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ # typed: strict
4
+
5
+ module HQ
6
+ module GraphQL
7
+ class Config < T::Struct
8
+ DefaultScopeProc = T.type_alias(T.proc.params(arg0: T.untyped, arg1: ::GraphQL::Query::Context).returns(T.untyped))
9
+ prop :default_scope, DefaultScopeProc, default: ->(scope, _context) { scope }
10
+ end
11
+ end
12
+ end
@@ -1,3 +1,6 @@
1
+ # typed: strong
2
+ # frozen_string_literal: true
3
+
1
4
  module HQ
2
5
  module GraphQL
3
6
  class Engine < ::Rails::Engine
@@ -1,6 +1,10 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
1
4
  module HQ
2
5
  module GraphQL
3
6
  class InputObject < ::GraphQL::Schema::InputObject
7
+ extend T::Sig
4
8
  include Scalars
5
9
  include ::HQ::GraphQL::ActiveRecordExtensions
6
10
 
@@ -25,12 +29,8 @@ module HQ
25
29
  end
26
30
  end
27
31
 
28
- def with_indifferent_access
29
- to_h.with_indifferent_access
30
- end
31
-
32
32
  #### Class Methods ####
33
-
33
+ sig { params(model_name: String, attributes: T::Boolean, associations: T::Boolean).void }
34
34
  def self.with_model(model_name, attributes: true, associations: false)
35
35
  self.model_name = model_name
36
36
  self.auto_load_attributes = attributes
@@ -72,7 +72,7 @@ module HQ
72
72
  argument name, input, required: false
73
73
  end
74
74
 
75
- if !model_klass.nested_attributes_options.keys.include?(name.to_sym)
75
+ if !model_klass.nested_attributes_options.key?(name.to_sym)
76
76
  model_klass.accepts_nested_attributes_for name, allow_destroy: true
77
77
  end
78
78
 
@@ -85,7 +85,6 @@ module HQ
85
85
  argument column.name, ::HQ::GraphQL::Types.type_from_column(column), required: false
86
86
  end
87
87
  end
88
-
89
88
  end
90
89
  end
91
90
  end
@@ -1,8 +1,11 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
1
4
  module HQ
2
5
  module GraphQL
3
6
  module Inputs
4
7
  class Error < StandardError
5
- MISSING_TYPE_MSG = "The GraphQL type for `%{klass}` is missing.".freeze
8
+ MISSING_TYPE_MSG = "The GraphQL type for `%{klass}` is missing."
6
9
  end
7
10
 
8
11
  def self.[](key)
@@ -26,7 +29,6 @@ module HQ
26
29
  raise(Error, Error::MISSING_TYPE_MSG % { klass: klass.name })
27
30
  end
28
31
  end
29
-
30
32
  end
31
33
  end
32
34
  end
@@ -1,3 +1,6 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
1
4
  module HQ
2
5
  module GraphQL
3
6
  class Mutation < ::GraphQL::Schema::Mutation
@@ -8,7 +11,6 @@ module HQ
8
11
  lazy_load!
9
12
  super
10
13
  end
11
-
12
14
  end
13
15
  end
14
16
  end
@@ -1,3 +1,6 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
1
4
  module HQ
2
5
  module GraphQL
3
6
  class Object < ::GraphQL::Schema::Object
@@ -42,10 +45,9 @@ module HQ
42
45
  end
43
46
 
44
47
  def field_from_column(column)
45
- field column.name, ::HQ::GraphQL::Types.type_from_column(column), null: column.null
48
+ field column.name, ::HQ::GraphQL::Types.type_from_column(column), null: true
46
49
  end
47
50
  end
48
-
49
51
  end
50
52
  end
51
53
  end
@@ -1,8 +1,10 @@
1
+ # typed: false
2
+ # frozen_string_literal: true
3
+
1
4
  module HQ
2
5
  module GraphQL
3
6
  module Resource
4
7
  module Mutation
5
-
6
8
  def self.build(model_name, graphql_name:, require_primary_key: false, &block)
7
9
  Class.new(::HQ::GraphQL::Mutation) do
8
10
  graphql_name graphql_name
@@ -29,7 +31,6 @@ module HQ
29
31
  end
30
32
  end
31
33
  end
32
-
33
34
  end
34
35
  end
35
36
  end
@@ -1,24 +1,38 @@
1
+ # typed: false
2
+ # frozen_string_literal: true
3
+
1
4
  require "hq/graphql/resource/mutation"
2
5
 
3
6
  module HQ
4
7
  module GraphQL
5
8
  module Resource
9
+ extend T::Helpers
6
10
 
7
11
  def self.included(base)
12
+ super
8
13
  ::HQ::GraphQL.types << base
9
14
  base.include Scalars
10
- base.extend ClassMethods
11
15
  end
12
16
 
13
17
  module ClassMethods
14
18
  attr_writer :graphql_name, :model_name
15
19
 
20
+ def scope(context)
21
+ scope = model_klass
22
+ scope = ::HQ::GraphQL.default_scope(scope, context)
23
+ @default_scope&.call(scope, context) || scope
24
+ end
25
+
16
26
  def find_record(attrs, context)
17
27
  primary_key = model_klass.primary_key.to_sym
18
28
  primary_key_value = attrs[primary_key]
19
29
  scope(context).find_by(primary_key => primary_key_value)
20
30
  end
21
31
 
32
+ def new_record(context)
33
+ scope(context).new
34
+ end
35
+
22
36
  def graphql_name
23
37
  @graphql_name || model_name.demodulize
24
38
  end
@@ -53,7 +67,7 @@ module HQ
53
67
  @input_klass = build_input_object(**options, &block)
54
68
  end
55
69
 
56
- def mutations(create: true, update: true, destroy: true)
70
+ def mutations(create: true, copy: true, update: true, destroy: true)
57
71
  scoped_graphql_name = graphql_name
58
72
  scoped_model_name = model_name
59
73
  scoped_self = self
@@ -61,7 +75,7 @@ module HQ
61
75
  if create
62
76
  create_mutation = ::HQ::GraphQL::Resource::Mutation.build(model_name, graphql_name: "#{scoped_graphql_name}Create") do
63
77
  define_method(:resolve) do |**args|
64
- resource = scoped_self.model_klass.new
78
+ resource = scoped_self.new_record(context)
65
79
  resource.assign_attributes(args[:attributes].format_nested_attributes)
66
80
  if resource.save
67
81
  {
@@ -84,6 +98,40 @@ module HQ
84
98
  mutation_klasses["create_#{scoped_graphql_name.underscore}"] = create_mutation
85
99
  end
86
100
 
101
+ if copy
102
+ copy_mutation = ::HQ::GraphQL::Resource::Mutation.build(
103
+ model_name,
104
+ graphql_name: "#{scoped_graphql_name}Copy",
105
+ require_primary_key: true
106
+ ) do
107
+ define_method(:resolve) do |**args|
108
+ resource = scoped_self.find_record(args, context)
109
+
110
+ if resource
111
+ copy = resource.copy
112
+ if copy.save
113
+ {
114
+ resource: copy,
115
+ errors: {},
116
+ }
117
+ else
118
+ {
119
+ resource: copy,
120
+ errors: errors_from_resource(copy)
121
+ }
122
+ end
123
+ else
124
+ {
125
+ resource: nil,
126
+ errors: { resource: "Unable to find #{scoped_graphql_name}" }
127
+ }
128
+ end
129
+ end
130
+ end
131
+
132
+ mutation_klasses["copy_#{scoped_graphql_name.underscore}"] = copy_mutation
133
+ end
134
+
87
135
  if update
88
136
  update_mutation = ::HQ::GraphQL::Resource::Mutation.build(
89
137
  model_name,
@@ -194,19 +242,13 @@ module HQ
194
242
 
195
243
  if find_all
196
244
  def_root field_name.pluralize, is_array: true, null: false do
197
- define_method(:resolve) do |**attrs|
245
+ define_method(:resolve) do |**_attrs|
198
246
  scoped_self.scope(context).all
199
247
  end
200
248
  end
201
249
  end
202
250
  end
203
251
 
204
- def scope(context)
205
- scope = model_klass
206
- scope = ::HQ::GraphQL.default_scope(scope, context)
207
- @default_scope&.call(scope, context) || scope
208
- end
209
-
210
252
  private
211
253
 
212
254
  def build_graphql_object(**options, &block)
@@ -232,8 +274,9 @@ module HQ
232
274
  class_eval(&block) if block
233
275
  end
234
276
  end
235
-
236
277
  end
278
+
279
+ mixes_in_class_methods(ClassMethods)
237
280
  end
238
281
  end
239
282
  end
@@ -1,7 +1,9 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
1
4
  module HQ
2
5
  module GraphQL
3
6
  class RootMutation < ::HQ::GraphQL::Object
4
-
5
7
  def self.inherited(base)
6
8
  super
7
9
  base.class_eval do
@@ -14,7 +16,6 @@ module HQ
14
16
  end
15
17
  end
16
18
  end
17
-
18
19
  end
19
20
  end
20
21
  end
@@ -1,7 +1,9 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
1
4
  module HQ
2
5
  module GraphQL
3
6
  class RootQuery < ::HQ::GraphQL::Object
4
-
5
7
  def self.inherited(base)
6
8
  super
7
9
  base.class_eval do
@@ -12,7 +14,6 @@ module HQ
12
14
  end
13
15
  end
14
16
  end
15
-
16
17
  end
17
18
  end
18
19
  end
@@ -1,3 +1,6 @@
1
+ # typed: strong
2
+ # frozen_string_literal: true
3
+
1
4
  require "hq/graphql/types/object"
2
5
  require "hq/graphql/types/uuid"
3
6
 
@@ -1,3 +1,6 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
1
4
  module HQ
2
5
  module GraphQL
3
6
  module Types
@@ -5,11 +8,13 @@ module HQ
5
8
  description "Object"
6
9
 
7
10
  class << self
8
- def coerce_input(value, context)
11
+ extend T::Sig
12
+
13
+ def coerce_input(value, _context)
9
14
  validate_and_return_object(value)
10
15
  end
11
16
 
12
- def coerce_result(value, context)
17
+ def coerce_result(value, _context)
13
18
  validate_and_return_object(value)
14
19
  end
15
20
 
@@ -23,10 +28,10 @@ module HQ
23
28
  end
24
29
  end
25
30
 
31
+ sig { params(value: T.untyped).returns(T::Boolean) }
26
32
  def validate_object(value)
27
33
  value.is_a?(Hash)
28
34
  end
29
-
30
35
  end
31
36
  end
32
37
  end
@@ -1,3 +1,6 @@
1
+ # typed: strict
2
+ # frozen_string_literal: true
3
+
1
4
  module HQ
2
5
  module GraphQL
3
6
  module Types
@@ -5,16 +8,21 @@ module HQ
5
8
  description "UUID"
6
9
 
7
10
  class << self
8
- def coerce_input(value, context)
11
+ extend T::Sig
12
+
13
+ sig { params(value: T.untyped, _context: T.untyped).returns(String) }
14
+ def coerce_input(value, _context)
9
15
  validate_and_return_uuid(value)
10
16
  end
11
17
 
12
- def coerce_result(value, context)
18
+ sig { params(value: T.untyped, _context: T.untyped).returns(String) }
19
+ def coerce_result(value, _context)
13
20
  validate_and_return_uuid(value)
14
21
  end
15
22
 
16
23
  private
17
24
 
25
+ sig { params(value: T.untyped).returns(String) }
18
26
  def validate_and_return_uuid(value)
19
27
  if validate_uuid(value)
20
28
  value
@@ -23,6 +31,7 @@ module HQ
23
31
  end
24
32
  end
25
33
 
34
+ sig { params(value: T.untyped).returns(T::Boolean) }
26
35
  def validate_uuid(value)
27
36
  !!value.to_s.match(/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/)
28
37
  end
@@ -1,8 +1,11 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
1
4
  module HQ
2
5
  module GraphQL
3
6
  module Types
4
7
  class Error < StandardError
5
- MISSING_TYPE_MSG = "The GraphQL type for `%{klass}` is missing.".freeze
8
+ MISSING_TYPE_MSG = "The GraphQL type for `%{klass}` is missing."
6
9
  end
7
10
 
8
11
  def self.[](key)
@@ -13,20 +16,23 @@ module HQ
13
16
  end
14
17
 
15
18
  def self.type_from_column(column)
16
- case column&.cast_type&.type
17
- when :uuid
18
- ::HQ::GraphQL::Types::UUID
19
- when :json, :jsonb
20
- ::HQ::GraphQL::Types::Object
21
- when :integer
22
- ::GraphQL::Types::Int
23
- when :decimal
24
- ::GraphQL::Types::Float
25
- when :boolean
26
- ::GraphQL::Types::Boolean
27
- else
28
- ::GraphQL::Types::String
29
- end
19
+ graphql_type =
20
+ case column.type
21
+ when :uuid
22
+ ::HQ::GraphQL::Types::UUID
23
+ when :json, :jsonb
24
+ ::HQ::GraphQL::Types::Object
25
+ when :integer
26
+ ::GraphQL::Types::Int
27
+ when :decimal
28
+ ::GraphQL::Types::Float
29
+ when :boolean
30
+ ::GraphQL::Types::Boolean
31
+ else
32
+ ::GraphQL::Types::String
33
+ end
34
+
35
+ column.array ? [graphql_type] : graphql_type
30
36
  end
31
37
 
32
38
  # Only being used in testing
@@ -44,7 +50,6 @@ module HQ
44
50
  raise(Error, Error::MISSING_TYPE_MSG % { klass: klass.name })
45
51
  end
46
52
  end
47
-
48
53
  end
49
54
  end
50
55
  end
@@ -1,5 +1,8 @@
1
+ # typed: strong
2
+ # frozen_string_literal: true
3
+
1
4
  module HQ
2
5
  module GraphQL
3
- VERSION = "1.1.2"
6
+ VERSION = "2.0.0"
4
7
  end
5
8
  end
data/lib/hq/graphql.rb CHANGED
@@ -1,20 +1,33 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ require "rails"
1
5
  require "graphql"
6
+ require "sorbet-runtime"
7
+ require "hq/graphql/config"
2
8
 
3
9
  module HQ
4
10
  module GraphQL
11
+ extend T::Sig
12
+ extend T::Generic
13
+
14
+ @config = T.let(::HQ::GraphQL::Config.new, ::HQ::GraphQL::Config)
5
15
 
16
+ sig { returns(::HQ::GraphQL::Config) }
6
17
  def self.config
7
- @config ||= ::ActiveSupport::OrderedOptions.new
18
+ @config
8
19
  end
9
20
 
10
21
  def self.configure(&block)
11
22
  config.instance_eval(&block)
12
23
  end
13
24
 
25
+ sig { params(scope: T.untyped, context: ::GraphQL::Query::Context).returns(T.untyped) }
14
26
  def self.default_scope(scope, context)
15
- config.default_scope&.call(scope, context) || scope
27
+ config.default_scope.call(scope, context)
16
28
  end
17
29
 
30
+ sig { void }
18
31
  def self.reset!
19
32
  @root_queries = nil
20
33
  @types = nil
@@ -26,10 +39,10 @@ module HQ
26
39
  @root_queries ||= Set.new
27
40
  end
28
41
 
42
+ # sig { returns(T::Set[::HQ::GraphQL::Resource]) }
29
43
  def self.types
30
44
  @types ||= Set.new
31
45
  end
32
-
33
46
  end
34
47
  end
35
48
 
data/lib/hq-graphql.rb CHANGED
@@ -1 +1,7 @@
1
+ # rubocop:disable Naming/FileName
2
+ # rubocop:enable Naming/FileName
3
+ # frozen_string_literal: true
4
+
5
+ # typed: strong
6
+
1
7
  require "hq/graphql"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hq-graphql
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.2
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Danny Jones
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-07-02 00:00:00.000000000 Z
11
+ date: 2019-09-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '4.2'
19
+ version: '6.0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '4.2'
26
+ version: '6.0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: graphql
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -45,45 +45,187 @@ dependencies:
45
45
  - !ruby/object:Gem::Version
46
46
  version: 1.9.6
47
47
  - !ruby/object:Gem::Dependency
48
- name: rspec_junit_formatter
48
+ name: pg
49
49
  requirement: !ruby/object:Gem::Requirement
50
50
  requirements:
51
51
  - - "~>"
52
52
  - !ruby/object:Gem::Version
53
- version: '0.3'
53
+ version: '1.1'
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: '1.1'
61
+ - !ruby/object:Gem::Dependency
62
+ name: sorbet-runtime
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
68
+ type: :runtime
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
54
72
  - - ">="
55
73
  - !ruby/object:Gem::Version
56
- version: 0.3.0
74
+ version: '0'
75
+ - !ruby/object:Gem::Dependency
76
+ name: byebug
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: '11.0'
57
82
  type: :development
58
83
  prerelease: false
59
84
  version_requirements: !ruby/object:Gem::Requirement
60
85
  requirements:
61
86
  - - "~>"
62
87
  - !ruby/object:Gem::Version
63
- version: '0.3'
64
- - - ">="
88
+ version: '11.0'
89
+ - !ruby/object:Gem::Dependency
90
+ name: combustion
91
+ requirement: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - "~>"
65
94
  - !ruby/object:Gem::Version
66
- version: 0.3.0
95
+ version: '1.1'
96
+ type: :development
97
+ prerelease: false
98
+ version_requirements: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - "~>"
101
+ - !ruby/object:Gem::Version
102
+ version: '1.1'
67
103
  - !ruby/object:Gem::Dependency
68
- name: testhq
104
+ name: database_cleaner
69
105
  requirement: !ruby/object:Gem::Requirement
70
106
  requirements:
71
107
  - - "~>"
72
108
  - !ruby/object:Gem::Version
73
- version: '1.0'
109
+ version: '1.7'
110
+ type: :development
111
+ prerelease: false
112
+ version_requirements: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - "~>"
115
+ - !ruby/object:Gem::Version
116
+ version: '1.7'
117
+ - !ruby/object:Gem::Dependency
118
+ name: factory_bot_rails
119
+ requirement: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - "~>"
122
+ - !ruby/object:Gem::Version
123
+ version: '5.0'
124
+ type: :development
125
+ prerelease: false
126
+ version_requirements: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - "~>"
129
+ - !ruby/object:Gem::Version
130
+ version: '5.0'
131
+ - !ruby/object:Gem::Dependency
132
+ name: faker
133
+ requirement: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - "~>"
136
+ - !ruby/object:Gem::Version
137
+ version: '2.1'
138
+ type: :development
139
+ prerelease: false
140
+ version_requirements: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - "~>"
143
+ - !ruby/object:Gem::Version
144
+ version: '2.1'
145
+ - !ruby/object:Gem::Dependency
146
+ name: rspec
147
+ requirement: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - "~>"
150
+ - !ruby/object:Gem::Version
151
+ version: '3.8'
152
+ type: :development
153
+ prerelease: false
154
+ version_requirements: !ruby/object:Gem::Requirement
155
+ requirements:
156
+ - - "~>"
157
+ - !ruby/object:Gem::Version
158
+ version: '3.8'
159
+ - !ruby/object:Gem::Dependency
160
+ name: rspec-rails
161
+ requirement: !ruby/object:Gem::Requirement
162
+ requirements:
74
163
  - - ">="
75
164
  - !ruby/object:Gem::Version
76
- version: 1.0.0
165
+ version: 4.0.0beta2
77
166
  type: :development
78
167
  prerelease: false
79
168
  version_requirements: !ruby/object:Gem::Requirement
169
+ requirements:
170
+ - - ">="
171
+ - !ruby/object:Gem::Version
172
+ version: 4.0.0beta2
173
+ - !ruby/object:Gem::Dependency
174
+ name: rubocop
175
+ requirement: !ruby/object:Gem::Requirement
80
176
  requirements:
81
177
  - - "~>"
82
178
  - !ruby/object:Gem::Version
83
- version: '1.0'
179
+ version: '0.7'
180
+ type: :development
181
+ prerelease: false
182
+ version_requirements: !ruby/object:Gem::Requirement
183
+ requirements:
184
+ - - "~>"
185
+ - !ruby/object:Gem::Version
186
+ version: '0.7'
187
+ - !ruby/object:Gem::Dependency
188
+ name: rubocop-performance
189
+ requirement: !ruby/object:Gem::Requirement
190
+ requirements:
191
+ - - "~>"
192
+ - !ruby/object:Gem::Version
193
+ version: '1.4'
194
+ type: :development
195
+ prerelease: false
196
+ version_requirements: !ruby/object:Gem::Requirement
197
+ requirements:
198
+ - - "~>"
199
+ - !ruby/object:Gem::Version
200
+ version: '1.4'
201
+ - !ruby/object:Gem::Dependency
202
+ name: rubocop-rails
203
+ requirement: !ruby/object:Gem::Requirement
204
+ requirements:
205
+ - - "~>"
206
+ - !ruby/object:Gem::Version
207
+ version: '2.3'
208
+ type: :development
209
+ prerelease: false
210
+ version_requirements: !ruby/object:Gem::Requirement
211
+ requirements:
212
+ - - "~>"
213
+ - !ruby/object:Gem::Version
214
+ version: '2.3'
215
+ - !ruby/object:Gem::Dependency
216
+ name: sorbet
217
+ requirement: !ruby/object:Gem::Requirement
218
+ requirements:
219
+ - - ">="
220
+ - !ruby/object:Gem::Version
221
+ version: '0'
222
+ type: :development
223
+ prerelease: false
224
+ version_requirements: !ruby/object:Gem::Requirement
225
+ requirements:
84
226
  - - ">="
85
227
  - !ruby/object:Gem::Version
86
- version: 1.0.0
228
+ version: '0'
87
229
  description: OneHQ GraphQL Library
88
230
  email:
89
231
  - dpjones09@gmail.com
@@ -97,6 +239,7 @@ files:
97
239
  - lib/hq-graphql.rb
98
240
  - lib/hq/graphql.rb
99
241
  - lib/hq/graphql/active_record_extensions.rb
242
+ - lib/hq/graphql/config.rb
100
243
  - lib/hq/graphql/engine.rb
101
244
  - lib/hq/graphql/input_object.rb
102
245
  - lib/hq/graphql/inputs.rb
@@ -130,8 +273,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
130
273
  - !ruby/object:Gem::Version
131
274
  version: '0'
132
275
  requirements: []
133
- rubyforge_project:
134
- rubygems_version: 2.7.6
276
+ rubygems_version: 3.0.3
135
277
  signing_key:
136
278
  specification_version: 4
137
279
  summary: OneHQ GraphQL Library