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 +4 -4
- data/Gemfile.lock +2 -2
- data/RELEASING.md +10 -0
- data/k6/graphql-api/Gemfile.lock +1 -1
- data/lib/graphql-hive/analyzer.rb +54 -13
- data/lib/graphql-hive/printer.rb +7 -1
- data/lib/graphql-hive/usage_reporter.rb +7 -0
- data/lib/graphql-hive/version.rb +1 -1
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4b97fdc04366ea30fe83277eb7f473dafba08f252166dcbe7496ba099a9d4850
|
4
|
+
data.tar.gz: 9b3e6984f2a218c006544d63d20740c871768fa3090d87176e652b51d5f83915
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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.
|
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.
|
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`)
|
data/k6/graphql-api/Gemfile.lock
CHANGED
@@ -9,23 +9,26 @@ module GraphQL
|
|
9
9
|
@used_fields = Set.new
|
10
10
|
end
|
11
11
|
|
12
|
-
def
|
12
|
+
def on_enter_field(node, _parent, visitor)
|
13
13
|
@used_fields.add(visitor.parent_type_definition.graphql_name)
|
14
|
-
@used_fields.add(
|
14
|
+
@used_fields.add(make_id(visitor.parent_type_definition.graphql_name, node.name))
|
15
15
|
end
|
16
16
|
|
17
|
-
|
18
|
-
|
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
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
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
|
data/lib/graphql-hive/printer.rb
CHANGED
@@ -33,7 +33,13 @@ module GraphQL
|
|
33
33
|
end
|
34
34
|
|
35
35
|
def print_selections(selections, indent: '')
|
36
|
-
|
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
|
|
data/lib/graphql-hive/version.rb
CHANGED
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.
|
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-
|
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.
|
145
|
+
rubygems_version: 3.3.7
|
145
146
|
signing_key:
|
146
147
|
specification_version: 4
|
147
148
|
summary: '"GraphQL Hive integration for `graphql-ruby`"'
|