graphql 2.2.3 → 2.2.5
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.
Potentially problematic release.
This version of graphql might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/lib/graphql/dataloader/async_dataloader.rb +33 -39
- data/lib/graphql/execution/interpreter/runtime.rb +1 -1
- data/lib/graphql/language/parser.rb +10 -1
- data/lib/graphql/schema/enum.rb +1 -1
- data/lib/graphql/version.rb +1 -1
- data/lib/graphql.rb +0 -1
- data/readme.md +12 -2
- metadata +4 -5
- data/lib/graphql/deprecation.rb +0 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 49aca16aba9ee96f9aa4229e07e5493b1e8c676a892a1fa1e9828323d44dc073
|
4
|
+
data.tar.gz: 95eec1c3808a12b28bcc2732bb13baf9d52ddf3f34c4971abf92f6cff3333e93
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 287acc2969a3b181d2d53dc94562335fac43de4cb8873844f063b63b604948e3edb7df318e53ec42906f678f7329efc5aa8d28bdbbfd4bc7f9d504a96f745df9
|
7
|
+
data.tar.gz: 3ef6c000a5eeaddd295786e9baf147663556cc19c1bc46facf57b67233bf40780e42b4781f39ebd3966ca29bc6bab6b682e9bd475b4c2474f471841454cb3d3c
|
@@ -3,69 +3,63 @@ module GraphQL
|
|
3
3
|
class Dataloader
|
4
4
|
class AsyncDataloader < Dataloader
|
5
5
|
def yield
|
6
|
-
Thread.current[:graphql_dataloader_next_tick]
|
6
|
+
if (condition = Thread.current[:graphql_dataloader_next_tick])
|
7
|
+
condition.wait
|
8
|
+
else
|
9
|
+
Fiber.yield
|
10
|
+
end
|
7
11
|
nil
|
8
12
|
end
|
9
13
|
|
10
14
|
def run
|
11
|
-
|
12
|
-
|
15
|
+
job_fibers = []
|
16
|
+
next_job_fibers = []
|
13
17
|
source_tasks = []
|
14
18
|
next_source_tasks = []
|
15
19
|
first_pass = true
|
16
|
-
jobs_condition = Async::Condition.new
|
17
20
|
sources_condition = Async::Condition.new
|
18
|
-
|
19
|
-
while first_pass ||
|
21
|
+
manager = spawn_fiber do
|
22
|
+
while first_pass || job_fibers.any?
|
20
23
|
first_pass = false
|
21
24
|
|
22
|
-
while (
|
23
|
-
if
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
# these jobs wait for sources as needed.
|
29
|
-
task.wait
|
25
|
+
while (f = (job_fibers.shift || spawn_job_fiber))
|
26
|
+
if f.alive?
|
27
|
+
finished = run_fiber(f)
|
28
|
+
if !finished
|
29
|
+
next_job_fibers << f
|
30
|
+
end
|
30
31
|
end
|
31
32
|
end
|
32
|
-
|
33
|
-
|
34
|
-
next_job_tasks.clear
|
33
|
+
job_fibers.concat(next_job_fibers)
|
34
|
+
next_job_fibers.clear
|
35
35
|
|
36
|
-
|
37
|
-
while
|
38
|
-
|
39
|
-
|
36
|
+
Sync do |root_task|
|
37
|
+
while source_tasks.any? || @source_cache.each_value.any? { |group_sources| group_sources.each_value.any?(&:pending?) }
|
38
|
+
while (task = source_tasks.shift || spawn_source_task(root_task, sources_condition))
|
39
|
+
if task.alive?
|
40
|
+
root_task.yield # give the source task a chance to run
|
41
|
+
next_source_tasks << task
|
42
|
+
end
|
40
43
|
end
|
44
|
+
sources_condition.signal
|
45
|
+
source_tasks.concat(next_source_tasks)
|
46
|
+
next_source_tasks.clear
|
41
47
|
end
|
42
|
-
root_task.yield # give source tasks a chance to run
|
43
|
-
sources_condition.signal
|
44
|
-
source_tasks.concat(next_source_tasks)
|
45
|
-
next_source_tasks.clear
|
46
48
|
end
|
47
|
-
jobs_condition.signal
|
48
49
|
end
|
49
50
|
end
|
51
|
+
|
52
|
+
manager.resume
|
53
|
+
if manager.alive?
|
54
|
+
raise "Invariant: Manager didn't terminate successfully: #{manager}"
|
55
|
+
end
|
56
|
+
|
50
57
|
rescue UncaughtThrowError => e
|
51
58
|
throw e.tag, e.value
|
52
59
|
end
|
53
60
|
|
54
61
|
private
|
55
62
|
|
56
|
-
def spawn_job_task(parent_task, condition)
|
57
|
-
if @pending_jobs.any?
|
58
|
-
fiber_vars = get_fiber_variables
|
59
|
-
parent_task.async do
|
60
|
-
set_fiber_variables(fiber_vars)
|
61
|
-
Thread.current[:graphql_dataloader_next_tick] = condition
|
62
|
-
while job = @pending_jobs.shift
|
63
|
-
job.call
|
64
|
-
end
|
65
|
-
end
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
69
63
|
def spawn_source_task(parent_task, condition)
|
70
64
|
pending_sources = nil
|
71
65
|
@source_cache.each_value do |source_by_batch_params|
|
@@ -513,7 +513,7 @@ module GraphQL
|
|
513
513
|
end
|
514
514
|
when Array
|
515
515
|
# It's an array full of execution errors; add them all.
|
516
|
-
if value.any? && value.all?
|
516
|
+
if value.any? && value.all?(GraphQL::ExecutionError)
|
517
517
|
list_type_at_all = (field && (field.type.list?))
|
518
518
|
if selection_result.nil? || !dead_result?(selection_result)
|
519
519
|
value.each_with_index do |error, index|
|
@@ -333,7 +333,7 @@ module GraphQL
|
|
333
333
|
v_loc = pos
|
334
334
|
description = if at?(:STRING); string_value; end
|
335
335
|
defn_loc = pos
|
336
|
-
enum_value =
|
336
|
+
enum_value = parse_enum_name
|
337
337
|
v_directives = parse_directives
|
338
338
|
list << EnumValueDefinition.new(pos: v_loc, definition_pos: defn_loc, description: description, name: enum_value, directives: v_directives, filename: @filename, source_string: @graphql_str)
|
339
339
|
end
|
@@ -566,6 +566,15 @@ module GraphQL
|
|
566
566
|
when :NULL
|
567
567
|
advance_token
|
568
568
|
"null"
|
569
|
+
when :ON
|
570
|
+
advance_token
|
571
|
+
"on"
|
572
|
+
when :DIRECTIVE
|
573
|
+
advance_token
|
574
|
+
"directive"
|
575
|
+
when :EXTEND
|
576
|
+
advance_token
|
577
|
+
"extend"
|
569
578
|
else
|
570
579
|
expect_token(:NAME)
|
571
580
|
end
|
data/lib/graphql/schema/enum.rb
CHANGED
data/lib/graphql/version.rb
CHANGED
data/lib/graphql.rb
CHANGED
data/readme.md
CHANGED
@@ -7,7 +7,7 @@ A Ruby implementation of [GraphQL](https://graphql.org/).
|
|
7
7
|
|
8
8
|
- [Website](https://graphql-ruby.org/)
|
9
9
|
- [API Documentation](https://www.rubydoc.info/github/rmosolgo/graphql-ruby)
|
10
|
-
- [Newsletter](https://
|
10
|
+
- [Newsletter](https://buttondown.email/graphql-ruby)
|
11
11
|
|
12
12
|
## Installation
|
13
13
|
|
@@ -34,7 +34,17 @@ Or, see ["Getting Started"](https://graphql-ruby.org/getting_started.html).
|
|
34
34
|
|
35
35
|
## Upgrade
|
36
36
|
|
37
|
-
I also sell [GraphQL::Pro](https://graphql.pro) which provides several features on top of the GraphQL runtime, including
|
37
|
+
I also sell [GraphQL::Pro](https://graphql.pro) which provides several features on top of the GraphQL runtime, including:
|
38
|
+
|
39
|
+
- [Persisted queries](https://graphql-ruby.org/operation_store/overview)
|
40
|
+
- [API versioning](https://graphql-ruby.org/changesets/overview)
|
41
|
+
- [Streaming payloads](https://graphql-ruby.org/defer/overview)
|
42
|
+
- [Server-side caching](https://graphql-ruby.org/object_cache/overview)
|
43
|
+
- [Rate limiters](https://graphql-ruby.org/limiters/overview)
|
44
|
+
- Subscriptions backends for [Pusher](https://graphql-ruby.org/subscriptions/pusher_implementation) and [Ably](https://graphql-ruby.org/subscriptions/ably_implementation)
|
45
|
+
- Authorization plugins for [Pundit](https://graphql-ruby.org/authorization/pundit_integration) and [CanCan](https://graphql-ruby.org/authorization/can_can_integration)
|
46
|
+
|
47
|
+
Besides that, Pro customers get email support and an opportunity to support graphql-ruby's development!
|
38
48
|
|
39
49
|
## Goals
|
40
50
|
|
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: 2.2.
|
4
|
+
version: 2.2.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Robert Mosolgo
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-01-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: racc
|
@@ -315,7 +315,6 @@ files:
|
|
315
315
|
- lib/graphql/dataloader/request_all.rb
|
316
316
|
- lib/graphql/dataloader/source.rb
|
317
317
|
- lib/graphql/date_encoding_error.rb
|
318
|
-
- lib/graphql/deprecation.rb
|
319
318
|
- lib/graphql/dig.rb
|
320
319
|
- lib/graphql/duration_encoding_error.rb
|
321
320
|
- lib/graphql/execution.rb
|
@@ -615,7 +614,7 @@ metadata:
|
|
615
614
|
changelog_uri: https://github.com/rmosolgo/graphql-ruby/blob/master/CHANGELOG.md
|
616
615
|
source_code_uri: https://github.com/rmosolgo/graphql-ruby
|
617
616
|
bug_tracker_uri: https://github.com/rmosolgo/graphql-ruby/issues
|
618
|
-
mailing_list_uri: https://
|
617
|
+
mailing_list_uri: https://buttondown.email/graphql-ruby
|
619
618
|
post_install_message:
|
620
619
|
rdoc_options: []
|
621
620
|
require_paths:
|
@@ -631,7 +630,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
631
630
|
- !ruby/object:Gem::Version
|
632
631
|
version: '0'
|
633
632
|
requirements: []
|
634
|
-
rubygems_version: 3.
|
633
|
+
rubygems_version: 3.4.10
|
635
634
|
signing_key:
|
636
635
|
specification_version: 4
|
637
636
|
summary: A GraphQL language and runtime for Ruby
|