graphql-hive 0.3.0 → 0.3.2

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: 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`"'