isomorfeus-operation 1.0.0.zeta23 → 2.0.0.rc2
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/LICENSE +21 -21
- data/README.md +16 -16
- data/lib/isomorfeus/operation/config.rb +29 -29
- data/lib/isomorfeus/operation/handler/operation_handler.rb +65 -65
- data/lib/isomorfeus/operation/version.rb +5 -5
- data/lib/isomorfeus-operation.rb +29 -27
- data/lib/isomorfeus_operation/lucid_local_operation/base.rb +9 -10
- data/lib/isomorfeus_operation/lucid_local_operation/mixin.rb +35 -35
- data/lib/isomorfeus_operation/lucid_operation/base.rb +10 -11
- data/lib/isomorfeus_operation/lucid_operation/gherkin.rb +63 -63
- data/lib/isomorfeus_operation/lucid_operation/mixin.rb +95 -96
- data/lib/isomorfeus_operation/lucid_operation/promise_run.rb +67 -67
- data/lib/isomorfeus_operation/lucid_operation/steps.rb +58 -58
- data/lib/isomorfeus_operation/lucid_quick_op/base.rb +10 -11
- data/lib/isomorfeus_operation/lucid_quick_op/mixin.rb +80 -81
- metadata +38 -38
@@ -1,96 +1,95 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module LucidOperation
|
4
|
-
module Mixin
|
5
|
-
def self.included(base)
|
6
|
-
base.extend(LucidPropDeclaration::Mixin)
|
7
|
-
|
8
|
-
if RUBY_ENGINE == 'opal'
|
9
|
-
base.instance_exec do
|
10
|
-
def procedure(gherkin_text)
|
11
|
-
end
|
12
|
-
|
13
|
-
def steps
|
14
|
-
end
|
15
|
-
alias :gherkin :steps
|
16
|
-
alias :ensure_steps :steps
|
17
|
-
alias :failure_steps :steps
|
18
|
-
alias :Given :steps
|
19
|
-
alias :And :steps
|
20
|
-
alias :Then :steps
|
21
|
-
alias :When :steps
|
22
|
-
alias :Ensure :steps
|
23
|
-
alias :Failed :steps
|
24
|
-
alias :If_failing :steps
|
25
|
-
alias :When_failing :steps
|
26
|
-
alias :If_this_failed :steps
|
27
|
-
alias :If_that_failed :steps
|
28
|
-
|
29
|
-
def First(regular_expression, &block)
|
30
|
-
Isomorfeus.raise_error(message: "#{self}: First already defined, can only be defined once!") if @first_defined
|
31
|
-
@first_defined = true
|
32
|
-
end
|
33
|
-
|
34
|
-
def Finally(regular_expression, &block)
|
35
|
-
Isomorfeus.raise_error(message: "#{self}: Finally already defined, can only be defined once!") if @finally_defined
|
36
|
-
@finally_defined = true
|
37
|
-
end
|
38
|
-
|
39
|
-
def promise_run(**props_hash)
|
40
|
-
props = validated_props(props_hash)
|
41
|
-
Isomorfeus::Transport.promise_send_path('Isomorfeus::Operation::Handler::OperationHandler', self.name, props).then do |agent|
|
42
|
-
unless agent.processed
|
43
|
-
agent.processed = true
|
44
|
-
if agent.response.key?(:error)
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
exception
|
56
|
-
exception
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
base.
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module LucidOperation
|
4
|
+
module Mixin
|
5
|
+
def self.included(base)
|
6
|
+
base.extend(LucidPropDeclaration::Mixin)
|
7
|
+
|
8
|
+
if RUBY_ENGINE == 'opal'
|
9
|
+
base.instance_exec do
|
10
|
+
def procedure(gherkin_text)
|
11
|
+
end
|
12
|
+
|
13
|
+
def steps
|
14
|
+
end
|
15
|
+
alias :gherkin :steps
|
16
|
+
alias :ensure_steps :steps
|
17
|
+
alias :failure_steps :steps
|
18
|
+
alias :Given :steps
|
19
|
+
alias :And :steps
|
20
|
+
alias :Then :steps
|
21
|
+
alias :When :steps
|
22
|
+
alias :Ensure :steps
|
23
|
+
alias :Failed :steps
|
24
|
+
alias :If_failing :steps
|
25
|
+
alias :When_failing :steps
|
26
|
+
alias :If_this_failed :steps
|
27
|
+
alias :If_that_failed :steps
|
28
|
+
|
29
|
+
def First(regular_expression, &block)
|
30
|
+
Isomorfeus.raise_error(message: "#{self}: First already defined, can only be defined once!") if @first_defined
|
31
|
+
@first_defined = true
|
32
|
+
end
|
33
|
+
|
34
|
+
def Finally(regular_expression, &block)
|
35
|
+
Isomorfeus.raise_error(message: "#{self}: Finally already defined, can only be defined once!") if @finally_defined
|
36
|
+
@finally_defined = true
|
37
|
+
end
|
38
|
+
|
39
|
+
def promise_run(**props_hash)
|
40
|
+
props = validated_props(props_hash)
|
41
|
+
Isomorfeus::Transport.promise_send_path('Isomorfeus::Operation::Handler::OperationHandler', self.name, props).then do |agent|
|
42
|
+
unless agent.processed
|
43
|
+
agent.processed = true
|
44
|
+
if agent.response.key?(:error)
|
45
|
+
Isomorfeus.raise_error(message: agent.response[:error])
|
46
|
+
end
|
47
|
+
agent.result = agent.response[:result]
|
48
|
+
end
|
49
|
+
if agent.result.key?(:rejected)
|
50
|
+
if agent.result.key?(:error)
|
51
|
+
e = agent.result[:error]
|
52
|
+
exception_class_name = e[:class_name]
|
53
|
+
exception_class = exception_class_name.constantize
|
54
|
+
exception = exception_class.new(e[:message])
|
55
|
+
exception.set_backtrace(e[:backtrace])
|
56
|
+
raise exception
|
57
|
+
else
|
58
|
+
raise agent.result[:rejected]
|
59
|
+
end
|
60
|
+
else
|
61
|
+
agent.result[:resolved]
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
else
|
67
|
+
Isomorfeus.add_valid_operation_class(base) unless base == LucidOperation::Base
|
68
|
+
base.extend(LucidOperation::Steps)
|
69
|
+
base.include(LucidOperation::PromiseRun)
|
70
|
+
|
71
|
+
base.instance_exec do
|
72
|
+
def promise_run(**props_hash)
|
73
|
+
self.new(**props_hash).promise_run
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
attr_reader :props
|
78
|
+
attr_accessor :step_result
|
79
|
+
|
80
|
+
def initialize(**props_hash)
|
81
|
+
props_hash = self.class.validated_props(props_hash)
|
82
|
+
@props = LucidProps.new(props_hash)
|
83
|
+
end
|
84
|
+
|
85
|
+
def current_user
|
86
|
+
Isomorfeus.current_user
|
87
|
+
end
|
88
|
+
|
89
|
+
def pub_sub_client
|
90
|
+
Isomorfeus.pub_sub_client
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
@@ -1,67 +1,67 @@
|
|
1
|
-
module LucidOperation
|
2
|
-
module PromiseRun
|
3
|
-
def promise_run
|
4
|
-
promise = Promise.new
|
5
|
-
original_promise = promise
|
6
|
-
operation = self
|
7
|
-
|
8
|
-
# steps
|
9
|
-
self.class.gherkin[:steps].each do |gherkin_step|
|
10
|
-
matched = false
|
11
|
-
self.class.steps.each do |step|
|
12
|
-
# step[0] -> regular_expression
|
13
|
-
# step[1] -> block
|
14
|
-
match_data = gherkin_step.match(step[0])
|
15
|
-
if match_data
|
16
|
-
matched = true
|
17
|
-
promise = promise.then do |result|
|
18
|
-
operation.step_result = result
|
19
|
-
operation.instance_exec(*match_data, &step[1])
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
Isomorfeus.raise_error(message: "No match found for step #{gherkin_step}!") unless matched
|
24
|
-
end
|
25
|
-
|
26
|
-
# fail track
|
27
|
-
self.class.gherkin[:failure].each do |gherkin_step|
|
28
|
-
matched = false
|
29
|
-
self.class.failure_steps.each do |step|
|
30
|
-
# step[0] -> regular_expression
|
31
|
-
# step[1] -> block
|
32
|
-
match_data = gherkin_step.match(step[0])
|
33
|
-
if match_data
|
34
|
-
matched = true
|
35
|
-
promise = promise.fail do |result|
|
36
|
-
operation.step_result = result
|
37
|
-
operation.instance_exec(*match_data, &step[1])
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
Isomorfeus.raise_error(message: "No match found for failure step #{gherkin_step}!") unless matched
|
42
|
-
end
|
43
|
-
|
44
|
-
# ensure
|
45
|
-
self.class.gherkin[:ensure].each do |gherkin_step|
|
46
|
-
matched = false
|
47
|
-
self.class.ensure_steps.each do |step|
|
48
|
-
# step[0] -> regular_expression
|
49
|
-
# step[1] -> block
|
50
|
-
match_data = gherkin_step.match(step[0])
|
51
|
-
if match_data
|
52
|
-
matched = true
|
53
|
-
|
54
|
-
promise = promise.ensure do |result|
|
55
|
-
operation.step_result = result
|
56
|
-
operation.instance_exec(*match_data, &step[1])
|
57
|
-
end
|
58
|
-
end
|
59
|
-
end
|
60
|
-
Isomorfeus.raise_error(message: "No match found for ensure step #{gherkin_step}!") unless matched
|
61
|
-
end
|
62
|
-
|
63
|
-
original_promise.resolve
|
64
|
-
promise
|
65
|
-
end
|
66
|
-
end
|
67
|
-
end
|
1
|
+
module LucidOperation
|
2
|
+
module PromiseRun
|
3
|
+
def promise_run
|
4
|
+
promise = Promise.new
|
5
|
+
original_promise = promise
|
6
|
+
operation = self
|
7
|
+
|
8
|
+
# steps
|
9
|
+
self.class.gherkin[:steps].each do |gherkin_step|
|
10
|
+
matched = false
|
11
|
+
self.class.steps.each do |step|
|
12
|
+
# step[0] -> regular_expression
|
13
|
+
# step[1] -> block
|
14
|
+
match_data = gherkin_step.match(step[0])
|
15
|
+
if match_data
|
16
|
+
matched = true
|
17
|
+
promise = promise.then do |result|
|
18
|
+
operation.step_result = result
|
19
|
+
operation.instance_exec(*match_data, &step[1])
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
Isomorfeus.raise_error(message: "No match found for step #{gherkin_step}!") unless matched
|
24
|
+
end
|
25
|
+
|
26
|
+
# fail track
|
27
|
+
self.class.gherkin[:failure].each do |gherkin_step|
|
28
|
+
matched = false
|
29
|
+
self.class.failure_steps.each do |step|
|
30
|
+
# step[0] -> regular_expression
|
31
|
+
# step[1] -> block
|
32
|
+
match_data = gherkin_step.match(step[0])
|
33
|
+
if match_data
|
34
|
+
matched = true
|
35
|
+
promise = promise.fail do |result|
|
36
|
+
operation.step_result = result
|
37
|
+
operation.instance_exec(*match_data, &step[1])
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
Isomorfeus.raise_error(message: "No match found for failure step #{gherkin_step}!") unless matched
|
42
|
+
end
|
43
|
+
|
44
|
+
# ensure
|
45
|
+
self.class.gherkin[:ensure].each do |gherkin_step|
|
46
|
+
matched = false
|
47
|
+
self.class.ensure_steps.each do |step|
|
48
|
+
# step[0] -> regular_expression
|
49
|
+
# step[1] -> block
|
50
|
+
match_data = gherkin_step.match(step[0])
|
51
|
+
if match_data
|
52
|
+
matched = true
|
53
|
+
|
54
|
+
promise = promise.ensure do |result|
|
55
|
+
operation.step_result = result
|
56
|
+
operation.instance_exec(*match_data, &step[1])
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
Isomorfeus.raise_error(message: "No match found for ensure step #{gherkin_step}!") unless matched
|
61
|
+
end
|
62
|
+
|
63
|
+
original_promise.resolve
|
64
|
+
promise
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
@@ -1,58 +1,58 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module LucidOperation
|
4
|
-
module Steps
|
5
|
-
def procedure(gherkin_text)
|
6
|
-
feature_line = gherkin_text.include?('Operation: ') ? '' : "Operation: #{self.name}\n"
|
7
|
-
scenario_line = feature_line == '' || gherkin_text.include?('Procedure: ') ? '' : " Procedure: #{self.name} executing\n"
|
8
|
-
@procedure = feature_line + scenario_line + gherkin_text
|
9
|
-
end
|
10
|
-
|
11
|
-
def gherkin
|
12
|
-
@gherkin ||= LucidOperation::Gherkin.parse(@procedure)
|
13
|
-
end
|
14
|
-
|
15
|
-
def ensure_steps
|
16
|
-
@ensure_steps ||= []
|
17
|
-
end
|
18
|
-
|
19
|
-
def failure_steps
|
20
|
-
@failure_steps ||= []
|
21
|
-
end
|
22
|
-
|
23
|
-
def steps
|
24
|
-
@steps ||= []
|
25
|
-
end
|
26
|
-
|
27
|
-
def First(regular_expression, &block)
|
28
|
-
Isomorfeus.raise_error(message: "#{self}: First already defined, can only be defined once!") if @first_defined
|
29
|
-
@first_defined = true
|
30
|
-
steps << [regular_expression, block]
|
31
|
-
end
|
32
|
-
|
33
|
-
def Given(regular_expression, &block)
|
34
|
-
steps << [regular_expression, block]
|
35
|
-
end
|
36
|
-
alias :And :Given
|
37
|
-
alias :Then :Given
|
38
|
-
alias :When :Given
|
39
|
-
|
40
|
-
def Finally(regular_expression, &block)
|
41
|
-
Isomorfeus.raise_error(message: "#{self}: Finally already defined, can only be defined once!") if @finally_defined
|
42
|
-
@finally_defined = true
|
43
|
-
steps << [regular_expression, block]
|
44
|
-
end
|
45
|
-
|
46
|
-
def Ensure(regular_expression, &block)
|
47
|
-
ensure_steps << [regular_expression, block]
|
48
|
-
end
|
49
|
-
|
50
|
-
def Failed(regular_expression, &block)
|
51
|
-
failure_steps << [regular_expression, block]
|
52
|
-
end
|
53
|
-
alias :If_failing :Failed
|
54
|
-
alias :When_failing :Failed
|
55
|
-
alias :If_this_failed :Failed
|
56
|
-
alias :If_that_failed :Failed
|
57
|
-
end
|
58
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module LucidOperation
|
4
|
+
module Steps
|
5
|
+
def procedure(gherkin_text)
|
6
|
+
feature_line = gherkin_text.include?('Operation: ') ? '' : "Operation: #{self.name}\n"
|
7
|
+
scenario_line = feature_line == '' || gherkin_text.include?('Procedure: ') ? '' : " Procedure: #{self.name} executing\n"
|
8
|
+
@procedure = feature_line + scenario_line + gherkin_text
|
9
|
+
end
|
10
|
+
|
11
|
+
def gherkin
|
12
|
+
@gherkin ||= LucidOperation::Gherkin.parse(@procedure)
|
13
|
+
end
|
14
|
+
|
15
|
+
def ensure_steps
|
16
|
+
@ensure_steps ||= []
|
17
|
+
end
|
18
|
+
|
19
|
+
def failure_steps
|
20
|
+
@failure_steps ||= []
|
21
|
+
end
|
22
|
+
|
23
|
+
def steps
|
24
|
+
@steps ||= []
|
25
|
+
end
|
26
|
+
|
27
|
+
def First(regular_expression, &block)
|
28
|
+
Isomorfeus.raise_error(message: "#{self}: First already defined, can only be defined once!") if @first_defined
|
29
|
+
@first_defined = true
|
30
|
+
steps << [regular_expression, block]
|
31
|
+
end
|
32
|
+
|
33
|
+
def Given(regular_expression, &block)
|
34
|
+
steps << [regular_expression, block]
|
35
|
+
end
|
36
|
+
alias :And :Given
|
37
|
+
alias :Then :Given
|
38
|
+
alias :When :Given
|
39
|
+
|
40
|
+
def Finally(regular_expression, &block)
|
41
|
+
Isomorfeus.raise_error(message: "#{self}: Finally already defined, can only be defined once!") if @finally_defined
|
42
|
+
@finally_defined = true
|
43
|
+
steps << [regular_expression, block]
|
44
|
+
end
|
45
|
+
|
46
|
+
def Ensure(regular_expression, &block)
|
47
|
+
ensure_steps << [regular_expression, block]
|
48
|
+
end
|
49
|
+
|
50
|
+
def Failed(regular_expression, &block)
|
51
|
+
failure_steps << [regular_expression, block]
|
52
|
+
end
|
53
|
+
alias :If_failing :Failed
|
54
|
+
alias :When_failing :Failed
|
55
|
+
alias :If_this_failed :Failed
|
56
|
+
alias :If_that_failed :Failed
|
57
|
+
end
|
58
|
+
end
|
@@ -1,11 +1,10 @@
|
|
1
|
-
module LucidQuickOp
|
2
|
-
class Base
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
end
|
1
|
+
module LucidQuickOp
|
2
|
+
class Base
|
3
|
+
def self.inherited(base)
|
4
|
+
base.include LucidQuickOp::Mixin
|
5
|
+
if RUBY_ENGINE != 'opal'
|
6
|
+
Isomorfeus.add_valid_operation_class(base)
|
7
|
+
end
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
@@ -1,81 +1,80 @@
|
|
1
|
-
module LucidQuickOp
|
2
|
-
module Mixin
|
3
|
-
def self.included(base)
|
4
|
-
base.extend(LucidPropDeclaration::Mixin)
|
5
|
-
|
6
|
-
if RUBY_ENGINE == 'opal'
|
7
|
-
base.instance_exec do
|
8
|
-
def op
|
9
|
-
end
|
10
|
-
|
11
|
-
def promise_run(**props_hash)
|
12
|
-
props = validated_props(props_hash)
|
13
|
-
Isomorfeus::Transport.promise_send_path('Isomorfeus::Operation::Handler::OperationHandler', self.name, props).then do |agent|
|
14
|
-
unless agent.processed
|
15
|
-
agent.processed = true
|
16
|
-
if agent.response.key?(:error)
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
exception
|
28
|
-
exception
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
end
|
1
|
+
module LucidQuickOp
|
2
|
+
module Mixin
|
3
|
+
def self.included(base)
|
4
|
+
base.extend(LucidPropDeclaration::Mixin)
|
5
|
+
|
6
|
+
if RUBY_ENGINE == 'opal'
|
7
|
+
base.instance_exec do
|
8
|
+
def op
|
9
|
+
end
|
10
|
+
|
11
|
+
def promise_run(**props_hash)
|
12
|
+
props = validated_props(props_hash)
|
13
|
+
Isomorfeus::Transport.promise_send_path('Isomorfeus::Operation::Handler::OperationHandler', self.name, props).then do |agent|
|
14
|
+
unless agent.processed
|
15
|
+
agent.processed = true
|
16
|
+
if agent.response.key?(:error)
|
17
|
+
Isomorfeus.raise_error(message: agent.response[:error])
|
18
|
+
end
|
19
|
+
agent.result = agent.response[:result]
|
20
|
+
end
|
21
|
+
if agent.result.key?(:rejected)
|
22
|
+
if agent.result.key?(:error)
|
23
|
+
e = agent.result[:error]
|
24
|
+
exception_class_name = e[:class_name]
|
25
|
+
exception_class = exception_class_name.constantize
|
26
|
+
exception = exception_class.new(e[:message])
|
27
|
+
exception.set_backtrace(e[:backtrace])
|
28
|
+
raise exception
|
29
|
+
else
|
30
|
+
raise agent.result[:rejected]
|
31
|
+
end
|
32
|
+
else
|
33
|
+
agent.result[:resolved]
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
else
|
39
|
+
Isomorfeus.add_valid_operation_class(base) unless base == LucidQuickOp::Base
|
40
|
+
|
41
|
+
base.instance_exec do
|
42
|
+
def op(&block)
|
43
|
+
@op = block
|
44
|
+
end
|
45
|
+
|
46
|
+
def promise_run(**props_hash)
|
47
|
+
self.new(**props_hash).promise_run
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
attr_reader :props
|
54
|
+
|
55
|
+
def initialize(**props_hash)
|
56
|
+
props_hash = self.class.validated_props(props_hash)
|
57
|
+
@props = LucidProps.new(props_hash)
|
58
|
+
end
|
59
|
+
|
60
|
+
def promise_run
|
61
|
+
original_promise = Promise.new
|
62
|
+
|
63
|
+
operation = self
|
64
|
+
promise = original_promise.then do |_|
|
65
|
+
operation.instance_exec(&operation.class.instance_variable_get(:@op))
|
66
|
+
end
|
67
|
+
|
68
|
+
original_promise.resolve
|
69
|
+
promise
|
70
|
+
end
|
71
|
+
|
72
|
+
def current_user
|
73
|
+
Isomorfeus.current_user
|
74
|
+
end
|
75
|
+
|
76
|
+
def pub_sub_client
|
77
|
+
Isomorfeus.pub_sub_client
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|