graphql 0.0.3 → 0.0.4
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/lib/graphql.rb +46 -29
- data/lib/graphql/call.rb +1 -1
- data/lib/graphql/connection.rb +12 -35
- data/lib/graphql/field.rb +7 -177
- data/lib/graphql/field_definer.rb +5 -15
- data/lib/graphql/introspection/{call_node.rb → call_type.rb} +1 -1
- data/lib/graphql/introspection/field_type.rb +10 -0
- data/lib/graphql/introspection/{root_call_node.rb → root_call_type.rb} +6 -2
- data/lib/graphql/introspection/schema_type.rb +17 -0
- data/lib/graphql/introspection/{type_node.rb → type_type.rb} +4 -2
- data/lib/graphql/node.rb +118 -42
- data/lib/graphql/{parser.rb → parser/parser.rb} +9 -4
- data/lib/graphql/{transform.rb → parser/transform.rb} +4 -2
- data/lib/graphql/query.rb +33 -10
- data/lib/graphql/root_call.rb +26 -13
- data/lib/graphql/root_call_argument.rb +3 -1
- data/lib/graphql/root_call_argument_definer.rb +3 -7
- data/lib/graphql/schema/all.rb +46 -0
- data/lib/graphql/{schema.rb → schema/schema.rb} +27 -39
- data/lib/graphql/schema/schema_validation.rb +32 -0
- data/lib/graphql/syntax/fragment.rb +7 -0
- data/lib/graphql/syntax/query.rb +3 -2
- data/lib/graphql/types/boolean_type.rb +3 -0
- data/lib/graphql/types/number_type.rb +3 -0
- data/lib/graphql/types/object_type.rb +6 -0
- data/lib/graphql/types/string_type.rb +3 -0
- data/lib/graphql/version.rb +1 -1
- data/readme.md +46 -5
- data/spec/graphql/node_spec.rb +6 -5
- data/spec/graphql/{parser_spec.rb → parser/parser_spec.rb} +31 -2
- data/spec/graphql/{transform_spec.rb → parser/transform_spec.rb} +16 -2
- data/spec/graphql/query_spec.rb +27 -9
- data/spec/graphql/root_call_spec.rb +15 -1
- data/spec/graphql/{schema_spec.rb → schema/schema_spec.rb} +15 -50
- data/spec/graphql/schema/schema_validation_spec.rb +48 -0
- data/spec/support/nodes.rb +31 -28
- metadata +47 -47
- data/lib/graphql/introspection/field_node.rb +0 -19
- data/lib/graphql/introspection/schema_node.rb +0 -17
- data/lib/graphql/types/boolean_field.rb +0 -3
- data/lib/graphql/types/connection_field.rb +0 -30
- data/lib/graphql/types/cursor_field.rb +0 -9
- data/lib/graphql/types/number_field.rb +0 -3
- data/lib/graphql/types/object_field.rb +0 -8
- data/lib/graphql/types/string_field.rb +0 -3
- data/lib/graphql/types/type_field.rb +0 -6
- data/spec/graphql/field_spec.rb +0 -63
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe GraphQL::Transform do
|
3
|
+
describe GraphQL::Parser::Transform do
|
4
4
|
let(:transform) { GraphQL::TRANSFORM }
|
5
5
|
let(:parser) { GraphQL::PARSER }
|
6
6
|
|
@@ -8,7 +8,7 @@ describe GraphQL::Transform do
|
|
8
8
|
describe 'query' do
|
9
9
|
it 'parses node and variables' do
|
10
10
|
tree = parser.query.parse(%{
|
11
|
-
like_page(<page_info>) { page {
|
11
|
+
like_page(<page_info>) { page { $fragment, likes } }
|
12
12
|
|
13
13
|
<page_info>: {
|
14
14
|
"page" : { "id": 4},
|
@@ -18,12 +18,17 @@ describe GraphQL::Transform do
|
|
18
18
|
"page" : { "id": 4},
|
19
19
|
"person" : {"id": 4}
|
20
20
|
}
|
21
|
+
|
22
|
+
$fragment: {
|
23
|
+
id, name
|
24
|
+
}
|
21
25
|
})
|
22
26
|
res = transform.apply(tree)
|
23
27
|
assert_equal 1, res.nodes.length
|
24
28
|
assert_equal "like_page", res.nodes[0].identifier
|
25
29
|
assert_equal ["<page_info>"], res.nodes[0].arguments
|
26
30
|
assert_equal ["<page_info>", "<other>"], res.variables.map(&:identifier)
|
31
|
+
assert_equal ["$fragment"], res.fragments.map(&:identifier)
|
27
32
|
end
|
28
33
|
end
|
29
34
|
|
@@ -139,5 +144,14 @@ describe GraphQL::Transform do
|
|
139
144
|
assert_equal "<page_info>", res.identifier
|
140
145
|
end
|
141
146
|
end
|
147
|
+
|
148
|
+
describe 'fragments' do
|
149
|
+
it 'gets fragments' do
|
150
|
+
tree = parser.fragment.parse(%{$frag: { id, name, $otherFrag }})
|
151
|
+
res = transform.apply(tree)
|
152
|
+
assert_equal "$frag", res.identifier
|
153
|
+
assert_equal ["id", "name", "$otherFrag"], res.fields.map(&:identifier)
|
154
|
+
end
|
155
|
+
end
|
142
156
|
end
|
143
157
|
end
|
data/spec/graphql/query_spec.rb
CHANGED
@@ -48,6 +48,21 @@ describe GraphQL::Query do
|
|
48
48
|
end
|
49
49
|
end
|
50
50
|
end
|
51
|
+
|
52
|
+
describe 'when using query fragments' do
|
53
|
+
let(:query_string) { "post(123) { id, $publishedData } $publishedData: { published_at { month, year } }"}
|
54
|
+
|
55
|
+
it 'can yield the fragment' do
|
56
|
+
fragment = query.fragments["$publishedData"]
|
57
|
+
assert_equal "$publishedData", fragment.identifier
|
58
|
+
assert_equal 1, fragment.fields.length
|
59
|
+
end
|
60
|
+
|
61
|
+
it 'returns literal fields and fragment fields' do
|
62
|
+
assert_equal(123, result["123"]['id'])
|
63
|
+
assert_equal({"month" => 1, "year" => 2010}, result["123"]["published_at"])
|
64
|
+
end
|
65
|
+
end
|
51
66
|
describe 'when aliasing things' do
|
52
67
|
let(:query_string) { "post(123) { title as headline, content as what_it_says }"}
|
53
68
|
|
@@ -68,6 +83,7 @@ describe GraphQL::Query do
|
|
68
83
|
|
69
84
|
describe 'when accessing custom fields' do
|
70
85
|
let(:query_string) { "comment(444) { letters }"}
|
86
|
+
|
71
87
|
it 'uses the custom field' do
|
72
88
|
assert_equal "I agree", result["444"]["letters"]
|
73
89
|
end
|
@@ -108,8 +124,9 @@ describe GraphQL::Query do
|
|
108
124
|
end
|
109
125
|
|
110
126
|
describe 'when the root call doesnt have an argument' do
|
111
|
-
let(:query_string) { "context() { person_name }"}
|
127
|
+
let(:query_string) { "context() { person_name, present }"}
|
112
128
|
it 'calls the node with no arguments' do
|
129
|
+
assert_equal true, result["context"]["present"]
|
113
130
|
assert_equal "Han Solo", result["context"]["person_name"]
|
114
131
|
end
|
115
132
|
end
|
@@ -138,13 +155,13 @@ describe GraphQL::Query do
|
|
138
155
|
let(:query_string) { "post(123) { comments.first(1) { edges { cursor, node { content } } } }"}
|
139
156
|
|
140
157
|
it 'executes those calls' do
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
158
|
+
expected_result = { "123" => {
|
159
|
+
"comments" => {
|
160
|
+
"edges" => [
|
161
|
+
{ "cursor" => "444", "node" => { "content" => "I agree"} }
|
162
|
+
]
|
163
|
+
}}}
|
164
|
+
assert_equal(expected_result, result)
|
148
165
|
end
|
149
166
|
end
|
150
167
|
|
@@ -194,6 +211,7 @@ describe GraphQL::Query do
|
|
194
211
|
|
195
212
|
describe 'when requesting fields on a related object' do
|
196
213
|
let(:query_string) { "comment(444) { post { title } }"}
|
214
|
+
|
197
215
|
it 'finds fields on that object' do
|
198
216
|
assert_equal "My great post", result["444"]["post"]["title"]
|
199
217
|
end
|
@@ -204,7 +222,7 @@ describe GraphQL::Query do
|
|
204
222
|
end
|
205
223
|
|
206
224
|
it 'blows_up' do # what _should_ this do?
|
207
|
-
assert_raises(
|
225
|
+
assert_raises(NoMethodError) { result }
|
208
226
|
end
|
209
227
|
end
|
210
228
|
end
|
@@ -48,8 +48,22 @@ describe GraphQL::RootCall do
|
|
48
48
|
end
|
49
49
|
end
|
50
50
|
|
51
|
+
describe '.argument' do
|
52
|
+
it 'is reload-safe' do
|
53
|
+
assert_equal 2, Nodes::LikePostCall.arguments.length, "it starts with 1"
|
54
|
+
assert_equal "person_id", Nodes::LikePostCall.argument_at_index(1).name
|
55
|
+
assert_raises(RuntimeError, 'it raises before') { Nodes::LikePostCall.argument_at_index(2) }
|
56
|
+
|
57
|
+
Nodes::LikePostCall.argument.number("person_id")
|
58
|
+
|
59
|
+
assert_equal 2, Nodes::LikePostCall.arguments.length, "it stays at 1"
|
60
|
+
assert_equal "person_id", Nodes::LikePostCall.argument_at_index(1).name
|
61
|
+
assert_raises(RuntimeError, 'it raises after') { Nodes::LikePostCall.argument_at_index(2) }
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
51
65
|
describe '#__type__' do
|
52
|
-
it 'describes the
|
66
|
+
it 'describes the arguments'
|
53
67
|
it 'describes the response'
|
54
68
|
end
|
55
69
|
end
|
@@ -1,10 +1,10 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe GraphQL::Schema do
|
3
|
+
describe GraphQL::Schema::Schema do
|
4
4
|
let(:schema) { GraphQL::SCHEMA }
|
5
5
|
describe 'global instance' do
|
6
6
|
it 'exists as GraphQL::SCHEMA' do
|
7
|
-
assert GraphQL::SCHEMA.is_a?(GraphQL::Schema)
|
7
|
+
assert GraphQL::SCHEMA.is_a?(GraphQL::Schema::Schema)
|
8
8
|
end
|
9
9
|
end
|
10
10
|
|
@@ -29,52 +29,9 @@ describe GraphQL::Schema do
|
|
29
29
|
end
|
30
30
|
|
31
31
|
describe 'querying schema' do
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
edges {
|
36
|
-
node {
|
37
|
-
name,
|
38
|
-
returns,
|
39
|
-
arguments {
|
40
|
-
edges {
|
41
|
-
node {
|
42
|
-
name, type
|
43
|
-
}
|
44
|
-
}
|
45
|
-
}
|
46
|
-
}
|
47
|
-
}
|
48
|
-
},
|
49
|
-
types {
|
50
|
-
count,
|
51
|
-
edges {
|
52
|
-
node {
|
53
|
-
name,
|
54
|
-
fields {
|
55
|
-
count,
|
56
|
-
edges {
|
57
|
-
node {
|
58
|
-
name,
|
59
|
-
type,
|
60
|
-
calls {
|
61
|
-
count,
|
62
|
-
edges {
|
63
|
-
node {
|
64
|
-
name,
|
65
|
-
arguments
|
66
|
-
}
|
67
|
-
}
|
68
|
-
}
|
69
|
-
}
|
70
|
-
}
|
71
|
-
}
|
72
|
-
}
|
73
|
-
}
|
74
|
-
}
|
75
|
-
}"}
|
76
|
-
let(:query) { GraphQL::Query.new(query_string) }
|
77
|
-
let(:result) { query.as_result }
|
32
|
+
let(:query_string) { }
|
33
|
+
let(:query) { GraphQL::Query.new(query_string) }
|
34
|
+
let(:result) { GraphQL::SCHEMA.all }
|
78
35
|
|
79
36
|
describe 'querying calls' do
|
80
37
|
let(:upvote_post_call) { result["schema"]["calls"]["edges"].find {|e| e["node"]["name"] == "upvote_post"} }
|
@@ -102,9 +59,12 @@ describe GraphQL::Schema do
|
|
102
59
|
let(:post_type) { result["schema"]["types"]["edges"].find { |e| e["node"]["name"] == "post" }["node"]}
|
103
60
|
let(:content_field) { post_type["fields"]["edges"].find { |e| e["node"]["name"] == "content" }["node"]}
|
104
61
|
let(:select_call) { content_field["calls"]["edges"].find { |e| e["node"]["name"] == "select"}["node"]}
|
62
|
+
let(:type_names) { result["schema"]["types"]["edges"].map {|t| t["node"]["name"] }}
|
105
63
|
|
106
64
|
it 'returns all types' do
|
107
|
-
|
65
|
+
types_count = 19
|
66
|
+
assert_equal types_count, result["schema"]["types"]["count"]
|
67
|
+
assert_equal types_count, type_names.length
|
108
68
|
end
|
109
69
|
|
110
70
|
it 'doesnt return types that dont expose anything' do
|
@@ -117,8 +77,13 @@ describe GraphQL::Schema do
|
|
117
77
|
assert_equal 8, post_type["fields"]["count"]
|
118
78
|
end
|
119
79
|
|
80
|
+
it 'has custom types' do
|
81
|
+
assert type_names.include?("letter_selection")
|
82
|
+
assert_equal "letter_selection", content_field["type"]
|
83
|
+
end
|
84
|
+
|
120
85
|
it 'shows field type & calls' do
|
121
|
-
assert_equal "
|
86
|
+
assert_equal "letter_selection", content_field["type"]
|
122
87
|
assert_equal 3, content_field["calls"]["count"]
|
123
88
|
assert_equal "select", select_call["name"]
|
124
89
|
assert_equal "from_chars (req), for_chars (req)", select_call["arguments"]
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe GraphQL::Schema::SchemaValidation do
|
4
|
+
let(:schema) { GraphQL::SCHEMA }
|
5
|
+
|
6
|
+
it 'runs' do
|
7
|
+
schema.validate
|
8
|
+
end
|
9
|
+
|
10
|
+
describe "when the exposes_class doesnt exist" do
|
11
|
+
before do
|
12
|
+
Nodes::PostNode.exposes("BogusPost")
|
13
|
+
end
|
14
|
+
after do
|
15
|
+
Nodes::PostNode.exposes("Post")
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'raises an error' do
|
19
|
+
assert_raises(GraphQL::ExposesClassMissingError) { schema.validate }
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
describe "when there's a bad field type" do
|
24
|
+
before do
|
25
|
+
Nodes::PostNode.field.bogus_kind(:bogus_title)
|
26
|
+
end
|
27
|
+
after do
|
28
|
+
Nodes::PostNode.remove_field(:bogus_title)
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'raises an error' do
|
32
|
+
assert_raises(GraphQL::NodeNotDefinedError) { schema.validate }
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
describe "when a field cant find a corresponding method" do
|
37
|
+
before do
|
38
|
+
Nodes::PostNode.field.string(:bogus_title)
|
39
|
+
end
|
40
|
+
after do
|
41
|
+
Nodes::PostNode.remove_field(:bogus_title)
|
42
|
+
end
|
43
|
+
|
44
|
+
it 'raises an error' do
|
45
|
+
assert_raises(GraphQL::FieldNotDefinedError) { schema.validate }
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
data/spec/support/nodes.rb
CHANGED
@@ -14,21 +14,26 @@ module Nodes
|
|
14
14
|
end
|
15
15
|
end
|
16
16
|
|
17
|
+
|
17
18
|
class ApplicationConnection < GraphQL::Connection
|
18
|
-
|
19
|
+
type :connection
|
20
|
+
call :first, -> (prev_items, first) { prev_items.first(first.to_i) }
|
21
|
+
call :after, -> (prev_items, after) { prev_items.select {|i| i.id > after.to_i } }
|
22
|
+
|
19
23
|
field.number(:count)
|
20
24
|
field.boolean(:any)
|
21
25
|
|
22
26
|
def count
|
23
|
-
|
27
|
+
target.count
|
24
28
|
end
|
25
29
|
|
26
30
|
def any
|
27
|
-
|
31
|
+
target.any?
|
28
32
|
end
|
29
33
|
end
|
30
34
|
|
31
35
|
class CommentsConnection < ApplicationConnection
|
36
|
+
type :comments
|
32
37
|
field.number :viewer_name_length
|
33
38
|
field.number :average_rating
|
34
39
|
|
@@ -38,33 +43,15 @@ module Nodes
|
|
38
43
|
end
|
39
44
|
|
40
45
|
def average_rating
|
41
|
-
total_rating =
|
42
|
-
total_rating /
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
class LetterSelectionField < GraphQL::Types::StringField
|
47
|
-
call :from, -> (prev_value, chars) { prev_value[(chars.to_i)..-1] }
|
48
|
-
call :for, -> (prev_value, chars) { prev_value[0, (chars.to_i)] }
|
49
|
-
call :select, -> (prev_value, from_chars, for_chars) { prev_value[from_chars.to_i, for_chars.to_i] }
|
50
|
-
def raw_value
|
51
|
-
owner.content
|
46
|
+
total_rating = target.map(&:rating).inject(&:+).to_f
|
47
|
+
total_rating / target.size
|
52
48
|
end
|
53
49
|
end
|
54
50
|
|
55
|
-
class
|
56
|
-
|
57
|
-
call :first, -> (prev_items, first) { prev_items.first(first.to_i) }
|
58
|
-
call :after, -> (prev_items, after) { prev_items.select {|i| i.id > after.to_i } }
|
59
|
-
end
|
60
|
-
|
61
|
-
class DateField < GraphQL::Types::ObjectField
|
51
|
+
class DateType < GraphQL::Node
|
52
|
+
exposes "Date"
|
62
53
|
type :date
|
63
54
|
call :minus_days, -> (prev_value, minus_days) { prev_value - minus_days.to_i }
|
64
|
-
end
|
65
|
-
|
66
|
-
class DateNode < GraphQL::Node
|
67
|
-
exposes "Date"
|
68
55
|
field.number(:year)
|
69
56
|
field.number(:month)
|
70
57
|
end
|
@@ -77,7 +64,7 @@ module Nodes
|
|
77
64
|
field.string(:title)
|
78
65
|
field.letter_selection(:content)
|
79
66
|
field.number(:length)
|
80
|
-
field.
|
67
|
+
field.comments(:comments)
|
81
68
|
field.date(:published_at)
|
82
69
|
field.connection(:likes)
|
83
70
|
|
@@ -89,9 +76,11 @@ module Nodes
|
|
89
76
|
class CommentNode < ApplicationNode
|
90
77
|
node_for Comment
|
91
78
|
exposes "Comment"
|
92
|
-
field.string
|
79
|
+
field.string(:content)
|
93
80
|
field.letter_selection(:letters)
|
94
|
-
field.
|
81
|
+
field.post(:post)
|
82
|
+
|
83
|
+
def letters; content; end
|
95
84
|
end
|
96
85
|
|
97
86
|
# wraps a Like, for testing explicit name
|
@@ -108,12 +97,26 @@ module Nodes
|
|
108
97
|
class ContextNode < GraphQL::Node
|
109
98
|
exposes "Context"
|
110
99
|
field.string(:person_name)
|
100
|
+
field.boolean(:present)
|
111
101
|
|
112
102
|
def cursor
|
113
103
|
"context"
|
114
104
|
end
|
105
|
+
|
106
|
+
def present
|
107
|
+
true
|
108
|
+
end
|
115
109
|
end
|
116
110
|
|
111
|
+
class LetterSelectionType < GraphQL::Node
|
112
|
+
type :letter_selection
|
113
|
+
call :from, -> (prev_value, chars) { prev_value[(chars.to_i)..-1] }
|
114
|
+
call :for, -> (prev_value, chars) { prev_value[0, (chars.to_i)] }
|
115
|
+
call :select, -> (prev_value, from_chars, for_chars) { prev_value[from_chars.to_i, for_chars.to_i] }
|
116
|
+
def as_result
|
117
|
+
apply_calls(target)
|
118
|
+
end
|
119
|
+
end
|
117
120
|
|
118
121
|
class FindCall < GraphQL::RootCall
|
119
122
|
abstract!
|
metadata
CHANGED
@@ -1,27 +1,27 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: graphql
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Robert Mosolgo
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-03-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '4'
|
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
26
|
version: '4'
|
27
27
|
- !ruby/object:Gem::Dependency
|
@@ -56,112 +56,112 @@ dependencies:
|
|
56
56
|
name: pry
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - "
|
59
|
+
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '0.10'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - "
|
66
|
+
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0.10'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: guard
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- - "
|
73
|
+
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: '2.
|
75
|
+
version: '2.12'
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- - "
|
80
|
+
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: '2.
|
82
|
+
version: '2.12'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: guard-bundler
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- - "
|
87
|
+
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
89
|
version: '2.1'
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- - "
|
94
|
+
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '2.1'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: guard-minitest
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
|
-
- - "
|
101
|
+
- - "~>"
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version: '2.
|
103
|
+
version: '2.4'
|
104
104
|
type: :development
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
|
-
- - "
|
108
|
+
- - "~>"
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version: '2.
|
110
|
+
version: '2.4'
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
112
|
name: minitest
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
|
-
- - "
|
115
|
+
- - "~>"
|
116
116
|
- !ruby/object:Gem::Version
|
117
117
|
version: '5.5'
|
118
118
|
type: :development
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
|
-
- - "
|
122
|
+
- - "~>"
|
123
123
|
- !ruby/object:Gem::Version
|
124
124
|
version: '5.5'
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
126
|
name: minitest-focus
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
128
128
|
requirements:
|
129
|
-
- - "
|
129
|
+
- - "~>"
|
130
130
|
- !ruby/object:Gem::Version
|
131
131
|
version: '1.1'
|
132
132
|
type: :development
|
133
133
|
prerelease: false
|
134
134
|
version_requirements: !ruby/object:Gem::Requirement
|
135
135
|
requirements:
|
136
|
-
- - "
|
136
|
+
- - "~>"
|
137
137
|
- !ruby/object:Gem::Version
|
138
138
|
version: '1.1'
|
139
139
|
- !ruby/object:Gem::Dependency
|
140
140
|
name: minitest-reporters
|
141
141
|
requirement: !ruby/object:Gem::Requirement
|
142
142
|
requirements:
|
143
|
-
- - "
|
143
|
+
- - "~>"
|
144
144
|
- !ruby/object:Gem::Version
|
145
145
|
version: '1.0'
|
146
146
|
type: :development
|
147
147
|
prerelease: false
|
148
148
|
version_requirements: !ruby/object:Gem::Requirement
|
149
149
|
requirements:
|
150
|
-
- - "
|
150
|
+
- - "~>"
|
151
151
|
- !ruby/object:Gem::Version
|
152
152
|
version: '1.0'
|
153
153
|
- !ruby/object:Gem::Dependency
|
154
154
|
name: rake
|
155
155
|
requirement: !ruby/object:Gem::Requirement
|
156
156
|
requirements:
|
157
|
-
- - "
|
157
|
+
- - "~>"
|
158
158
|
- !ruby/object:Gem::Version
|
159
159
|
version: '10.4'
|
160
160
|
type: :development
|
161
161
|
prerelease: false
|
162
162
|
version_requirements: !ruby/object:Gem::Requirement
|
163
163
|
requirements:
|
164
|
-
- - "
|
164
|
+
- - "~>"
|
165
165
|
- !ruby/object:Gem::Version
|
166
166
|
version: '10.4'
|
167
167
|
description: A GraphQL adapter for Ruby
|
@@ -177,44 +177,44 @@ files:
|
|
177
177
|
- lib/graphql/connection.rb
|
178
178
|
- lib/graphql/field.rb
|
179
179
|
- lib/graphql/field_definer.rb
|
180
|
-
- lib/graphql/introspection/
|
180
|
+
- lib/graphql/introspection/call_type.rb
|
181
181
|
- lib/graphql/introspection/connection.rb
|
182
|
-
- lib/graphql/introspection/
|
182
|
+
- lib/graphql/introspection/field_type.rb
|
183
183
|
- lib/graphql/introspection/root_call_argument_node.rb
|
184
|
-
- lib/graphql/introspection/
|
184
|
+
- lib/graphql/introspection/root_call_type.rb
|
185
185
|
- lib/graphql/introspection/schema_call.rb
|
186
|
-
- lib/graphql/introspection/
|
186
|
+
- lib/graphql/introspection/schema_type.rb
|
187
187
|
- lib/graphql/introspection/type_call.rb
|
188
|
-
- lib/graphql/introspection/
|
188
|
+
- lib/graphql/introspection/type_type.rb
|
189
189
|
- lib/graphql/node.rb
|
190
|
-
- lib/graphql/parser.rb
|
190
|
+
- lib/graphql/parser/parser.rb
|
191
|
+
- lib/graphql/parser/transform.rb
|
191
192
|
- lib/graphql/query.rb
|
192
193
|
- lib/graphql/root_call.rb
|
193
194
|
- lib/graphql/root_call_argument.rb
|
194
195
|
- lib/graphql/root_call_argument_definer.rb
|
195
|
-
- lib/graphql/schema.rb
|
196
|
+
- lib/graphql/schema/all.rb
|
197
|
+
- lib/graphql/schema/schema.rb
|
198
|
+
- lib/graphql/schema/schema_validation.rb
|
196
199
|
- lib/graphql/syntax/call.rb
|
197
200
|
- lib/graphql/syntax/field.rb
|
201
|
+
- lib/graphql/syntax/fragment.rb
|
198
202
|
- lib/graphql/syntax/node.rb
|
199
203
|
- lib/graphql/syntax/query.rb
|
200
204
|
- lib/graphql/syntax/variable.rb
|
201
|
-
- lib/graphql/
|
202
|
-
- lib/graphql/types/
|
203
|
-
- lib/graphql/types/
|
204
|
-
- lib/graphql/types/
|
205
|
-
- lib/graphql/types/number_field.rb
|
206
|
-
- lib/graphql/types/object_field.rb
|
207
|
-
- lib/graphql/types/string_field.rb
|
208
|
-
- lib/graphql/types/type_field.rb
|
205
|
+
- lib/graphql/types/boolean_type.rb
|
206
|
+
- lib/graphql/types/number_type.rb
|
207
|
+
- lib/graphql/types/object_type.rb
|
208
|
+
- lib/graphql/types/string_type.rb
|
209
209
|
- lib/graphql/version.rb
|
210
210
|
- readme.md
|
211
|
-
- spec/graphql/field_spec.rb
|
212
211
|
- spec/graphql/node_spec.rb
|
213
|
-
- spec/graphql/parser_spec.rb
|
212
|
+
- spec/graphql/parser/parser_spec.rb
|
213
|
+
- spec/graphql/parser/transform_spec.rb
|
214
214
|
- spec/graphql/query_spec.rb
|
215
215
|
- spec/graphql/root_call_spec.rb
|
216
|
-
- spec/graphql/schema_spec.rb
|
217
|
-
- spec/graphql/
|
216
|
+
- spec/graphql/schema/schema_spec.rb
|
217
|
+
- spec/graphql/schema/schema_validation_spec.rb
|
218
218
|
- spec/spec_helper.rb
|
219
219
|
- spec/support/dummy_app.rb
|
220
220
|
- spec/support/nodes.rb
|
@@ -243,13 +243,13 @@ signing_key:
|
|
243
243
|
specification_version: 4
|
244
244
|
summary: GraphQL
|
245
245
|
test_files:
|
246
|
-
- spec/graphql/field_spec.rb
|
247
246
|
- spec/graphql/node_spec.rb
|
248
|
-
- spec/graphql/parser_spec.rb
|
247
|
+
- spec/graphql/parser/parser_spec.rb
|
248
|
+
- spec/graphql/parser/transform_spec.rb
|
249
249
|
- spec/graphql/query_spec.rb
|
250
250
|
- spec/graphql/root_call_spec.rb
|
251
|
-
- spec/graphql/schema_spec.rb
|
252
|
-
- spec/graphql/
|
251
|
+
- spec/graphql/schema/schema_spec.rb
|
252
|
+
- spec/graphql/schema/schema_validation_spec.rb
|
253
253
|
- spec/spec_helper.rb
|
254
254
|
- spec/support/dummy_app.rb
|
255
255
|
- spec/support/nodes.rb
|