graphql 0.13.0 → 0.14.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/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
|