graphql 1.8.0.pre1 → 1.8.0.pre2

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.
Files changed (82) hide show
  1. checksums.yaml +4 -4
  2. data/lib/generators/graphql/function_generator.rb +1 -1
  3. data/lib/generators/graphql/loader_generator.rb +1 -1
  4. data/lib/generators/graphql/mutation_generator.rb +6 -1
  5. data/lib/generators/graphql/templates/function.erb +2 -2
  6. data/lib/generators/graphql/templates/loader.erb +2 -2
  7. data/lib/graphql.rb +1 -0
  8. data/lib/graphql/execution.rb +1 -0
  9. data/lib/graphql/execution/instrumentation.rb +82 -0
  10. data/lib/graphql/execution/multiplex.rb +11 -28
  11. data/lib/graphql/field.rb +5 -0
  12. data/lib/graphql/internal_representation/node.rb +1 -1
  13. data/lib/graphql/language.rb +1 -0
  14. data/lib/graphql/language/document_from_schema_definition.rb +185 -0
  15. data/lib/graphql/language/lexer.rb +3 -3
  16. data/lib/graphql/language/lexer.rl +2 -2
  17. data/lib/graphql/language/token.rb +9 -2
  18. data/lib/graphql/query.rb +4 -0
  19. data/lib/graphql/railtie.rb +83 -0
  20. data/lib/graphql/relay/relation_connection.rb +13 -18
  21. data/lib/graphql/schema.rb +6 -0
  22. data/lib/graphql/schema/argument.rb +1 -1
  23. data/lib/graphql/schema/build_from_definition.rb +2 -0
  24. data/lib/graphql/schema/field.rb +5 -2
  25. data/lib/graphql/schema/input_object.rb +2 -2
  26. data/lib/graphql/schema/member.rb +10 -0
  27. data/lib/graphql/schema/member/build_type.rb +8 -0
  28. data/lib/graphql/schema/member/instrumentation.rb +3 -3
  29. data/lib/graphql/subscriptions/action_cable_subscriptions.rb +6 -4
  30. data/lib/graphql/tracing.rb +1 -0
  31. data/lib/graphql/tracing/data_dog_tracing.rb +45 -0
  32. data/lib/graphql/tracing/platform_tracing.rb +20 -7
  33. data/lib/graphql/upgrader/member.rb +111 -0
  34. data/lib/graphql/upgrader/schema.rb +37 -0
  35. data/lib/graphql/version.rb +1 -1
  36. data/readme.md +1 -1
  37. data/spec/dummy/app/channels/graphql_channel.rb +22 -1
  38. data/spec/dummy/log/development.log +239 -0
  39. data/spec/dummy/log/test.log +204 -0
  40. data/spec/dummy/test/system/action_cable_subscription_test.rb +4 -0
  41. data/spec/dummy/tmp/screenshots/failures_test_it_handles_subscriptions.png +0 -0
  42. data/spec/generators/graphql/function_generator_spec.rb +26 -0
  43. data/spec/generators/graphql/loader_generator_spec.rb +24 -0
  44. data/spec/graphql/analysis/max_query_complexity_spec.rb +3 -3
  45. data/spec/graphql/analysis/max_query_depth_spec.rb +3 -3
  46. data/spec/graphql/base_type_spec.rb +12 -0
  47. data/spec/graphql/boolean_type_spec.rb +3 -3
  48. data/spec/graphql/execution/execute_spec.rb +1 -1
  49. data/spec/graphql/execution/instrumentation_spec.rb +165 -0
  50. data/spec/graphql/execution/multiplex_spec.rb +1 -1
  51. data/spec/graphql/float_type_spec.rb +2 -2
  52. data/spec/graphql/id_type_spec.rb +1 -1
  53. data/spec/graphql/input_object_type_spec.rb +2 -2
  54. data/spec/graphql/int_type_spec.rb +2 -2
  55. data/spec/graphql/internal_representation/rewrite_spec.rb +2 -2
  56. data/spec/graphql/introspection/schema_type_spec.rb +1 -0
  57. data/spec/graphql/language/document_from_schema_definition_spec.rb +337 -0
  58. data/spec/graphql/language/lexer_spec.rb +12 -1
  59. data/spec/graphql/language/parser_spec.rb +1 -1
  60. data/spec/graphql/query/arguments_spec.rb +3 -3
  61. data/spec/graphql/query/variables_spec.rb +1 -1
  62. data/spec/graphql/query_spec.rb +4 -4
  63. data/spec/graphql/relay/base_connection_spec.rb +1 -1
  64. data/spec/graphql/relay/connection_resolve_spec.rb +1 -1
  65. data/spec/graphql/relay/connection_type_spec.rb +1 -1
  66. data/spec/graphql/relay/mutation_spec.rb +3 -3
  67. data/spec/graphql/relay/relation_connection_spec.rb +58 -0
  68. data/spec/graphql/schema/build_from_definition_spec.rb +14 -0
  69. data/spec/graphql/schema/field_spec.rb +5 -1
  70. data/spec/graphql/schema/instrumentation_spec.rb +39 -0
  71. data/spec/graphql/schema/validation_spec.rb +1 -1
  72. data/spec/graphql/schema/warden_spec.rb +11 -11
  73. data/spec/graphql/schema_spec.rb +8 -1
  74. data/spec/graphql/string_type_spec.rb +3 -3
  75. data/spec/graphql/subscriptions_spec.rb +1 -1
  76. data/spec/graphql/tracing/platform_tracing_spec.rb +59 -0
  77. data/spec/graphql/upgrader/member_spec.rb +222 -0
  78. data/spec/graphql/upgrader/schema_spec.rb +82 -0
  79. data/spec/support/dummy/schema.rb +19 -0
  80. data/spec/support/jazz.rb +14 -14
  81. data/spec/support/star_wars/data.rb +1 -2
  82. metadata +18 -2
@@ -12,8 +12,10 @@ module GraphQL
12
12
  attr_accessor :platform_keys
13
13
  end
14
14
 
15
- def initialize
15
+ def initialize(options = {})
16
+ @options = options
16
17
  @platform_keys = self.class.platform_keys
18
+ @trace_scalars = options.fetch(:trace_scalars, false)
17
19
  end
18
20
 
19
21
  def trace(key, data)
@@ -41,19 +43,30 @@ module GraphQL
41
43
  return_type = field.type.unwrap
42
44
  case return_type
43
45
  when GraphQL::ScalarType, GraphQL::EnumType
44
- field
46
+ if field.trace || (field.trace.nil? && @trace_scalars)
47
+ trace_field(type, field)
48
+ else
49
+ field
50
+ end
45
51
  else
46
- new_f = field.redefine
47
- new_f.metadata[:platform_key] = platform_field_key(type, field)
48
- new_f
52
+ trace_field(type, field)
49
53
  end
50
54
  end
51
55
 
52
- def self.use(schema_defn)
53
- tracer = self.new
56
+ def trace_field(type, field)
57
+ new_f = field.redefine
58
+ new_f.metadata[:platform_key] = platform_field_key(type, field)
59
+ new_f
60
+ end
61
+
62
+ def self.use(schema_defn, options = {})
63
+ tracer = self.new(options)
54
64
  schema_defn.instrument(:field, tracer)
55
65
  schema_defn.tracer(tracer)
56
66
  end
67
+
68
+ private
69
+ attr_reader :options
57
70
  end
58
71
  end
59
72
  end
@@ -0,0 +1,111 @@
1
+ # frozen_string_literal: true
2
+
3
+ module GraphQL
4
+ module Upgrader
5
+ class Member
6
+ def initialize(member)
7
+ @member = member
8
+ end
9
+
10
+ def upgrade
11
+ transformable = member.dup
12
+ transformable = transform_to_class transformable
13
+ transformable = transform_or_remove_name transformable
14
+ transformable = simplify_field_definition_for_easier_processing transformable
15
+ transformable = move_the_type_from_the_block_to_the_field transformable
16
+ transformable = rename_property_to_method transformable
17
+
18
+ transformable.scan(/(?:field|connection|argument) .*$/).each do |field|
19
+ field_regex = /(?<field_type>field|connection|argument) :(?<name>[a-zA-Z_0-9]*)?, (?<return_type>.*?)(?<thing>,|$|\})(?<remainder>.*)/
20
+
21
+ if (matches = field_regex.match(field))
22
+ name = matches[:name]
23
+ return_type = matches[:return_type]
24
+ remainder = matches[:remainder]
25
+ thing = matches[:thing]
26
+ field_type = matches[:field_type]
27
+
28
+ # This is a small bug in the regex. Ideally the `do` part would only be in the remainder.
29
+ with_block = remainder.gsub!(/\ do$/, '') || return_type.gsub!(/\ do$/, '')
30
+
31
+ nullable = !!(return_type.gsub! '!', '')
32
+ return_type.gsub! 'types.', ''
33
+ return_type.gsub! 'types[', '['
34
+
35
+ nullable_as_keyword = ", null: #{!nullable.to_s}"
36
+ connection_as_keyword = field_type == 'connection' ? ', connection: true' : ''
37
+ field_type = field_type == 'argument' ? 'argument' : 'field'
38
+
39
+ transformable.sub!(field) do
40
+ "#{field_type} :#{name}, #{return_type}#{thing}#{remainder}#{nullable_as_keyword}#{connection_as_keyword}#{with_block ? ' do' : ''}"
41
+ end
42
+ end
43
+ end
44
+
45
+ transformable
46
+ end
47
+
48
+ def upgradeable?
49
+ return false if member.include? '< GraphQL::Schema::'
50
+ return false if member.include? '< BaseObject'
51
+ return false if member.include? '< BaseInterface'
52
+ return false if member.include? '< BaseEnum'
53
+
54
+ true
55
+ end
56
+
57
+ private
58
+
59
+ def move_the_type_from_the_block_to_the_field(transformable)
60
+ transformable.gsub(
61
+ /(?<field>(?:field|connection|argument) :(?:[a-zA-Z_0-9]*)) do(?<block_contents>.*?)[ ]*type (?<return_type>.*?)\n/m
62
+ ) do
63
+ field = $~[:field]
64
+ block_contents = $~[:block_contents]
65
+ return_type = $~[:return_type]
66
+
67
+ "#{field}, #{return_type} do#{block_contents}"
68
+ end
69
+ end
70
+
71
+ def simplify_field_definition_for_easier_processing(transformable)
72
+ transformable.gsub(/(?<field>(?:field|connection|argument).*?),\n(\s*)(?<next_line>(:?"|field)(.*))/) do
73
+ field = $~[:field].chomp
74
+ next_line = $~[:next_line]
75
+
76
+ "#{field}, #{next_line}"
77
+ end
78
+ end
79
+
80
+ def transform_to_class(transformable)
81
+ transformable.sub(
82
+ /([a-zA-Z_0-9:]*) = GraphQL::(Object|Interface|Enum|Union)Type\.define do/, 'class \1 < Base\2'
83
+ )
84
+ end
85
+
86
+ def transform_or_remove_name(transformable)
87
+ if (matches = transformable.match(/class (?<type_name>[a-zA-Z_0-9]*) < Base(Object|Interface|Enum|Union)/))
88
+ type_name = matches[:type_name]
89
+ type_name_without_the_type_part = type_name.gsub(/Type$/, '')
90
+
91
+ if matches = transformable.match(/name ('|")(?<type_name>.*)('|")/)
92
+ name = matches[:type_name]
93
+ if type_name_without_the_type_part != name
94
+ transformable = transformable.sub(/name (.*)/, 'graphql_name \1')
95
+ else
96
+ transformable = transformable.sub(/\s*name ('|").*('|")/, '')
97
+ end
98
+ end
99
+ end
100
+
101
+ transformable
102
+ end
103
+
104
+ def rename_property_to_method(transformable)
105
+ transformable.gsub /property:/, 'method:'
106
+ end
107
+
108
+ attr_reader :member
109
+ end
110
+ end
111
+ end
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ module GraphQL
4
+ module Upgrader
5
+ class Schema
6
+ def initialize(schema)
7
+ @schema = schema
8
+ end
9
+
10
+ def upgrade
11
+ transformable = schema.dup
12
+
13
+ transformable.sub!(
14
+ /([a-zA-Z_0-9]*) = GraphQL::Schema\.define do/, 'class \1 < GraphQL::Schema'
15
+ )
16
+
17
+ transformable.sub!(
18
+ /object_from_id ->\s?\((.*)\) do/, 'def self.object_from_id(\1)'
19
+ )
20
+
21
+ transformable.sub!(
22
+ /resolve_type ->\s?\((.*)\) do/, 'def self.resolve_type(\1)'
23
+ )
24
+
25
+ transformable.sub!(
26
+ /id_from_object ->\s?\((.*)\) do/, 'def self.id_from_object(\1)'
27
+ )
28
+
29
+ transformable
30
+ end
31
+
32
+ private
33
+
34
+ attr_reader :schema
35
+ end
36
+ end
37
+ end
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module GraphQL
3
- VERSION = "1.8.0.pre1"
3
+ VERSION = "1.8.0.pre2"
4
4
  end
data/readme.md CHANGED
@@ -9,7 +9,7 @@
9
9
  A Ruby implementation of [GraphQL](http://graphql.org/).
10
10
 
11
11
  - [Website](https://rmosolgo.github.io/graphql-ruby)
12
- - [API Documentation](http://www.rubydoc.info/github/rmosolgo/graphql-ruby)
12
+ - [API Documentation](http://www.rubydoc.info/gems/graphql)
13
13
  - [Newsletter](https://tinyletter.com/graphql-ruby)
14
14
 
15
15
  ## Installation
@@ -17,10 +17,31 @@ class GraphqlChannel < ActionCable::Channel::Base
17
17
  field :value, types.Int
18
18
  end
19
19
 
20
+ # Wacky behavior around the number 4
21
+ # so we can confirm it's used by the UI
22
+ module CustomSerializer
23
+ def self.load(value)
24
+ if value == "4x"
25
+ ExamplePayload.new(400)
26
+ else
27
+ GraphQL::Subscriptions::Serialize.load(value)
28
+ end
29
+ end
30
+
31
+ def self.dump(obj)
32
+ if obj.is_a?(ExamplePayload) && obj.value == 4
33
+ "4x"
34
+ else
35
+ GraphQL::Subscriptions::Serialize.dump(obj)
36
+ end
37
+ end
38
+ end
39
+
20
40
  GraphQLSchema = GraphQL::Schema.define do
21
41
  query(QueryType)
22
42
  subscription(SubscriptionType)
23
- use GraphQL::Subscriptions::ActionCableSubscriptions
43
+ use GraphQL::Subscriptions::ActionCableSubscriptions,
44
+ serializer: CustomSerializer
24
45
  end
25
46
 
26
47
  def subscribed
@@ -358,3 +358,242 @@ GraphqlChannel#make_trigger({"id"=>"updates-2", "value"=>5})
358
358
  [ActionCable] Broadcasting to graphql-event::payload:id:updates-2: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzU\"}"
359
359
  [ActionCable] Broadcasting to graphql-subscription:c2334c1a-d146-4b1c-90d9-9cb1c7b4046d: {:result=>{"data"=>{"payload"=>{"value"=>5}}}, :more=>true}
360
360
  GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>5}}}, "more"=>true} (via streamed from graphql-subscription:c2334c1a-d146-4b1c-90d9-9cb1c7b4046d)
361
+ Started GET "/" for 127.0.0.1 at 2017-11-16 21:27:24 -0500
362
+ Processing by PagesController#show as HTML
363
+ Rendering pages/show.html within layouts/application
364
+ Rendered pages/show.html within layouts/application (0.8ms)
365
+ Completed 200 OK in 173ms (Views: 171.5ms)
366
+
367
+
368
+ Started GET "/assets/application-aca150c4b2db51d5326af18134f6281fbce7e823a372b0337cca65ff41b4a7ea.js" for 127.0.0.1 at 2017-11-16 21:27:24 -0500
369
+ Started GET "/cable" for 127.0.0.1 at 2017-11-16 21:27:24 -0500
370
+ Started GET "/cable/" [WebSocket] for 127.0.0.1 at 2017-11-16 21:27:24 -0500
371
+ Successfully upgraded to WebSocket (REQUEST_METHOD: GET, HTTP_CONNECTION: Upgrade, HTTP_UPGRADE: websocket)
372
+ GraphqlChannel is transmitting the subscription confirmation
373
+ GraphqlChannel is transmitting the subscription confirmation
374
+ GraphqlChannel#execute({"query"=>"subscription($id: ID!) { payload(id: $id) { value } }", "variables"=>{"id"=>"updates-2"}})
375
+ GraphqlChannel transmitting {:result=>{"data"=>nil}, :more=>true}
376
+ GraphqlChannel is streaming from graphql-subscription:34ad7c3f-9311-4982-b873-312032bbcd76
377
+ GraphqlChannel#execute({"query"=>"subscription($id: ID!) { payload(id: $id) { value } }", "variables"=>{"id"=>"updates-1"}})
378
+ GraphqlChannel transmitting {:result=>{"data"=>nil}, :more=>true}
379
+ GraphqlChannel is streaming from graphql-event::payload:id:updates-2
380
+ GraphqlChannel is streaming from graphql-subscription:73055d69-7575-4caa-88b7-74e1a1070c0d
381
+ GraphqlChannel is streaming from graphql-event::payload:id:updates-1
382
+ GraphqlChannel#make_trigger({"id"=>"updates-1", "value"=>1})
383
+ Could not execute command from ({"command"=>"message", "identifier"=>"{\"channel\":\"GraphqlChannel\",\"id\":\"15fc7cd712b\"}", "data"=>"{\"id\":\"updates-1\",\"value\":1,\"action\":\"make_trigger\"}"}) [NoMethodError - undefined method `dump_value' for GraphqlChannel::CustomSerializer:Module]: /Users/rmosolgo/code/graphql-ruby/lib/graphql/subscriptions/serialize.rb:21:in `dump' | /Users/rmosolgo/code/graphql-ruby/spec/dummy/app/channels/graphql_channel.rb:36:in `dump' | /Users/rmosolgo/code/graphql-ruby/lib/graphql/subscriptions/action_cable_subscriptions.rb:78:in `execute_all' | /Users/rmosolgo/code/graphql-ruby/lib/graphql/subscriptions.rb:52:in `trigger' | /Users/rmosolgo/code/graphql-ruby/spec/dummy/app/channels/graphql_channel.rb:83:in `make_trigger'
384
+ Started GET "/" for 127.0.0.1 at 2017-11-16 21:28:22 -0500
385
+ Processing by PagesController#show as HTML
386
+ Rendering pages/show.html within layouts/application
387
+ Rendered pages/show.html within layouts/application (0.6ms)
388
+ Completed 200 OK in 166ms (Views: 164.8ms)
389
+
390
+
391
+ Started GET "/cable" for 127.0.0.1 at 2017-11-16 21:28:23 -0500
392
+ Started GET "/cable/" [WebSocket] for 127.0.0.1 at 2017-11-16 21:28:23 -0500
393
+ Successfully upgraded to WebSocket (REQUEST_METHOD: GET, HTTP_CONNECTION: Upgrade, HTTP_UPGRADE: websocket)
394
+ GraphqlChannel is transmitting the subscription confirmation
395
+ GraphqlChannel is transmitting the subscription confirmation
396
+ GraphqlChannel#execute({"query"=>"subscription($id: ID!) { payload(id: $id) { value } }", "variables"=>{"id"=>"updates-2"}})
397
+ GraphqlChannel transmitting {:result=>{"data"=>nil}, :more=>true}
398
+ GraphqlChannel#execute({"query"=>"subscription($id: ID!) { payload(id: $id) { value } }", "variables"=>{"id"=>"updates-1"}})
399
+ GraphqlChannel is streaming from graphql-subscription:dee02509-90a6-4ac1-8c1d-c765cb445ddd
400
+ GraphqlChannel transmitting {:result=>{"data"=>nil}, :more=>true}
401
+ GraphqlChannel is streaming from graphql-event::payload:id:updates-2
402
+ GraphqlChannel is streaming from graphql-subscription:0f50c340-d3cd-4ab7-8e6a-055d23083185
403
+ GraphqlChannel is streaming from graphql-event::payload:id:updates-1
404
+ GraphqlChannel#make_trigger({"id"=>"updates-1", "value"=>1})
405
+ Could not execute command from ({"command"=>"message", "identifier"=>"{\"channel\":\"GraphqlChannel\",\"id\":\"15fc7cf7d8b\"}", "data"=>"{\"id\":\"updates-1\",\"value\":1,\"action\":\"make_trigger\"}"}) [NameError - undefined local variable or method `value' for GraphqlChannel::CustomSerializer:Module]: /Users/rmosolgo/code/graphql-ruby/spec/dummy/app/channels/graphql_channel.rb:35:in `dump' | /Users/rmosolgo/code/graphql-ruby/lib/graphql/subscriptions/action_cable_subscriptions.rb:78:in `execute_all' | /Users/rmosolgo/code/graphql-ruby/lib/graphql/subscriptions.rb:52:in `trigger' | /Users/rmosolgo/code/graphql-ruby/spec/dummy/app/channels/graphql_channel.rb:82:in `make_trigger' | /Users/rmosolgo/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/actioncable-5.1.4/lib/action_cable/channel/base.rb:262:in `public_send'
406
+ Started GET "/" for 127.0.0.1 at 2017-11-16 21:28:40 -0500
407
+ Processing by PagesController#show as HTML
408
+ Rendering pages/show.html within layouts/application
409
+ Rendered pages/show.html within layouts/application (0.6ms)
410
+ Completed 200 OK in 11ms (Views: 8.8ms)
411
+
412
+
413
+ Started GET "/cable" for 127.0.0.1 at 2017-11-16 21:28:40 -0500
414
+ Started GET "/cable/" [WebSocket] for 127.0.0.1 at 2017-11-16 21:28:40 -0500
415
+ Successfully upgraded to WebSocket (REQUEST_METHOD: GET, HTTP_CONNECTION: Upgrade, HTTP_UPGRADE: websocket)
416
+ GraphqlChannel is transmitting the subscription confirmation
417
+ GraphqlChannel is transmitting the subscription confirmation
418
+ GraphqlChannel#execute({"query"=>"subscription($id: ID!) { payload(id: $id) { value } }", "variables"=>{"id"=>"updates-2"}})
419
+ GraphqlChannel transmitting {:result=>{"data"=>nil}, :more=>true}
420
+ GraphqlChannel is streaming from graphql-subscription:528198ff-21c1-4051-a319-1feb9060f335
421
+ GraphqlChannel is streaming from graphql-event::payload:id:updates-2
422
+ GraphqlChannel#execute({"query"=>"subscription($id: ID!) { payload(id: $id) { value } }", "variables"=>{"id"=>"updates-1"}})
423
+ GraphqlChannel transmitting {:result=>{"data"=>nil}, :more=>true}
424
+ GraphqlChannel is streaming from graphql-event::payload:id:updates-1
425
+ GraphqlChannel is streaming from graphql-subscription:dba8445d-3284-4734-90f6-fdf8f0707a50
426
+ GraphqlChannel#make_trigger({"id"=>"updates-1", "value"=>1})
427
+ [ActionCable] Broadcasting to graphql-event::payload:id:updates-1: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzE\"}"
428
+ [ActionCable] Broadcasting to graphql-subscription:dba8445d-3284-4734-90f6-fdf8f0707a50: {:result=>{"data"=>{"payload"=>{"value"=>1}}}, :more=>true}
429
+ GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>1}}}, "more"=>true} (via streamed from graphql-subscription:dba8445d-3284-4734-90f6-fdf8f0707a50)
430
+ GraphqlChannel#make_trigger({"id"=>"updates-1", "value"=>2})
431
+ [ActionCable] Broadcasting to graphql-event::payload:id:updates-1: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzI\"}"
432
+ [ActionCable] Broadcasting to graphql-subscription:dba8445d-3284-4734-90f6-fdf8f0707a50: {:result=>{"data"=>{"payload"=>{"value"=>2}}}, :more=>true}
433
+ GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>2}}}, "more"=>true} (via streamed from graphql-subscription:dba8445d-3284-4734-90f6-fdf8f0707a50)
434
+ GraphqlChannel#make_trigger({"id"=>"updates-1", "value"=>3})
435
+ [ActionCable] Broadcasting to graphql-event::payload:id:updates-1: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzM\"}"
436
+ [ActionCable] Broadcasting to graphql-subscription:dba8445d-3284-4734-90f6-fdf8f0707a50: {:result=>{"data"=>{"payload"=>{"value"=>3}}}, :more=>true}
437
+ GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>3}}}, "more"=>true} (via streamed from graphql-subscription:dba8445d-3284-4734-90f6-fdf8f0707a50)
438
+ GraphqlChannel#make_trigger({"id"=>"updates-1", "value"=>4})
439
+ [ActionCable] Broadcasting to graphql-event::payload:id:updates-1: "4x"
440
+ [ActionCable] Broadcasting to graphql-subscription:dba8445d-3284-4734-90f6-fdf8f0707a50: {:result=>{"data"=>{"payload"=>{"value"=>4}}}, :more=>true}
441
+ GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>4}}}, "more"=>true} (via streamed from graphql-subscription:dba8445d-3284-4734-90f6-fdf8f0707a50)
442
+ GraphqlChannel#make_trigger({"id"=>"updates-1", "value"=>5})
443
+ [ActionCable] Broadcasting to graphql-event::payload:id:updates-1: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzU\"}"
444
+ [ActionCable] Broadcasting to graphql-subscription:dba8445d-3284-4734-90f6-fdf8f0707a50: {:result=>{"data"=>{"payload"=>{"value"=>5}}}, :more=>true}
445
+ GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>5}}}, "more"=>true} (via streamed from graphql-subscription:dba8445d-3284-4734-90f6-fdf8f0707a50)
446
+ Started GET "/" for 127.0.0.1 at 2017-11-16 21:29:15 -0500
447
+ Processing by PagesController#show as HTML
448
+ Rendering pages/show.html within layouts/application
449
+ Rendered pages/show.html within layouts/application (0.8ms)
450
+ Completed 200 OK in 178ms (Views: 176.8ms)
451
+
452
+
453
+ Started GET "/cable" for 127.0.0.1 at 2017-11-16 21:29:15 -0500
454
+ Started GET "/cable/" [WebSocket] for 127.0.0.1 at 2017-11-16 21:29:15 -0500
455
+ Successfully upgraded to WebSocket (REQUEST_METHOD: GET, HTTP_CONNECTION: Upgrade, HTTP_UPGRADE: websocket)
456
+ GraphqlChannel is transmitting the subscription confirmation
457
+ GraphqlChannel is transmitting the subscription confirmation
458
+ GraphqlChannel#execute({"query"=>"subscription($id: ID!) { payload(id: $id) { value } }", "variables"=>{"id"=>"updates-1"}})
459
+ GraphqlChannel transmitting {:result=>{"data"=>nil}, :more=>true}
460
+ GraphqlChannel#execute({"query"=>"subscription($id: ID!) { payload(id: $id) { value } }", "variables"=>{"id"=>"updates-2"}})
461
+ GraphqlChannel is streaming from graphql-event::payload:id:updates-1
462
+ GraphqlChannel transmitting {:result=>{"data"=>nil}, :more=>true}
463
+ GraphqlChannel is streaming from graphql-subscription:ac17fc47-fdf3-4951-813b-f4d04fdc7847
464
+ GraphqlChannel is streaming from graphql-event::payload:id:updates-2
465
+ GraphqlChannel is streaming from graphql-subscription:8642d019-1a8c-4eb9-ada2-7a5b1ccffeee
466
+ GraphqlChannel#make_trigger({"id"=>"updates-1", "value"=>1})
467
+ [ActionCable] Broadcasting to graphql-event::payload:id:updates-1: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzE\"}"
468
+ [ActionCable] Broadcasting to graphql-subscription:ac17fc47-fdf3-4951-813b-f4d04fdc7847: {:result=>{"data"=>{"payload"=>{"value"=>1}}}, :more=>true}
469
+ GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>1}}}, "more"=>true} (via streamed from graphql-subscription:ac17fc47-fdf3-4951-813b-f4d04fdc7847)
470
+ GraphqlChannel#make_trigger({"id"=>"updates-1", "value"=>2})
471
+ [ActionCable] Broadcasting to graphql-event::payload:id:updates-1: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzI\"}"
472
+ [ActionCable] Broadcasting to graphql-subscription:ac17fc47-fdf3-4951-813b-f4d04fdc7847: {:result=>{"data"=>{"payload"=>{"value"=>2}}}, :more=>true}
473
+ GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>2}}}, "more"=>true} (via streamed from graphql-subscription:ac17fc47-fdf3-4951-813b-f4d04fdc7847)
474
+ GraphqlChannel#make_trigger({"id"=>"updates-1", "value"=>3})
475
+ [ActionCable] Broadcasting to graphql-event::payload:id:updates-1: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzM\"}"
476
+ [ActionCable] Broadcasting to graphql-subscription:ac17fc47-fdf3-4951-813b-f4d04fdc7847: {:result=>{"data"=>{"payload"=>{"value"=>3}}}, :more=>true}
477
+ GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>3}}}, "more"=>true} (via streamed from graphql-subscription:ac17fc47-fdf3-4951-813b-f4d04fdc7847)
478
+ GraphqlChannel#make_trigger({"id"=>"updates-1", "value"=>4})
479
+ [ActionCable] Broadcasting to graphql-event::payload:id:updates-1: "4x"
480
+ [ActionCable] Broadcasting to graphql-subscription:ac17fc47-fdf3-4951-813b-f4d04fdc7847: {:result=>{"data"=>{"payload"=>{"value"=>4}}}, :more=>true}
481
+ GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>4}}}, "more"=>true} (via streamed from graphql-subscription:ac17fc47-fdf3-4951-813b-f4d04fdc7847)
482
+ GraphqlChannel#make_trigger({"id"=>"updates-1", "value"=>5})
483
+ [ActionCable] Broadcasting to graphql-event::payload:id:updates-1: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzU\"}"
484
+ [ActionCable] Broadcasting to graphql-subscription:ac17fc47-fdf3-4951-813b-f4d04fdc7847: {:result=>{"data"=>{"payload"=>{"value"=>5}}}, :more=>true}
485
+ GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>5}}}, "more"=>true} (via streamed from graphql-subscription:ac17fc47-fdf3-4951-813b-f4d04fdc7847)
486
+ GraphqlChannel#make_trigger({"id"=>"updates-1", "value"=>6})
487
+ [ActionCable] Broadcasting to graphql-event::payload:id:updates-1: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzY\"}"
488
+ [ActionCable] Broadcasting to graphql-subscription:ac17fc47-fdf3-4951-813b-f4d04fdc7847: {:result=>{"data"=>{"payload"=>{"value"=>6}}}, :more=>true}
489
+ GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>6}}}, "more"=>true} (via streamed from graphql-subscription:ac17fc47-fdf3-4951-813b-f4d04fdc7847)
490
+ GraphqlChannel#make_trigger({"id"=>"updates-2", "value"=>1})
491
+ [ActionCable] Broadcasting to graphql-event::payload:id:updates-2: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzE\"}"
492
+ [ActionCable] Broadcasting to graphql-subscription:8642d019-1a8c-4eb9-ada2-7a5b1ccffeee: {:result=>{"data"=>{"payload"=>{"value"=>1}}}, :more=>true}
493
+ GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>1}}}, "more"=>true} (via streamed from graphql-subscription:8642d019-1a8c-4eb9-ada2-7a5b1ccffeee)
494
+ GraphqlChannel#make_trigger({"id"=>"updates-2", "value"=>2})
495
+ [ActionCable] Broadcasting to graphql-event::payload:id:updates-2: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzI\"}"
496
+ [ActionCable] Broadcasting to graphql-subscription:8642d019-1a8c-4eb9-ada2-7a5b1ccffeee: {:result=>{"data"=>{"payload"=>{"value"=>2}}}, :more=>true}
497
+ GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>2}}}, "more"=>true} (via streamed from graphql-subscription:8642d019-1a8c-4eb9-ada2-7a5b1ccffeee)
498
+ GraphqlChannel#make_trigger({"id"=>"updates-2", "value"=>3})
499
+ [ActionCable] Broadcasting to graphql-event::payload:id:updates-2: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzM\"}"
500
+ [ActionCable] Broadcasting to graphql-subscription:8642d019-1a8c-4eb9-ada2-7a5b1ccffeee: {:result=>{"data"=>{"payload"=>{"value"=>3}}}, :more=>true}
501
+ GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>3}}}, "more"=>true} (via streamed from graphql-subscription:8642d019-1a8c-4eb9-ada2-7a5b1ccffeee)
502
+ GraphqlChannel#make_trigger({"id"=>"updates-2", "value"=>4})
503
+ [ActionCable] Broadcasting to graphql-event::payload:id:updates-2: "4x"
504
+ [ActionCable] Broadcasting to graphql-subscription:8642d019-1a8c-4eb9-ada2-7a5b1ccffeee: {:result=>{"data"=>{"payload"=>{"value"=>4}}}, :more=>true}
505
+ GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>4}}}, "more"=>true} (via streamed from graphql-subscription:8642d019-1a8c-4eb9-ada2-7a5b1ccffeee)
506
+ Started GET "/" for 127.0.0.1 at 2017-11-16 21:30:10 -0500
507
+ Processing by PagesController#show as HTML
508
+ Rendering pages/show.html within layouts/application
509
+ Rendered pages/show.html within layouts/application (0.7ms)
510
+ Completed 200 OK in 12ms (Views: 10.1ms)
511
+
512
+
513
+ Started GET "/cable" for 127.0.0.1 at 2017-11-16 21:30:10 -0500
514
+ Started GET "/cable/" [WebSocket] for 127.0.0.1 at 2017-11-16 21:30:10 -0500
515
+ Successfully upgraded to WebSocket (REQUEST_METHOD: GET, HTTP_CONNECTION: Upgrade, HTTP_UPGRADE: websocket)
516
+ GraphqlChannel is transmitting the subscription confirmation
517
+ GraphqlChannel is transmitting the subscription confirmation
518
+ GraphqlChannel#execute({"query"=>"subscription($id: ID!) { payload(id: $id) { value } }", "variables"=>{"id"=>"updates-2"}})
519
+ GraphqlChannel transmitting {:result=>{"data"=>nil}, :more=>true}
520
+ GraphqlChannel#execute({"query"=>"subscription($id: ID!) { payload(id: $id) { value } }", "variables"=>{"id"=>"updates-1"}})
521
+ GraphqlChannel transmitting {:result=>{"data"=>nil}, :more=>true}
522
+ GraphqlChannel is streaming from graphql-subscription:e33017bd-68e0-4443-81b9-cb2b750d345e
523
+ GraphqlChannel is streaming from graphql-event::payload:id:updates-2
524
+ GraphqlChannel is streaming from graphql-subscription:ff9f5a68-c71c-4b5c-8135-cb902840a584
525
+ GraphqlChannel is streaming from graphql-event::payload:id:updates-1
526
+ GraphqlChannel#make_trigger({"id"=>"updates-1", "value"=>1})
527
+ dumping: #<GraphqlChannel::ExamplePayload:0x007fc09dee35f8>
528
+ [ActionCable] Broadcasting to graphql-event::payload:id:updates-1: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzE\"}"
529
+ Loading: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzE\"}"
530
+ [ActionCable] Broadcasting to graphql-subscription:ff9f5a68-c71c-4b5c-8135-cb902840a584: {:result=>{"data"=>{"payload"=>{"value"=>1}}}, :more=>true}
531
+ GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>1}}}, "more"=>true} (via streamed from graphql-subscription:ff9f5a68-c71c-4b5c-8135-cb902840a584)
532
+ GraphqlChannel#make_trigger({"id"=>"updates-1", "value"=>2})
533
+ dumping: #<GraphqlChannel::ExamplePayload:0x007fc09deb3330>
534
+ [ActionCable] Broadcasting to graphql-event::payload:id:updates-1: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzI\"}"
535
+ Loading: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzI\"}"
536
+ [ActionCable] Broadcasting to graphql-subscription:ff9f5a68-c71c-4b5c-8135-cb902840a584: {:result=>{"data"=>{"payload"=>{"value"=>2}}}, :more=>true}
537
+ GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>2}}}, "more"=>true} (via streamed from graphql-subscription:ff9f5a68-c71c-4b5c-8135-cb902840a584)
538
+ GraphqlChannel#make_trigger({"id"=>"updates-1", "value"=>3})
539
+ dumping: #<GraphqlChannel::ExamplePayload:0x007fc09de7b020>
540
+ [ActionCable] Broadcasting to graphql-event::payload:id:updates-1: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzM\"}"
541
+ Loading: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzM\"}"
542
+ [ActionCable] Broadcasting to graphql-subscription:ff9f5a68-c71c-4b5c-8135-cb902840a584: {:result=>{"data"=>{"payload"=>{"value"=>3}}}, :more=>true}
543
+ GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>3}}}, "more"=>true} (via streamed from graphql-subscription:ff9f5a68-c71c-4b5c-8135-cb902840a584)
544
+ GraphqlChannel#make_trigger({"id"=>"updates-1", "value"=>4})
545
+ dumping: #<GraphqlChannel::ExamplePayload:0x007fc09de41f78>
546
+ [ActionCable] Broadcasting to graphql-event::payload:id:updates-1: "4x"
547
+ Loading: "4x"
548
+ [ActionCable] Broadcasting to graphql-subscription:ff9f5a68-c71c-4b5c-8135-cb902840a584: {:result=>{"data"=>{"payload"=>{"value"=>4}}}, :more=>true}
549
+ GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>4}}}, "more"=>true} (via streamed from graphql-subscription:ff9f5a68-c71c-4b5c-8135-cb902840a584)
550
+ Started GET "/" for 127.0.0.1 at 2017-11-16 21:30:26 -0500
551
+ Processing by PagesController#show as HTML
552
+ Rendering pages/show.html within layouts/application
553
+ Rendered pages/show.html within layouts/application (0.3ms)
554
+ Completed 200 OK in 7ms (Views: 5.4ms)
555
+
556
+
557
+ Started GET "/cable" for 127.0.0.1 at 2017-11-16 21:30:27 -0500
558
+ Started GET "/cable/" [WebSocket] for 127.0.0.1 at 2017-11-16 21:30:27 -0500
559
+ Successfully upgraded to WebSocket (REQUEST_METHOD: GET, HTTP_CONNECTION: Upgrade, HTTP_UPGRADE: websocket)
560
+ GraphqlChannel is transmitting the subscription confirmation
561
+ GraphqlChannel is transmitting the subscription confirmation
562
+ GraphqlChannel#execute({"query"=>"subscription($id: ID!) { payload(id: $id) { value } }", "variables"=>{"id"=>"updates-2"}})
563
+ GraphqlChannel transmitting {:result=>{"data"=>nil}, :more=>true}
564
+ GraphqlChannel#execute({"query"=>"subscription($id: ID!) { payload(id: $id) { value } }", "variables"=>{"id"=>"updates-1"}})
565
+ GraphqlChannel is streaming from graphql-event::payload:id:updates-2
566
+ GraphqlChannel transmitting {:result=>{"data"=>nil}, :more=>true}
567
+ GraphqlChannel is streaming from graphql-subscription:ba2e384c-cbcf-4f9f-aa5e-8f666effd2a8
568
+ GraphqlChannel is streaming from graphql-subscription:18c8f852-04c7-4bb8-b6f7-ecc64a2a8ac9
569
+ GraphqlChannel is streaming from graphql-event::payload:id:updates-1
570
+ GraphqlChannel#make_trigger({"id"=>"updates-1", "value"=>1})
571
+ dumping: #<GraphqlChannel::ExamplePayload:0x007fc09e9fc660>
572
+ [ActionCable] Broadcasting to graphql-event::payload:id:updates-1: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzE\"}"
573
+ Loading: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzE\"}"
574
+ [ActionCable] Broadcasting to graphql-subscription:18c8f852-04c7-4bb8-b6f7-ecc64a2a8ac9: {:result=>{"data"=>{"payload"=>{"value"=>1}}}, :more=>true}
575
+ GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>1}}}, "more"=>true} (via streamed from graphql-subscription:18c8f852-04c7-4bb8-b6f7-ecc64a2a8ac9)
576
+ GraphqlChannel#make_trigger({"id"=>"updates-1", "value"=>2})
577
+ dumping: #<GraphqlChannel::ExamplePayload:0x007fc09dced938>
578
+ [ActionCable] Broadcasting to graphql-event::payload:id:updates-1: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzI\"}"
579
+ Loading: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzI\"}"
580
+ [ActionCable] Broadcasting to graphql-subscription:18c8f852-04c7-4bb8-b6f7-ecc64a2a8ac9: {:result=>{"data"=>{"payload"=>{"value"=>2}}}, :more=>true}
581
+ GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>2}}}, "more"=>true} (via streamed from graphql-subscription:18c8f852-04c7-4bb8-b6f7-ecc64a2a8ac9)
582
+ GraphqlChannel#make_trigger({"id"=>"updates-1", "value"=>3})
583
+ dumping: #<GraphqlChannel::ExamplePayload:0x007fc09e8c41d0>
584
+ [ActionCable] Broadcasting to graphql-event::payload:id:updates-1: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzM\"}"
585
+ Loading: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzM\"}"
586
+ [ActionCable] Broadcasting to graphql-subscription:18c8f852-04c7-4bb8-b6f7-ecc64a2a8ac9: {:result=>{"data"=>{"payload"=>{"value"=>3}}}, :more=>true}
587
+ GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>3}}}, "more"=>true} (via streamed from graphql-subscription:18c8f852-04c7-4bb8-b6f7-ecc64a2a8ac9)
588
+ GraphqlChannel#make_trigger({"id"=>"updates-1", "value"=>4})
589
+ dumping: #<GraphqlChannel::ExamplePayload:0x007fc09d407ad0>
590
+ [ActionCable] Broadcasting to graphql-event::payload:id:updates-1: "4x"
591
+ Loading: "4x"
592
+ [ActionCable] Broadcasting to graphql-subscription:18c8f852-04c7-4bb8-b6f7-ecc64a2a8ac9: {:result=>{"data"=>{"payload"=>{"value"=>400}}}, :more=>true}
593
+ GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>400}}}, "more"=>true} (via streamed from graphql-subscription:18c8f852-04c7-4bb8-b6f7-ecc64a2a8ac9)
594
+ GraphqlChannel#make_trigger({"id"=>"updates-1", "value"=>5})
595
+ dumping: #<GraphqlChannel::ExamplePayload:0x007fc09dbbf250>
596
+ [ActionCable] Broadcasting to graphql-event::payload:id:updates-1: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzU\"}"
597
+ Loading: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzU\"}"
598
+ [ActionCable] Broadcasting to graphql-subscription:18c8f852-04c7-4bb8-b6f7-ecc64a2a8ac9: {:result=>{"data"=>{"payload"=>{"value"=>5}}}, :more=>true}
599
+ GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>5}}}, "more"=>true} (via streamed from graphql-subscription:18c8f852-04c7-4bb8-b6f7-ecc64a2a8ac9)