graphql 1.9.13 → 1.9.14
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/generators/graphql/templates/graphql_controller.erb +5 -0
- data/lib/graphql/execution/interpreter/runtime.rb +3 -3
- data/lib/graphql/query/arguments.rb +2 -0
- data/lib/graphql/schema/printer.rb +3 -1
- data/lib/graphql/schema/validation.rb +16 -0
- data/lib/graphql/types.rb +1 -0
- data/lib/graphql/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 23da143cfa3964ded042927d8b52fa98598387b3ab471b2ae66a2d25282af9b4
|
4
|
+
data.tar.gz: e1a2924a847a05c1214b350bb316f093ab36a09b4be20c7e4cb66a2ee429058f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c354cc5db0bf2072f25adb3798c90e011b9998cbb287ec825bdcc2f4733070af552810e28e46045b0eace05b9c8db571823a84be5e770c0be76eeb44dcd499fd
|
7
|
+
data.tar.gz: 8d7d75c3dfa2b001e36d30554eaf313b3f489625519462e53fa7c479a1f0baf4fc7d4c27aec8cc78ceb9ef28dd7182bae61a6c2c768e8a30915657379c2832c7
|
@@ -1,4 +1,9 @@
|
|
1
1
|
class GraphqlController < ApplicationController
|
2
|
+
# If accessing from outside this domain, nullify the session
|
3
|
+
# This allows for outside API access while preventing CSRF attacks,
|
4
|
+
# but you'll have to authenticate your user separately
|
5
|
+
protect_from_forgery with: :null_session
|
6
|
+
|
2
7
|
def execute
|
3
8
|
variables = ensure_hash(params[:variables])
|
4
9
|
query = params[:query]
|
@@ -402,12 +402,12 @@ module GraphQL
|
|
402
402
|
@interpreter_context[:current_field] = field
|
403
403
|
# Wrap the execution of _this_ method with tracing,
|
404
404
|
# but don't wrap the continuation below
|
405
|
-
inner_obj =
|
406
|
-
|
405
|
+
inner_obj = begin
|
406
|
+
query.trace("execute_field_lazy", {owner: owner, field: field, path: path, query: query, object: owner_object, arguments: arguments}) do
|
407
407
|
schema.sync_lazy(lazy_obj)
|
408
|
+
end
|
408
409
|
rescue GraphQL::ExecutionError, GraphQL::UnauthorizedError => err
|
409
410
|
yield(err)
|
410
|
-
end
|
411
411
|
end
|
412
412
|
after_lazy(inner_obj, owner: owner, field: field, path: path, owner_object: owner_object, arguments: arguments, eager: eager) do |really_inner_obj|
|
413
413
|
yield(really_inner_obj)
|
@@ -60,7 +60,9 @@ module GraphQL
|
|
60
60
|
|
61
61
|
# Return the GraphQL schema string for the introspection type system
|
62
62
|
def self.print_introspection_schema
|
63
|
-
query_root = ObjectType.define(name: "Root")
|
63
|
+
query_root = ObjectType.define(name: "Root") do
|
64
|
+
field :throwaway_field, types.String
|
65
|
+
end
|
64
66
|
schema = GraphQL::Schema.define(query: query_root)
|
65
67
|
|
66
68
|
introspection_schema_ast = GraphQL::Language::DocumentFromSchemaDefinition.new(
|
@@ -77,6 +77,18 @@ module GraphQL
|
|
77
77
|
}
|
78
78
|
end
|
79
79
|
|
80
|
+
def self.count_at_least(item_name, minimum_count, get_items_proc)
|
81
|
+
->(type) {
|
82
|
+
items = get_items_proc.call(type)
|
83
|
+
|
84
|
+
if items.size < minimum_count
|
85
|
+
"#{type.name} must define at least #{minimum_count} #{item_name}. #{items.size} defined."
|
86
|
+
else
|
87
|
+
nil
|
88
|
+
end
|
89
|
+
}
|
90
|
+
end
|
91
|
+
|
80
92
|
def self.assert_named_items_are_valid(item_name, get_items_proc)
|
81
93
|
->(type) {
|
82
94
|
items = get_items_proc.call(type)
|
@@ -92,7 +104,9 @@ module GraphQL
|
|
92
104
|
}
|
93
105
|
end
|
94
106
|
|
107
|
+
HAS_AT_LEAST_ONE_FIELD = Rules.count_at_least("field", 1, ->(type) { type.all_fields })
|
95
108
|
FIELDS_ARE_VALID = Rules.assert_named_items_are_valid("field", ->(type) { type.all_fields })
|
109
|
+
HAS_AT_LEAST_ONE_ARGUMENT = Rules.count_at_least("argument", 1, ->(type) { type.arguments })
|
96
110
|
|
97
111
|
HAS_ONE_OR_MORE_POSSIBLE_TYPES = ->(type) {
|
98
112
|
type.possible_types.length >= 1 ? nil : "must have at least one possible type"
|
@@ -260,11 +274,13 @@ module GraphQL
|
|
260
274
|
Rules::DESCRIPTION_IS_STRING_OR_NIL,
|
261
275
|
],
|
262
276
|
GraphQL::ObjectType => [
|
277
|
+
Rules::HAS_AT_LEAST_ONE_FIELD,
|
263
278
|
Rules.assert_property_list_of(:interfaces, GraphQL::InterfaceType),
|
264
279
|
Rules::FIELDS_ARE_VALID,
|
265
280
|
Rules::INTERFACES_ARE_IMPLEMENTED,
|
266
281
|
],
|
267
282
|
GraphQL::InputObjectType => [
|
283
|
+
Rules::HAS_AT_LEAST_ONE_ARGUMENT,
|
268
284
|
Rules::ARGUMENTS_ARE_STRING_TO_ARGUMENT,
|
269
285
|
Rules::ARGUMENTS_ARE_VALID,
|
270
286
|
],
|
data/lib/graphql/types.rb
CHANGED
@@ -4,6 +4,7 @@ require "graphql/types/big_int"
|
|
4
4
|
require "graphql/types/float"
|
5
5
|
require "graphql/types/id"
|
6
6
|
require "graphql/types/int"
|
7
|
+
require "graphql/types/iso_8601_date"
|
7
8
|
require "graphql/types/iso_8601_date_time"
|
8
9
|
require "graphql/types/json"
|
9
10
|
require "graphql/types/string"
|
data/lib/graphql/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: graphql
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.9.
|
4
|
+
version: 1.9.14
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Robert Mosolgo
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-10-
|
11
|
+
date: 2019-10-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: benchmark-ips
|