graphql-relay-walker 0.2.0 → 0.3.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 +4 -4
- data/graphql-relay-walker.gemspec +3 -3
- data/lib/graphql/relay/walker/query_builder.rb +14 -10
- metadata +8 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d351dcfe5896d75e7086bab93406475e6af14d9f5901330a03dfaae0c1f225a0
|
4
|
+
data.tar.gz: a4f68b19ecb09f2e07168f7b3ad2f58fd71600acf169054249026a18c42f068d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b42954a51f5607972833980833fc45d7a5e4eb512b91c91aba116fa53af3cd9eed7a89b179d2a42ac01642ad17a20cc368b107c854359ae6da97a0fcc82cab4a
|
7
|
+
data.tar.gz: 0e1c06e2284e48fa72f7f3452c133e450cbdd6aebb020cdd05c5afffeb26d48f40f77808bd92b60340d2f863d440edb0b9c653100e320ec1c9331e75edbf5fae
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = 'graphql-relay-walker'
|
3
|
-
s.version = '0.
|
3
|
+
s.version = '0.3.0'
|
4
4
|
s.licenses = ['MIT']
|
5
5
|
s.summary = 'A tool for traversing your GraphQL schema to proactively detect potential data access vulnerabilities.'
|
6
6
|
s.authors = ['Ben Toews']
|
@@ -9,9 +9,9 @@ Gem::Specification.new do |s|
|
|
9
9
|
s.files += Dir.glob('lib/**/*.rb')
|
10
10
|
s.homepage = 'https://github.com/github/graphql-relay-walker'
|
11
11
|
|
12
|
-
s.add_dependency 'graphql', '
|
12
|
+
s.add_dependency 'graphql', '~> 1.8'
|
13
13
|
|
14
|
-
s.add_development_dependency 'graphql-client', '~> 0.
|
14
|
+
s.add_development_dependency 'graphql-client', '~> 0.15'
|
15
15
|
s.add_development_dependency 'rake', '~> 11.3'
|
16
16
|
s.add_development_dependency 'rspec', '~> 3.5'
|
17
17
|
end
|
@@ -70,7 +70,10 @@ module GraphQL::Relay::Walker
|
|
70
70
|
def inline_fragment_ast(type, with_children: true)
|
71
71
|
selections = []
|
72
72
|
if with_children
|
73
|
-
|
73
|
+
# Class-based types return all fields in `.fields`
|
74
|
+
all_fields = type.respond_to?(:all_fields) ? type.all_fields : type.fields.values
|
75
|
+
all_fields = all_fields.sort_by(&:graphql_name)
|
76
|
+
all_fields.each do |field|
|
74
77
|
field_type = field.type.unwrap
|
75
78
|
if node_field?(field) && include?(field_type)
|
76
79
|
selections << node_field_ast(field)
|
@@ -88,7 +91,7 @@ module GraphQL::Relay::Walker
|
|
88
91
|
nil
|
89
92
|
else
|
90
93
|
GraphQL::Language::Nodes::InlineFragment.new(
|
91
|
-
type: make_type_name_node(type.
|
94
|
+
type: make_type_name_node(type.graphql_name),
|
92
95
|
selections: selections,
|
93
96
|
)
|
94
97
|
end
|
@@ -114,12 +117,12 @@ module GraphQL::Relay::Walker
|
|
114
117
|
if !required_args_are_present
|
115
118
|
nil
|
116
119
|
else
|
117
|
-
f_alias = field.
|
120
|
+
f_alias = field.graphql_name == 'id' ? nil : random_alias
|
118
121
|
f_args = arguments.map do |name, value|
|
119
122
|
GraphQL::Language::Nodes::Argument.new(name: name, value: value)
|
120
123
|
end
|
121
124
|
|
122
|
-
GraphQL::Language::Nodes::Field.new(name: field.
|
125
|
+
GraphQL::Language::Nodes::Field.new(name: field.graphql_name, alias: f_alias, arguments: f_args)
|
123
126
|
end
|
124
127
|
end
|
125
128
|
|
@@ -213,11 +216,12 @@ module GraphQL::Relay::Walker
|
|
213
216
|
# `node` field that is a relay node. Returns false otherwise.
|
214
217
|
def connection_field?(field)
|
215
218
|
type = field.type.unwrap
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
219
|
+
if type.kind.fields?
|
220
|
+
if edges_field = type.get_field('edges')
|
221
|
+
edges = edges_field.type.unwrap
|
222
|
+
if node_field = edges.get_field('node')
|
223
|
+
return node_field?(node_field)
|
224
|
+
end
|
221
225
|
end
|
222
226
|
end
|
223
227
|
|
@@ -268,7 +272,7 @@ module GraphQL::Relay::Walker
|
|
268
272
|
end
|
269
273
|
|
270
274
|
def valid_input?(type, input)
|
271
|
-
type.
|
275
|
+
type.valid_input?(input, GraphQL::Query::NullContext)
|
272
276
|
end
|
273
277
|
|
274
278
|
def make_type_name_node(type_name)
|
metadata
CHANGED
@@ -1,43 +1,43 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: graphql-relay-walker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ben Toews
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-10-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: graphql
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 1.
|
19
|
+
version: '1.8'
|
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: 1.
|
26
|
+
version: '1.8'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: graphql-client
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '0.
|
33
|
+
version: '0.15'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '0.
|
40
|
+
version: '0.15'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rake
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|