graphql-hive 0.3.1 → 0.3.3

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: ddb07c0967f9d855e35fe6fc0e4de8d150296a696bddfa04b03a51871d22ec5d
4
- data.tar.gz: 3a061660f99486014a748b457a1a573b62b87f7126dd2ee11eb2ed0a51d73153
3
+ metadata.gz: 2a06a58701ba3765dfebe9dfa1a38a3dcfd033074007d7eed9a9f874101dab85
4
+ data.tar.gz: 0a8bbfae27e91256dec594148f0d78f620669cb278268a97f3e79fd38eaa20b0
5
5
  SHA512:
6
- metadata.gz: da040838d105fef9cf821681045aa247733ddc6d53da991fb8fb9d64950a713846cee35e645ef6b8db70f40b955b05d2446367ed5625b152ef66c59917d9b0ea
7
- data.tar.gz: bf78194e3f7bd1cb405794060e693e80f0fa1cd111c1d776b45f19f2c2a288b0d266fe40d61e8fba66afe37209c7ec45e42882b221f7b5cf6e6ba87738a854b0
6
+ metadata.gz: e9ebbabe3b6321cde6e1f2aee46a4f8d240eec1acc3a9622b11921bb44b09b8e16473e65a5d3146fcc9c397289ef4563b261bbaa8ac3d39749d8c11752cc6db1
7
+ data.tar.gz: 96c8e202377d6e7ddfef13ee956482df5b61a285d188a10ed25e0752a285721cc09c1182c1317724e396e96d7143c9049417e9a08a695e754c0098685626edd9
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- graphql-hive (0.3.1)
4
+ graphql-hive (0.3.3)
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.21)
13
13
  parallel (1.22.1)
14
14
  parser (3.1.2.0)
15
15
  ast (~> 2.4.1)
data/RELEASING.md CHANGED
@@ -7,4 +7,4 @@
7
7
  1. Build the gem: `gem build graphql-hive`
8
8
  1. A new file should have been created, ex: `graphql-hive-0.3.0.gem`
9
9
  1. Then, login to RubyGems: `gem login`
10
- 1. And publish the new version: `gem publish <path_to_gem_file>` (ex: `gem publish graphql-hive-0.3.0.gem`)
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.1)
4
+ graphql-hive (0.3.3)
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
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Graphql
4
4
  module Hive
5
- VERSION = '0.3.1'
5
+ VERSION = '0.3.3'
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.1
4
+ version: 0.3.3
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-02-14 00:00:00.000000000 Z
11
+ date: 2023-04-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: graphql