graphql 0.13.0 → 0.14.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/graphql/define/assign_argument.rb +3 -5
- data/lib/graphql/field.rb +1 -3
- data/lib/graphql/input_object_type.rb +4 -1
- data/lib/graphql/language.rb +1 -0
- data/lib/graphql/language/generation.rb +94 -0
- data/lib/graphql/language/lexer.rb +229 -201
- data/lib/graphql/language/lexer.rl +24 -7
- data/lib/graphql/language/nodes.rb +4 -0
- data/lib/graphql/language/parser.rb +195 -187
- data/lib/graphql/language/parser.y +11 -4
- data/lib/graphql/object_type.rb +21 -0
- data/lib/graphql/query.rb +8 -3
- data/lib/graphql/query/serial_execution/operation_resolution.rb +2 -2
- data/lib/graphql/query/serial_execution/value_resolution.rb +5 -0
- data/lib/graphql/schema.rb +11 -19
- data/lib/graphql/schema/invalid_type_error.rb +6 -0
- data/lib/graphql/schema/reduce_types.rb +68 -0
- data/lib/graphql/schema/type_expression.rb +6 -16
- data/lib/graphql/schema/type_map.rb +1 -5
- data/lib/graphql/schema/validation.rb +164 -0
- data/lib/graphql/version.rb +1 -1
- data/readme.md +3 -4
- data/spec/graphql/argument_spec.rb +20 -0
- data/spec/graphql/field_spec.rb +16 -0
- data/spec/graphql/introspection/schema_type_spec.rb +1 -0
- data/spec/graphql/language/generation_spec.rb +42 -0
- data/spec/graphql/language/parser_spec.rb +136 -26
- data/spec/graphql/query/serial_execution/value_resolution_spec.rb +23 -0
- data/spec/graphql/query_spec.rb +51 -0
- data/spec/graphql/schema/{type_reducer_spec.rb → reduce_types_spec.rb} +16 -14
- data/spec/graphql/schema/type_expression_spec.rb +4 -4
- data/spec/graphql/schema/validation_spec.rb +219 -0
- data/spec/support/dairy_app.rb +3 -0
- metadata +14 -13
- data/lib/graphql/schema/each_item_validator.rb +0 -21
- data/lib/graphql/schema/field_validator.rb +0 -17
- data/lib/graphql/schema/implementation_validator.rb +0 -31
- data/lib/graphql/schema/type_reducer.rb +0 -79
- data/lib/graphql/schema/type_validator.rb +0 -58
- data/spec/graphql/schema/field_validator_spec.rb +0 -21
- data/spec/graphql/schema/type_validator_spec.rb +0 -81
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3686533835888eeb91ed91024ede7ea3f2937d5c
|
4
|
+
data.tar.gz: 767760791707ac1722002fc7e8b6b182686abeaa
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 514195ebd2aff35a181e013af868e78af66fa0ca5cceaafe318c92d30d200241f9531cd630d6c36155dd521cab3cf1f7a4b8fee600dc6bbbd8c8f6430d3dd47f
|
7
|
+
data.tar.gz: 3f5018af47c4e5225eb5f2c00ba8e4a1335e0ac56723908bb7bf8feffde7e567d7ac51f8eca8153249ec56a377b94ac257754694533727537b9d22403a3f12d9
|
@@ -2,18 +2,16 @@ module GraphQL
|
|
2
2
|
module Define
|
3
3
|
# Turn argument configs into a {GraphQL::Argument}.
|
4
4
|
module AssignArgument
|
5
|
-
def self.call(target, name, type, description = nil, default_value: nil, &block)
|
5
|
+
def self.call(target, name, type = nil, description = nil, default_value: nil, &block)
|
6
6
|
argument = if block_given?
|
7
7
|
GraphQL::Argument.define(&block)
|
8
8
|
else
|
9
9
|
GraphQL::Argument.new
|
10
10
|
end
|
11
11
|
argument.name = name.to_s
|
12
|
-
argument.type = type
|
13
|
-
|
12
|
+
type && argument.type = type
|
14
13
|
description && argument.description = description
|
15
|
-
|
16
|
-
default_value != nil && argument.default_value = default_value
|
14
|
+
!default_value.nil? && argument.default_value = default_value
|
17
15
|
|
18
16
|
target.arguments[name.to_s] = argument
|
19
17
|
end
|
data/lib/graphql/field.rb
CHANGED
@@ -90,9 +90,7 @@ module GraphQL
|
|
90
90
|
#
|
91
91
|
# This is important because {#name} may be used by {#resolve}.
|
92
92
|
def name=(new_name)
|
93
|
-
if
|
94
|
-
raise ArgumentError.new("GraphQL field names must be strings; cannot use #{new_name.inspect} (#{new_name.class.name}) as a field name.") unless new_name.is_a?(String)
|
95
|
-
elsif @name.nil?
|
93
|
+
if @name.nil?
|
96
94
|
@name = new_name
|
97
95
|
else
|
98
96
|
raise("Can't rename an already-named field. (Tried to rename \"#{@name}\" to \"#{new_name}\".) If you're passing a field with the `field:` argument, make sure it's an unused instance of GraphQL::Field.")
|
@@ -9,7 +9,10 @@ module GraphQL
|
|
9
9
|
# end
|
10
10
|
#
|
11
11
|
class InputObjectType < GraphQL::BaseType
|
12
|
-
accepts_definitions
|
12
|
+
accepts_definitions(
|
13
|
+
input_field: GraphQL::Define::AssignArgument,
|
14
|
+
argument: GraphQL::Define::AssignArgument
|
15
|
+
)
|
13
16
|
|
14
17
|
# @return [Hash<String, GraphQL::Argument>] Map String argument names to their {GraphQL::Argument} implementations
|
15
18
|
attr_accessor :arguments
|
data/lib/graphql/language.rb
CHANGED
@@ -0,0 +1,94 @@
|
|
1
|
+
module GraphQL
|
2
|
+
module Language
|
3
|
+
module Generation
|
4
|
+
def self.generate(node, indent: "")
|
5
|
+
case node
|
6
|
+
when Nodes::Document
|
7
|
+
node.definitions.map { |d| generate(d) }.join("\n")
|
8
|
+
when Nodes::Argument
|
9
|
+
"#{node.name}: #{generate(node.value)}"
|
10
|
+
when Nodes::Directive
|
11
|
+
"@#{node.name}(#{node.arguments.map { |a| generate(a) }.join(", ")})"
|
12
|
+
when Nodes::Enum
|
13
|
+
"#{node.name}"
|
14
|
+
when Nodes::Field
|
15
|
+
out = "#{indent}"
|
16
|
+
out << "#{node.alias}: " if node.alias
|
17
|
+
out << "#{node.name}"
|
18
|
+
out << "(#{node.arguments.map { |a| generate(a) }.join(", ")})" if node.arguments.any?
|
19
|
+
out << generate_directives(node.directives)
|
20
|
+
out << generate_selections(node.selections, indent: indent)
|
21
|
+
out
|
22
|
+
when Nodes::FragmentDefinition
|
23
|
+
out = "#{indent}fragment #{node.name}"
|
24
|
+
out << " on #{node.type}" if node.type
|
25
|
+
out << generate_directives(node.directives)
|
26
|
+
out << generate_selections(node.selections, indent: indent)
|
27
|
+
out
|
28
|
+
|
29
|
+
when Nodes::FragmentSpread
|
30
|
+
out = "#{indent}... #{node.name}"
|
31
|
+
out << generate_directives(node.directives)
|
32
|
+
out
|
33
|
+
when Nodes::InlineFragment
|
34
|
+
out = "#{indent}..."
|
35
|
+
out << " on #{node.type}" if node.type
|
36
|
+
out << generate_directives(node.directives)
|
37
|
+
out << generate_selections(node.selections, indent: indent)
|
38
|
+
out
|
39
|
+
when Nodes::InputObject
|
40
|
+
generate(node.to_h)
|
41
|
+
when Nodes::ListType
|
42
|
+
"[#{generate(node.of_type)}]"
|
43
|
+
when Nodes::NonNullType
|
44
|
+
"#{generate(node.of_type)}!"
|
45
|
+
when Nodes::OperationDefinition
|
46
|
+
out = "#{indent}#{node.operation_type}"
|
47
|
+
out << " #{node.name}" if node.name
|
48
|
+
out << "(#{node.variables.map { |v| generate(v) }.join(", ")})" if node.variables.any?
|
49
|
+
out << generate_directives(node.directives)
|
50
|
+
out << generate_selections(node.selections, indent: indent)
|
51
|
+
out
|
52
|
+
when Nodes::TypeName
|
53
|
+
"#{node.name}"
|
54
|
+
when Nodes::VariableDefinition
|
55
|
+
out = "$#{node.name}: #{generate(node.type)}"
|
56
|
+
out << " = #{generate(node.default_value)}" if node.default_value
|
57
|
+
out
|
58
|
+
when Nodes::VariableIdentifier
|
59
|
+
"$#{node.name}"
|
60
|
+
when Nodes::AbstractNode
|
61
|
+
node.to_query_string(indent: indent)
|
62
|
+
when FalseClass, Float, Integer, NilClass, String, TrueClass
|
63
|
+
JSON.generate(node, quirks_mode: true)
|
64
|
+
when Array
|
65
|
+
"[#{node.map { |v| generate(v) }.join(", ")}]"
|
66
|
+
when Hash
|
67
|
+
"{#{node.map { |k, v| "#{k}: #{generate(v)}" }.join(", ")}}"
|
68
|
+
else
|
69
|
+
raise TypeError
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
def self.generate_directives(directives)
|
74
|
+
if directives.any?
|
75
|
+
directives.map { |d| " #{generate(d)}" }.join
|
76
|
+
else
|
77
|
+
""
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
def self.generate_selections(selections, indent: "")
|
82
|
+
if selections.any?
|
83
|
+
out = " {\n"
|
84
|
+
selections.each do |selection|
|
85
|
+
out << generate(selection, indent: indent + " ") << "\n"
|
86
|
+
end
|
87
|
+
out << "#{indent}}"
|
88
|
+
else
|
89
|
+
""
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
|
2
2
|
# line 1 "lib/graphql/language/lexer.rl"
|
3
3
|
|
4
|
-
# line
|
4
|
+
# line 72 "lib/graphql/language/lexer.rl"
|
5
5
|
|
6
6
|
|
7
7
|
|
@@ -29,16 +29,17 @@ class << self
|
|
29
29
|
private :_graphql_lexer_actions, :_graphql_lexer_actions=
|
30
30
|
end
|
31
31
|
self._graphql_lexer_actions = [
|
32
|
-
0, 1,
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
2, 3,
|
40
|
-
|
41
|
-
|
32
|
+
0, 1, 0, 1, 1, 1, 2, 1,
|
33
|
+
13, 1, 14, 1, 15, 1, 16, 1,
|
34
|
+
17, 1, 18, 1, 19, 1, 20, 1,
|
35
|
+
21, 1, 22, 1, 23, 1, 24, 1,
|
36
|
+
25, 1, 26, 1, 27, 1, 28, 1,
|
37
|
+
29, 1, 30, 1, 31, 1, 32, 1,
|
38
|
+
33, 1, 34, 1, 35, 1, 36, 2,
|
39
|
+
2, 3, 2, 2, 4, 2, 2, 5,
|
40
|
+
2, 2, 6, 2, 2, 7, 2, 2,
|
41
|
+
8, 2, 2, 9, 2, 2, 10, 2,
|
42
|
+
2, 11, 2, 2, 12
|
42
43
|
]
|
43
44
|
|
44
45
|
class << self
|
@@ -46,10 +47,11 @@ class << self
|
|
46
47
|
private :_graphql_lexer_key_offsets, :_graphql_lexer_key_offsets=
|
47
48
|
end
|
48
49
|
self._graphql_lexer_key_offsets = [
|
49
|
-
0,
|
50
|
-
|
51
|
-
|
52
|
-
|
50
|
+
0, 2, 4, 6, 8, 12, 13, 45,
|
51
|
+
48, 50, 52, 55, 62, 64, 70, 77,
|
52
|
+
78, 85, 94, 102, 110, 118, 126, 134,
|
53
|
+
142, 150, 158, 166, 174, 182, 190, 198,
|
54
|
+
206, 214
|
53
55
|
]
|
54
56
|
|
55
57
|
class << self
|
@@ -57,31 +59,34 @@ class << self
|
|
57
59
|
private :_graphql_lexer_trans_keys, :_graphql_lexer_trans_keys=
|
58
60
|
end
|
59
61
|
self._graphql_lexer_trans_keys = [
|
60
|
-
34, 92, 34, 92, 48,
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
62
|
+
34, 92, 34, 92, 48, 57, 48, 57,
|
63
|
+
43, 45, 48, 57, 46, 9, 10, 13,
|
64
|
+
32, 33, 34, 35, 36, 40, 41, 44,
|
65
|
+
45, 46, 48, 58, 61, 64, 91, 93,
|
66
|
+
95, 102, 110, 111, 116, 123, 125, 49,
|
67
|
+
57, 65, 90, 97, 122, 9, 32, 44,
|
68
|
+
34, 92, 10, 13, 48, 49, 57, 43,
|
67
69
|
45, 46, 69, 101, 48, 57, 48, 57,
|
68
70
|
43, 45, 69, 101, 48, 57, 43, 45,
|
69
|
-
46, 69, 101, 48, 57, 95, 48,
|
70
|
-
65, 90, 97, 122, 95, 97, 114,
|
71
|
-
57, 65, 90, 98, 122, 95, 108,
|
72
|
-
57, 65, 90, 97, 122, 95, 115,
|
73
|
-
57, 65, 90, 97, 122, 95, 101,
|
74
|
-
57, 65, 90, 97, 122, 95, 97,
|
75
|
-
57, 65, 90, 98, 122, 95, 103,
|
76
|
-
57, 65, 90, 97, 122, 95, 109,
|
77
|
-
57, 65, 90, 97, 122, 95, 101,
|
78
|
-
57, 65, 90, 97, 122, 95, 110,
|
79
|
-
57, 65, 90, 97, 122, 95, 116,
|
80
|
-
57, 65, 90, 97, 122, 95,
|
81
|
-
57, 65, 90, 97, 122, 95,
|
82
|
-
57, 65, 90, 97, 122, 95,
|
83
|
-
57, 65, 90, 97, 122, 95,
|
84
|
-
57, 65, 90, 97, 122,
|
71
|
+
46, 69, 101, 48, 57, 46, 95, 48,
|
72
|
+
57, 65, 90, 97, 122, 95, 97, 114,
|
73
|
+
48, 57, 65, 90, 98, 122, 95, 108,
|
74
|
+
48, 57, 65, 90, 97, 122, 95, 115,
|
75
|
+
48, 57, 65, 90, 97, 122, 95, 101,
|
76
|
+
48, 57, 65, 90, 97, 122, 95, 97,
|
77
|
+
48, 57, 65, 90, 98, 122, 95, 103,
|
78
|
+
48, 57, 65, 90, 97, 122, 95, 109,
|
79
|
+
48, 57, 65, 90, 97, 122, 95, 101,
|
80
|
+
48, 57, 65, 90, 97, 122, 95, 110,
|
81
|
+
48, 57, 65, 90, 97, 122, 95, 116,
|
82
|
+
48, 57, 65, 90, 97, 122, 95, 117,
|
83
|
+
48, 57, 65, 90, 97, 122, 95, 108,
|
84
|
+
48, 57, 65, 90, 97, 122, 95, 108,
|
85
|
+
48, 57, 65, 90, 97, 122, 95, 110,
|
86
|
+
48, 57, 65, 90, 97, 122, 95, 114,
|
87
|
+
48, 57, 65, 90, 97, 122, 95, 117,
|
88
|
+
48, 57, 65, 90, 97, 122, 95, 101,
|
89
|
+
48, 57, 65, 90, 97, 122, 0
|
85
90
|
]
|
86
91
|
|
87
92
|
class << self
|
@@ -89,10 +94,11 @@ class << self
|
|
89
94
|
private :_graphql_lexer_single_lengths, :_graphql_lexer_single_lengths=
|
90
95
|
end
|
91
96
|
self._graphql_lexer_single_lengths = [
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
2, 2, 2, 2, 2, 2, 2, 2
|
97
|
+
2, 2, 0, 0, 2, 1, 26, 3,
|
98
|
+
2, 2, 1, 5, 0, 4, 5, 1,
|
99
|
+
1, 3, 2, 2, 2, 2, 2, 2,
|
100
|
+
2, 2, 2, 2, 2, 2, 2, 2,
|
101
|
+
2, 2
|
96
102
|
]
|
97
103
|
|
98
104
|
class << self
|
@@ -100,10 +106,11 @@ class << self
|
|
100
106
|
private :_graphql_lexer_range_lengths, :_graphql_lexer_range_lengths=
|
101
107
|
end
|
102
108
|
self._graphql_lexer_range_lengths = [
|
103
|
-
0, 0,
|
104
|
-
0,
|
105
|
-
|
106
|
-
3, 3, 3, 3, 3, 3, 3, 3
|
109
|
+
0, 0, 1, 1, 1, 0, 3, 0,
|
110
|
+
0, 0, 1, 1, 1, 1, 1, 0,
|
111
|
+
3, 3, 3, 3, 3, 3, 3, 3,
|
112
|
+
3, 3, 3, 3, 3, 3, 3, 3,
|
113
|
+
3, 3
|
107
114
|
]
|
108
115
|
|
109
116
|
class << self
|
@@ -111,10 +118,11 @@ class << self
|
|
111
118
|
private :_graphql_lexer_index_offsets, :_graphql_lexer_index_offsets=
|
112
119
|
end
|
113
120
|
self._graphql_lexer_index_offsets = [
|
114
|
-
0,
|
115
|
-
|
116
|
-
|
117
|
-
|
121
|
+
0, 3, 6, 8, 10, 14, 16, 46,
|
122
|
+
50, 53, 56, 59, 66, 68, 74, 81,
|
123
|
+
83, 88, 95, 101, 107, 113, 119, 125,
|
124
|
+
131, 137, 143, 149, 155, 161, 167, 173,
|
125
|
+
179, 185
|
118
126
|
]
|
119
127
|
|
120
128
|
class << self
|
@@ -122,28 +130,30 @@ class << self
|
|
122
130
|
private :_graphql_lexer_indicies, :_graphql_lexer_indicies=
|
123
131
|
end
|
124
132
|
self._graphql_lexer_indicies = [
|
125
|
-
2, 3, 1, 4, 3, 1, 5,
|
126
|
-
6, 8,
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
39,
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
133
|
+
2, 3, 1, 4, 3, 1, 5, 0,
|
134
|
+
7, 6, 8, 8, 5, 0, 10, 9,
|
135
|
+
12, 13, 13, 12, 14, 15, 16, 17,
|
136
|
+
18, 19, 12, 20, 21, 22, 24, 25,
|
137
|
+
26, 28, 29, 27, 30, 31, 32, 33,
|
138
|
+
34, 35, 23, 27, 27, 11, 12, 12,
|
139
|
+
12, 36, 2, 3, 1, 37, 37, 16,
|
140
|
+
22, 23, 38, 8, 8, 40, 41, 41,
|
141
|
+
5, 39, 5, 42, 8, 8, 41, 41,
|
142
|
+
7, 42, 8, 8, 40, 41, 41, 23,
|
143
|
+
39, 43, 38, 27, 27, 27, 27, 0,
|
144
|
+
27, 45, 46, 27, 27, 27, 44, 27,
|
145
|
+
47, 27, 27, 27, 44, 27, 48, 27,
|
146
|
+
27, 27, 44, 27, 49, 27, 27, 27,
|
147
|
+
44, 27, 50, 27, 27, 27, 44, 27,
|
148
|
+
51, 27, 27, 27, 44, 27, 52, 27,
|
149
|
+
27, 27, 44, 27, 53, 27, 27, 27,
|
150
|
+
44, 27, 54, 27, 27, 27, 44, 27,
|
151
|
+
55, 27, 27, 27, 44, 27, 56, 27,
|
152
|
+
27, 27, 44, 27, 57, 27, 27, 27,
|
153
|
+
44, 27, 58, 27, 27, 27, 44, 27,
|
154
|
+
59, 27, 27, 27, 44, 27, 60, 27,
|
155
|
+
27, 27, 44, 27, 61, 27, 27, 27,
|
156
|
+
44, 27, 62, 27, 27, 27, 44, 0
|
147
157
|
]
|
148
158
|
|
149
159
|
class << self
|
@@ -151,14 +161,14 @@ class << self
|
|
151
161
|
private :_graphql_lexer_trans_targs, :_graphql_lexer_trans_targs=
|
152
162
|
end
|
153
163
|
self._graphql_lexer_trans_targs = [
|
154
|
-
|
155
|
-
|
156
|
-
9,
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
164
|
+
6, 0, 6, 1, 8, 12, 6, 13,
|
165
|
+
2, 6, 6, 6, 7, 6, 6, 8,
|
166
|
+
9, 6, 6, 6, 10, 15, 11, 14,
|
167
|
+
6, 6, 6, 16, 6, 6, 17, 27,
|
168
|
+
30, 31, 6, 6, 6, 6, 6, 6,
|
169
|
+
3, 4, 6, 5, 6, 18, 21, 19,
|
170
|
+
20, 16, 22, 23, 24, 25, 26, 16,
|
171
|
+
28, 29, 16, 16, 32, 33, 16
|
162
172
|
]
|
163
173
|
|
164
174
|
class << self
|
@@ -166,14 +176,14 @@ class << self
|
|
166
176
|
private :_graphql_lexer_trans_actions, :_graphql_lexer_trans_actions=
|
167
177
|
end
|
168
178
|
self._graphql_lexer_trans_actions = [
|
169
|
-
|
170
|
-
0,
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
0,
|
176
|
-
|
179
|
+
53, 0, 21, 0, 76, 0, 49, 58,
|
180
|
+
0, 51, 27, 35, 0, 33, 31, 82,
|
181
|
+
0, 23, 11, 13, 0, 5, 55, 55,
|
182
|
+
19, 29, 25, 79, 15, 17, 0, 0,
|
183
|
+
0, 0, 7, 9, 43, 45, 47, 37,
|
184
|
+
0, 0, 39, 0, 41, 0, 0, 0,
|
185
|
+
0, 70, 0, 0, 0, 0, 0, 64,
|
186
|
+
0, 0, 73, 61, 0, 0, 67
|
177
187
|
]
|
178
188
|
|
179
189
|
class << self
|
@@ -181,10 +191,11 @@ class << self
|
|
181
191
|
private :_graphql_lexer_to_state_actions, :_graphql_lexer_to_state_actions=
|
182
192
|
end
|
183
193
|
self._graphql_lexer_to_state_actions = [
|
194
|
+
0, 0, 0, 0, 0, 0, 1, 0,
|
184
195
|
0, 0, 0, 0, 0, 0, 0, 0,
|
185
|
-
0, 47, 0, 0, 0, 0, 0, 0,
|
186
196
|
0, 0, 0, 0, 0, 0, 0, 0,
|
187
|
-
0, 0, 0, 0, 0, 0, 0, 0
|
197
|
+
0, 0, 0, 0, 0, 0, 0, 0,
|
198
|
+
0, 0
|
188
199
|
]
|
189
200
|
|
190
201
|
class << self
|
@@ -192,10 +203,11 @@ class << self
|
|
192
203
|
private :_graphql_lexer_from_state_actions, :_graphql_lexer_from_state_actions=
|
193
204
|
end
|
194
205
|
self._graphql_lexer_from_state_actions = [
|
206
|
+
0, 0, 0, 0, 0, 0, 3, 0,
|
207
|
+
0, 0, 0, 0, 0, 0, 0, 0,
|
195
208
|
0, 0, 0, 0, 0, 0, 0, 0,
|
196
|
-
0, 1, 0, 0, 0, 0, 0, 0,
|
197
209
|
0, 0, 0, 0, 0, 0, 0, 0,
|
198
|
-
0, 0
|
210
|
+
0, 0
|
199
211
|
]
|
200
212
|
|
201
213
|
class << self
|
@@ -203,32 +215,33 @@ class << self
|
|
203
215
|
private :_graphql_lexer_eof_trans, :_graphql_lexer_eof_trans=
|
204
216
|
end
|
205
217
|
self._graphql_lexer_eof_trans = [
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
218
|
+
1, 1, 1, 7, 1, 10, 0, 37,
|
219
|
+
1, 38, 39, 40, 43, 43, 40, 39,
|
220
|
+
1, 45, 45, 45, 45, 45, 45, 45,
|
221
|
+
45, 45, 45, 45, 45, 45, 45, 45,
|
222
|
+
45, 45
|
210
223
|
]
|
211
224
|
|
212
225
|
class << self
|
213
226
|
attr_accessor :graphql_lexer_start
|
214
227
|
end
|
215
|
-
self.graphql_lexer_start =
|
228
|
+
self.graphql_lexer_start = 6;
|
216
229
|
class << self
|
217
230
|
attr_accessor :graphql_lexer_first_final
|
218
231
|
end
|
219
|
-
self.graphql_lexer_first_final =
|
232
|
+
self.graphql_lexer_first_final = 6;
|
220
233
|
class << self
|
221
234
|
attr_accessor :graphql_lexer_error
|
222
235
|
end
|
223
|
-
self.graphql_lexer_error =
|
236
|
+
self.graphql_lexer_error = -1;
|
224
237
|
|
225
238
|
class << self
|
226
239
|
attr_accessor :graphql_lexer_en_main
|
227
240
|
end
|
228
|
-
self.graphql_lexer_en_main =
|
241
|
+
self.graphql_lexer_en_main = 6;
|
229
242
|
|
230
243
|
|
231
|
-
# line
|
244
|
+
# line 93 "lib/graphql/language/lexer.rl"
|
232
245
|
|
233
246
|
def self.run_lexer(query_string)
|
234
247
|
data = query_string.unpack("c*")
|
@@ -242,7 +255,7 @@ self.graphql_lexer_en_main = 9;
|
|
242
255
|
}
|
243
256
|
|
244
257
|
|
245
|
-
# line
|
258
|
+
# line 259 "lib/graphql/language/lexer.rb"
|
246
259
|
begin
|
247
260
|
p ||= 0
|
248
261
|
pe ||= data.length
|
@@ -252,14 +265,14 @@ begin
|
|
252
265
|
act = 0
|
253
266
|
end
|
254
267
|
|
255
|
-
# line
|
268
|
+
# line 106 "lib/graphql/language/lexer.rl"
|
256
269
|
|
257
270
|
emit_token = -> (name) {
|
258
271
|
emit(name, ts, te, meta)
|
259
272
|
}
|
260
273
|
|
261
274
|
|
262
|
-
# line
|
275
|
+
# line 276 "lib/graphql/language/lexer.rb"
|
263
276
|
begin
|
264
277
|
_klen, _trans, _keys, _acts, _nacts = nil
|
265
278
|
_goto_level = 0
|
@@ -275,10 +288,6 @@ begin
|
|
275
288
|
_goto_level = _test_eof
|
276
289
|
next
|
277
290
|
end
|
278
|
-
if cs == 0
|
279
|
-
_goto_level = _out
|
280
|
-
next
|
281
|
-
end
|
282
291
|
end
|
283
292
|
if _goto_level <= _resume
|
284
293
|
_acts = _graphql_lexer_from_state_actions[cs]
|
@@ -288,12 +297,12 @@ begin
|
|
288
297
|
_nacts -= 1
|
289
298
|
_acts += 1
|
290
299
|
case _graphql_lexer_actions[_acts - 1]
|
291
|
-
when
|
300
|
+
when 1 then
|
292
301
|
# line 1 "NONE"
|
293
302
|
begin
|
294
303
|
ts = p
|
295
304
|
end
|
296
|
-
# line
|
305
|
+
# line 306 "lib/graphql/language/lexer.rb"
|
297
306
|
end # from state action switch
|
298
307
|
end
|
299
308
|
if _trigger_goto
|
@@ -360,123 +369,131 @@ ts = p
|
|
360
369
|
_nacts -= 1
|
361
370
|
_acts += 1
|
362
371
|
case _graphql_lexer_actions[_acts - 1]
|
363
|
-
when
|
372
|
+
when 2 then
|
364
373
|
# line 1 "NONE"
|
365
374
|
begin
|
366
375
|
te = p+1
|
367
376
|
end
|
368
|
-
when
|
369
|
-
# line
|
377
|
+
when 3 then
|
378
|
+
# line 39 "lib/graphql/language/lexer.rl"
|
370
379
|
begin
|
371
380
|
act = 1; end
|
372
|
-
when
|
373
|
-
# line
|
381
|
+
when 4 then
|
382
|
+
# line 40 "lib/graphql/language/lexer.rl"
|
374
383
|
begin
|
375
384
|
act = 2; end
|
376
|
-
when
|
377
|
-
# line
|
385
|
+
when 5 then
|
386
|
+
# line 41 "lib/graphql/language/lexer.rl"
|
378
387
|
begin
|
379
388
|
act = 3; end
|
380
|
-
when
|
381
|
-
# line
|
389
|
+
when 6 then
|
390
|
+
# line 42 "lib/graphql/language/lexer.rl"
|
382
391
|
begin
|
383
392
|
act = 4; end
|
384
|
-
when
|
385
|
-
# line
|
393
|
+
when 7 then
|
394
|
+
# line 43 "lib/graphql/language/lexer.rl"
|
386
395
|
begin
|
387
396
|
act = 5; end
|
388
|
-
when
|
389
|
-
# line
|
397
|
+
when 8 then
|
398
|
+
# line 44 "lib/graphql/language/lexer.rl"
|
390
399
|
begin
|
391
400
|
act = 6; end
|
401
|
+
when 9 then
|
402
|
+
# line 45 "lib/graphql/language/lexer.rl"
|
403
|
+
begin
|
404
|
+
act = 7; end
|
392
405
|
when 10 then
|
393
|
-
# line
|
406
|
+
# line 53 "lib/graphql/language/lexer.rl"
|
394
407
|
begin
|
395
|
-
act =
|
408
|
+
act = 15; end
|
396
409
|
when 11 then
|
397
|
-
# line
|
410
|
+
# line 59 "lib/graphql/language/lexer.rl"
|
398
411
|
begin
|
399
|
-
act =
|
412
|
+
act = 21; end
|
400
413
|
when 12 then
|
401
|
-
# line
|
414
|
+
# line 69 "lib/graphql/language/lexer.rl"
|
415
|
+
begin
|
416
|
+
act = 25; end
|
417
|
+
when 13 then
|
418
|
+
# line 46 "lib/graphql/language/lexer.rl"
|
402
419
|
begin
|
403
420
|
te = p+1
|
404
421
|
begin emit_token.call(:RCURLY) end
|
405
422
|
end
|
406
|
-
when
|
407
|
-
# line
|
423
|
+
when 14 then
|
424
|
+
# line 47 "lib/graphql/language/lexer.rl"
|
408
425
|
begin
|
409
426
|
te = p+1
|
410
427
|
begin emit_token.call(:LCURLY) end
|
411
428
|
end
|
412
|
-
when
|
413
|
-
# line
|
429
|
+
when 15 then
|
430
|
+
# line 48 "lib/graphql/language/lexer.rl"
|
414
431
|
begin
|
415
432
|
te = p+1
|
416
433
|
begin emit_token.call(:RPAREN) end
|
417
434
|
end
|
418
|
-
when
|
419
|
-
# line
|
435
|
+
when 16 then
|
436
|
+
# line 49 "lib/graphql/language/lexer.rl"
|
420
437
|
begin
|
421
438
|
te = p+1
|
422
439
|
begin emit_token.call(:LPAREN) end
|
423
440
|
end
|
424
|
-
when
|
425
|
-
# line
|
441
|
+
when 17 then
|
442
|
+
# line 50 "lib/graphql/language/lexer.rl"
|
426
443
|
begin
|
427
444
|
te = p+1
|
428
445
|
begin emit_token.call(:RBRACKET) end
|
429
446
|
end
|
430
|
-
when
|
431
|
-
# line
|
447
|
+
when 18 then
|
448
|
+
# line 51 "lib/graphql/language/lexer.rl"
|
432
449
|
begin
|
433
450
|
te = p+1
|
434
451
|
begin emit_token.call(:LBRACKET) end
|
435
452
|
end
|
436
|
-
when
|
437
|
-
# line
|
453
|
+
when 19 then
|
454
|
+
# line 52 "lib/graphql/language/lexer.rl"
|
438
455
|
begin
|
439
456
|
te = p+1
|
440
457
|
begin emit_token.call(:COLON) end
|
441
458
|
end
|
442
|
-
when
|
443
|
-
# line
|
459
|
+
when 20 then
|
460
|
+
# line 53 "lib/graphql/language/lexer.rl"
|
444
461
|
begin
|
445
462
|
te = p+1
|
446
463
|
begin emit_string(ts + 1, te - 1, meta) end
|
447
464
|
end
|
448
|
-
when
|
449
|
-
# line
|
465
|
+
when 21 then
|
466
|
+
# line 54 "lib/graphql/language/lexer.rl"
|
450
467
|
begin
|
451
468
|
te = p+1
|
452
469
|
begin emit_token.call(:VAR_SIGN) end
|
453
470
|
end
|
454
|
-
when
|
455
|
-
# line
|
471
|
+
when 22 then
|
472
|
+
# line 55 "lib/graphql/language/lexer.rl"
|
456
473
|
begin
|
457
474
|
te = p+1
|
458
475
|
begin emit_token.call(:DIR_SIGN) end
|
459
476
|
end
|
460
|
-
when
|
461
|
-
# line
|
477
|
+
when 23 then
|
478
|
+
# line 56 "lib/graphql/language/lexer.rl"
|
462
479
|
begin
|
463
480
|
te = p+1
|
464
481
|
begin emit_token.call(:ELLIPSIS) end
|
465
482
|
end
|
466
|
-
when
|
467
|
-
# line
|
483
|
+
when 24 then
|
484
|
+
# line 57 "lib/graphql/language/lexer.rl"
|
468
485
|
begin
|
469
486
|
te = p+1
|
470
487
|
begin emit_token.call(:EQUALS) end
|
471
488
|
end
|
472
|
-
when
|
473
|
-
# line
|
489
|
+
when 25 then
|
490
|
+
# line 58 "lib/graphql/language/lexer.rl"
|
474
491
|
begin
|
475
492
|
te = p+1
|
476
493
|
begin emit_token.call(:BANG) end
|
477
494
|
end
|
478
|
-
when
|
479
|
-
# line
|
495
|
+
when 26 then
|
496
|
+
# line 61 "lib/graphql/language/lexer.rl"
|
480
497
|
begin
|
481
498
|
te = p+1
|
482
499
|
begin
|
@@ -484,60 +501,64 @@ te = p+1
|
|
484
501
|
meta[:col] = 1
|
485
502
|
end
|
486
503
|
end
|
487
|
-
when 26 then
|
488
|
-
# line 35 "lib/graphql/language/lexer.rl"
|
489
|
-
begin
|
490
|
-
te = p
|
491
|
-
p = p - 1; begin emit_token.call(:INT) end
|
492
|
-
end
|
493
504
|
when 27 then
|
494
|
-
# line
|
505
|
+
# line 69 "lib/graphql/language/lexer.rl"
|
495
506
|
begin
|
496
|
-
te = p
|
497
|
-
|
507
|
+
te = p+1
|
508
|
+
begin emit_token.call(:UNKNOWN_CHAR) end
|
498
509
|
end
|
499
510
|
when 28 then
|
500
|
-
# line
|
511
|
+
# line 39 "lib/graphql/language/lexer.rl"
|
501
512
|
begin
|
502
513
|
te = p
|
503
|
-
p = p - 1; begin
|
514
|
+
p = p - 1; begin emit_token.call(:INT) end
|
504
515
|
end
|
505
516
|
when 29 then
|
506
|
-
# line
|
517
|
+
# line 40 "lib/graphql/language/lexer.rl"
|
507
518
|
begin
|
508
519
|
te = p
|
509
|
-
p = p - 1; begin emit_token.call(:
|
520
|
+
p = p - 1; begin emit_token.call(:FLOAT) end
|
510
521
|
end
|
511
522
|
when 30 then
|
512
|
-
# line
|
523
|
+
# line 59 "lib/graphql/language/lexer.rl"
|
513
524
|
begin
|
514
525
|
te = p
|
515
|
-
p = p - 1; begin
|
526
|
+
p = p - 1; begin emit_token.call(:IDENTIFIER) end
|
516
527
|
end
|
517
528
|
when 31 then
|
518
|
-
# line
|
529
|
+
# line 66 "lib/graphql/language/lexer.rl"
|
519
530
|
begin
|
520
531
|
te = p
|
521
532
|
p = p - 1; begin meta[:col] += te - ts end
|
522
533
|
end
|
523
534
|
when 32 then
|
524
|
-
# line
|
535
|
+
# line 67 "lib/graphql/language/lexer.rl"
|
536
|
+
begin
|
537
|
+
te = p
|
538
|
+
p = p - 1; begin meta[:col] += te - ts end
|
539
|
+
end
|
540
|
+
when 33 then
|
541
|
+
# line 69 "lib/graphql/language/lexer.rl"
|
542
|
+
begin
|
543
|
+
te = p
|
544
|
+
p = p - 1; begin emit_token.call(:UNKNOWN_CHAR) end
|
545
|
+
end
|
546
|
+
when 34 then
|
547
|
+
# line 39 "lib/graphql/language/lexer.rl"
|
525
548
|
begin
|
526
549
|
begin p = ((te))-1; end
|
527
550
|
begin emit_token.call(:INT) end
|
528
551
|
end
|
529
|
-
when
|
552
|
+
when 35 then
|
553
|
+
# line 69 "lib/graphql/language/lexer.rl"
|
554
|
+
begin
|
555
|
+
begin p = ((te))-1; end
|
556
|
+
begin emit_token.call(:UNKNOWN_CHAR) end
|
557
|
+
end
|
558
|
+
when 36 then
|
530
559
|
# line 1 "NONE"
|
531
560
|
begin
|
532
561
|
case act
|
533
|
-
when 0 then
|
534
|
-
begin begin
|
535
|
-
cs = 0
|
536
|
-
_trigger_goto = true
|
537
|
-
_goto_level = _again
|
538
|
-
break
|
539
|
-
end
|
540
|
-
end
|
541
562
|
when 1 then
|
542
563
|
begin begin p = ((te))-1; end
|
543
564
|
emit_token.call(:INT) end
|
@@ -556,15 +577,21 @@ end
|
|
556
577
|
when 6 then
|
557
578
|
begin begin p = ((te))-1; end
|
558
579
|
emit_token.call(:FALSE) end
|
559
|
-
when
|
580
|
+
when 7 then
|
581
|
+
begin begin p = ((te))-1; end
|
582
|
+
emit_token.call(:NULL) end
|
583
|
+
when 15 then
|
560
584
|
begin begin p = ((te))-1; end
|
561
585
|
emit_string(ts + 1, te - 1, meta) end
|
562
|
-
when
|
586
|
+
when 21 then
|
563
587
|
begin begin p = ((te))-1; end
|
564
588
|
emit_token.call(:IDENTIFIER) end
|
589
|
+
when 25 then
|
590
|
+
begin begin p = ((te))-1; end
|
591
|
+
emit_token.call(:UNKNOWN_CHAR) end
|
565
592
|
end
|
566
593
|
end
|
567
|
-
# line
|
594
|
+
# line 595 "lib/graphql/language/lexer.rb"
|
568
595
|
end # action switch
|
569
596
|
end
|
570
597
|
end
|
@@ -584,21 +611,12 @@ when 0 then
|
|
584
611
|
# line 1 "NONE"
|
585
612
|
begin
|
586
613
|
ts = nil; end
|
587
|
-
|
588
|
-
# line 1 "NONE"
|
589
|
-
begin
|
590
|
-
act = 0
|
591
|
-
end
|
592
|
-
# line 593 "lib/graphql/language/lexer.rb"
|
614
|
+
# line 615 "lib/graphql/language/lexer.rb"
|
593
615
|
end # to state action switch
|
594
616
|
end
|
595
617
|
if _trigger_goto
|
596
618
|
next
|
597
619
|
end
|
598
|
-
if cs == 0
|
599
|
-
_goto_level = _out
|
600
|
-
next
|
601
|
-
end
|
602
620
|
p += 1
|
603
621
|
if p != pe
|
604
622
|
_goto_level = _resume
|
@@ -620,7 +638,7 @@ end
|
|
620
638
|
end
|
621
639
|
end
|
622
640
|
|
623
|
-
# line
|
641
|
+
# line 112 "lib/graphql/language/lexer.rl"
|
624
642
|
|
625
643
|
meta[:tokens]
|
626
644
|
end
|
@@ -653,14 +671,24 @@ end
|
|
653
671
|
|
654
672
|
def self.emit_string(ts, te, meta)
|
655
673
|
value = meta[:data][ts...te].pack("c*").force_encoding("UTF-8")
|
656
|
-
|
674
|
+
if value =~ /\\u|\\./ && value !~ ESCAPES
|
675
|
+
meta[:tokens] << GraphQL::Language::Token.new(
|
676
|
+
name: :BAD_UNICODE_ESCAPE,
|
677
|
+
value: value,
|
678
|
+
line: meta[:line],
|
679
|
+
col: meta[:col],
|
680
|
+
)
|
681
|
+
else
|
682
|
+
replace_escaped_characters_in_place(value)
|
683
|
+
|
684
|
+
meta[:tokens] << GraphQL::Language::Token.new(
|
685
|
+
name: :STRING,
|
686
|
+
value: value,
|
687
|
+
line: meta[:line],
|
688
|
+
col: meta[:col],
|
689
|
+
)
|
690
|
+
end
|
657
691
|
|
658
|
-
meta[:tokens] << GraphQL::Language::Token.new(
|
659
|
-
name: :STRING,
|
660
|
-
value: value,
|
661
|
-
line: meta[:line],
|
662
|
-
col: meta[:col],
|
663
|
-
)
|
664
692
|
meta[:col] += te - ts
|
665
693
|
end
|
666
694
|
end
|