graphql-relay-walker 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|