graphql 1.8.0.pre1 → 1.8.0.pre2

Sign up to get free protection for your applications and to get access to all the features.
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)