graphql-hive 0.3.0 → 0.3.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: be9427b081e7a486adf0537b3afa6e073c6c31eba88acae351589d0e1f708c87
4
- data.tar.gz: de06ee85feb0ddd539a248534fdfe642aab8a8bb693f0cb66f0519f53ab95e11
3
+ metadata.gz: 4b97fdc04366ea30fe83277eb7f473dafba08f252166dcbe7496ba099a9d4850
4
+ data.tar.gz: 9b3e6984f2a218c006544d63d20740c871768fa3090d87176e652b51d5f83915
5
5
  SHA512:
6
- metadata.gz: eae35b3398dfbf84327efcca83c3ccc206e50698b64646359b6134143b516f2c50a51504cd6a8165ced58487b526d7c019aa95235cb2ba6132146e61e75694af
7
- data.tar.gz: 96377bff1cf7c9f7e4e69847f68dc8143bc68702cfedfc6359f0147c16e534e660dcb871f3464a361ec082910a75db2b7ae8410cd6926a6df387ba0143c05cb4
6
+ metadata.gz: f7fb2302e00132205d34370a41f055101ca5ec2fd55e41839be30b0c235b6c5739e962f98b52b93a5cef74f4535984e09e5d5a62f656cefe5d493e485817ecfb
7
+ data.tar.gz: 4d5600006f3ccd97b9b1a19f791eecf501fcaf1a356adebb92c455f9a713657df5f5a28ebe28d8b06c1a9dd9d3ffc1658ffb99be07eb313d4cf38f939663270a
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- graphql-hive (0.3.0)
4
+ graphql-hive (0.3.2)
5
5
  graphql (~> 2.0.9)
6
6
 
7
7
  GEM
@@ -9,7 +9,7 @@ GEM
9
9
  specs:
10
10
  ast (2.4.2)
11
11
  diff-lcs (1.5.0)
12
- graphql (2.0.16)
12
+ graphql (2.0.17)
13
13
  parallel (1.22.1)
14
14
  parser (3.1.2.0)
15
15
  ast (~> 2.4.1)
data/RELEASING.md ADDED
@@ -0,0 +1,10 @@
1
+ ## Releasing `graphql-hive` on RubyGems
2
+
3
+
4
+ 1. Ensure dependencies are properly installed: `bundle`
5
+ 1. Ensure the is working as expected: `bundle exec rspec`
6
+ 1. **Make sure to manually bump the version in `lib/graphql-hive/version.rb`**
7
+ 1. Build the gem: `gem build graphql-hive`
8
+ 1. A new file should have been created, ex: `graphql-hive-0.3.0.gem`
9
+ 1. Then, login to RubyGems: `gem login`
10
+ 1. And publish the new version: `gem push <path_to_gem_file>` (ex: `gem push graphql-hive-0.3.0.gem`)
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ../..
3
3
  specs:
4
- graphql-hive (0.3.0)
4
+ graphql-hive (0.3.2)
5
5
  graphql (~> 2.0.9)
6
6
 
7
7
  GEM
@@ -9,23 +9,26 @@ module GraphQL
9
9
  @used_fields = Set.new
10
10
  end
11
11
 
12
- def on_leave_field(node, _parent, visitor)
12
+ def on_enter_field(node, _parent, visitor)
13
13
  @used_fields.add(visitor.parent_type_definition.graphql_name)
14
- @used_fields.add([visitor.parent_type_definition.graphql_name, node.name].join('.'))
14
+ @used_fields.add(make_id(visitor.parent_type_definition.graphql_name, node.name))
15
15
  end
16
16
 
17
- def on_leave_argument(node, parent, visitor)
18
- @used_fields.add([visitor.parent_type_definition.graphql_name, parent.name, node.name].join('.'))
19
-
17
+ # Visitor also calls 'on_enter_argument' when visiting input object fields in arguments
18
+ def on_enter_argument(node, parent, visitor)
20
19
  arg_type = visitor.argument_definition.type.unwrap
21
- arg_type_kind = visitor.argument_definition.type.unwrap.kind
22
- if arg_type_kind.input_object?
23
- @used_fields.add(arg_type.graphql_name)
24
- arg_type.arguments.each do |arg|
25
- @used_fields.add([arg_type.graphql_name, arg[0]].join('.'))
26
- end
27
- elsif arg_type_kind.enum?
28
- @used_fields.add([arg_type.graphql_name, node.value.name].join('.'))
20
+ @used_fields.add(arg_type.graphql_name)
21
+
22
+ # collect field argument path
23
+ # input object fields won't have a "parent.name" method available
24
+ if parent.respond_to?(:name)
25
+ @used_fields.add(make_id(visitor.parent_type_definition.graphql_name, parent.name, node.name))
26
+ end
27
+
28
+ if arg_type.kind.input_object?
29
+ collect_input_object_fields(node, arg_type)
30
+ elsif arg_type.kind.enum?
31
+ collect_enum_values(node, arg_type)
29
32
  end
30
33
  end
31
34
 
@@ -34,6 +37,44 @@ module GraphQL
34
37
  def result
35
38
  @used_fields
36
39
  end
40
+
41
+ private
42
+
43
+ def collect_input_object_fields(node, input_type)
44
+ case node.value
45
+ when GraphQL::Language::Nodes::VariableIdentifier
46
+ input_type.all_argument_definitions.map(&:graphql_name).each do |n|
47
+ @used_fields.add(make_id(input_type.graphql_name, n))
48
+ end
49
+ when Array
50
+ node.value.flat_map(&:arguments).map(&:name).each do |n|
51
+ @used_fields.add(make_id(input_type.graphql_name, n))
52
+ end
53
+ else
54
+ node.value.arguments.map(&:name).each do |n|
55
+ @used_fields.add(make_id(input_type.graphql_name, n))
56
+ end
57
+ end
58
+ end
59
+
60
+ def collect_enum_values(node, enum_type)
61
+ case node.value
62
+ when GraphQL::Language::Nodes::VariableIdentifier
63
+ enum_type.values.values.map(&:graphql_name).each do |n|
64
+ @used_fields.add(make_id(enum_type.graphql_name, n))
65
+ end
66
+ when Array
67
+ node.value.map(&:name).each do |n|
68
+ @used_fields.add(make_id(enum_type.graphql_name, n))
69
+ end
70
+ else
71
+ @used_fields.add(make_id(enum_type.graphql_name, node.value.name))
72
+ end
73
+ end
74
+
75
+ def make_id(*tokens)
76
+ tokens.join('.')
77
+ end
37
78
  end
38
79
  end
39
80
  end
@@ -33,7 +33,13 @@ module GraphQL
33
33
  end
34
34
 
35
35
  def print_selections(selections, indent: '')
36
- super(selections.sort_by(&:name), indent: indent)
36
+ sorted_nodes = selections.sort_by do |s|
37
+ next s.name if s.respond_to?(:name)
38
+ next s.type.name if s.respond_to?(:type)
39
+
40
+ raise "don't know how to sort selection node: #{s.inspect}"
41
+ end
42
+ super(sorted_nodes, indent: indent)
37
43
  end
38
44
 
39
45
  def print_directive(directive)
@@ -69,6 +69,13 @@ module GraphQL
69
69
  @options[:logger].debug('shuting down with buffer, sending!')
70
70
  process_operations(buffer)
71
71
  end
72
+ rescue StandardError => e
73
+ # ensure configured logger receives exception as well in setups where STDERR might not be
74
+ # monitored.
75
+ @options[:logger].error('GraphQL Hive usage collection thread terminating')
76
+ @options[:logger].error(e)
77
+
78
+ raise e
72
79
  end
73
80
  end
74
81
 
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Graphql
4
4
  module Hive
5
- VERSION = '0.3.0'
5
+ VERSION = '0.3.2'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: graphql-hive
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Charly POLY
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-01-13 00:00:00.000000000 Z
11
+ date: 2023-02-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: graphql
@@ -97,6 +97,7 @@ files:
97
97
  - Gemfile.lock
98
98
  - LICENSE
99
99
  - README.md
100
+ - RELEASING.md
100
101
  - Rakefile
101
102
  - cover.png
102
103
  - examples/simple-api/Gemfile
@@ -141,7 +142,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
141
142
  - !ruby/object:Gem::Version
142
143
  version: '0'
143
144
  requirements: []
144
- rubygems_version: 3.0.6
145
+ rubygems_version: 3.3.7
145
146
  signing_key:
146
147
  specification_version: 4
147
148
  summary: '"GraphQL Hive integration for `graphql-ruby`"'