isomorfeus-operation 23.9.0.rc7 → 23.9.0.rc9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +1 -3
- data/lib/isomorfeus/operation/version.rb +1 -1
- data/lib/isomorfeus-operation.rb +2 -5
- data/lib/lucid_operation.rb +32 -36
- metadata +28 -19
- data/lib/lucid_local_operation.rb +0 -32
- data/lib/lucid_operation/gherkin.rb +0 -63
- data/lib/lucid_operation/promise_run.rb +0 -67
- data/lib/lucid_operation/steps.rb +0 -61
- data/lib/lucid_simple_operation.rb +0 -44
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6d2fffe0ed03ffd88eba8560552a56963ce8f567401e888eaae1903ebf32ae12
|
4
|
+
data.tar.gz: c0277a6c343393cd3e9350a92bf2566143feb0fa099368f06865d778b0079dce
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 24321ed20eab470de83205ac34ba87d0f59031406eb337d61b2da1cf74ff8a377eac41e9677acc0e58fc2f06bcdfa9641bd04f9b0772f00f46abad59169cd811
|
7
|
+
data.tar.gz: 708eba892840cd31b309919b97a36697dbcb0b337e70f0331d8615cc66a517cf97e1c18f852351a5750913f7679ed980668cb6d031693c323542c31a9fd3528d
|
data/README.md
CHANGED
@@ -10,6 +10,4 @@ Operations use Props like other parts of the system.
|
|
10
10
|
See [the isomorfeus-preact props documentation](https://github.com/isomorfeus/isomorfeus-preact/blob/master/docs/props.md#prop-declaration).
|
11
11
|
|
12
12
|
There are 3 kinds of Operations:
|
13
|
-
- [
|
14
|
-
- [LucidOperation](https://github.com/isomorfeus/isomorfeus-project/blob/master/isomorfeus-operation/docs/operation.md) - For complex multi-stepped operations, always executed on the server, also deferred or daily.
|
15
|
-
- [LucidLocalOperation](https://github.com/isomorfeus/isomorfeus-project/blob/master/isomorfeus-operation/docs/operation.md) - For complex multi-stepped operations, always executed locally.
|
13
|
+
- [LucidOperation](https://github.com/isomorfeus/isomorfeus-project/blob/master/isomorfeus-operation/docs/simple_operation.md) - Simple operation, always executed on the server, also deferred or daily.
|
data/lib/isomorfeus-operation.rb
CHANGED
@@ -1,12 +1,9 @@
|
|
1
1
|
require 'isomorfeus-transport'
|
2
|
+
require 'isomorfeus-i18n'
|
2
3
|
require 'isomorfeus-policy'
|
4
|
+
require 'isomorfeus-preact'
|
3
5
|
require 'isomorfeus/operation/config'
|
4
6
|
require 'isomorfeus/operation/generic_class_api'
|
5
|
-
require 'lucid_operation/gherkin'
|
6
|
-
require 'lucid_operation/steps'
|
7
|
-
require 'lucid_operation/promise_run'
|
8
|
-
require 'lucid_local_operation'
|
9
|
-
require 'lucid_simple_operation'
|
10
7
|
require 'lucid_operation'
|
11
8
|
|
12
9
|
if RUBY_ENGINE == 'opal'
|
data/lib/lucid_operation.rb
CHANGED
@@ -1,49 +1,45 @@
|
|
1
1
|
class LucidOperation
|
2
2
|
extend Preact::PropDeclarationMixin
|
3
3
|
extend Isomorfeus::Operation::GenericClassApi
|
4
|
+
include LucidI18nMixin
|
4
5
|
|
5
|
-
|
6
|
-
|
7
|
-
def
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
alias :failure_steps :steps
|
13
|
-
alias :Given :steps
|
14
|
-
alias :And :steps
|
15
|
-
alias :Then :steps
|
16
|
-
alias :When :steps
|
17
|
-
alias :Ensure :steps
|
18
|
-
alias :Failed :steps
|
19
|
-
alias :If_failing :steps
|
20
|
-
alias :When_failing :steps
|
21
|
-
alias :If_this_failed :steps
|
22
|
-
alias :If_that_failed :steps
|
23
|
-
alias :First :steps
|
24
|
-
alias :Finally :steps
|
25
|
-
end
|
26
|
-
else
|
27
|
-
extend LucidOperation::Steps
|
28
|
-
include LucidOperation::PromiseRun
|
6
|
+
class << self
|
7
|
+
if RUBY_ENGINE == 'opal'
|
8
|
+
def op; end
|
9
|
+
else
|
10
|
+
def inherited(base)
|
11
|
+
Isomorfeus.add_valid_operation_class(base)
|
12
|
+
end
|
29
13
|
|
30
|
-
|
31
|
-
|
14
|
+
def op(&block)
|
15
|
+
@op = block
|
16
|
+
end
|
32
17
|
end
|
18
|
+
end
|
33
19
|
|
34
|
-
|
35
|
-
attr_accessor :step_result
|
20
|
+
attr_reader :props
|
36
21
|
|
37
|
-
|
38
|
-
|
39
|
-
|
22
|
+
def initialize(**props_hash)
|
23
|
+
@props = self.class.validated_props(props_hash)
|
24
|
+
end
|
40
25
|
|
41
|
-
|
42
|
-
|
43
|
-
end
|
26
|
+
def promise_run
|
27
|
+
original_promise = Promise.new
|
44
28
|
|
45
|
-
|
46
|
-
|
29
|
+
operation = self
|
30
|
+
promise = original_promise.then do |_|
|
31
|
+
operation.instance_exec(&operation.class.instance_variable_get(:@op))
|
47
32
|
end
|
33
|
+
|
34
|
+
original_promise.resolve
|
35
|
+
promise
|
36
|
+
end
|
37
|
+
|
38
|
+
def current_user
|
39
|
+
Isomorfeus.current_user
|
40
|
+
end
|
41
|
+
|
42
|
+
def pub_sub_client
|
43
|
+
Isomorfeus.pub_sub_client
|
48
44
|
end
|
49
45
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: isomorfeus-operation
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 23.9.0.
|
4
|
+
version: 23.9.0.rc9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jan Biedermann
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-09-
|
11
|
+
date: 2023-09-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -92,84 +92,98 @@ dependencies:
|
|
92
92
|
requirements:
|
93
93
|
- - '='
|
94
94
|
- !ruby/object:Gem::Version
|
95
|
-
version: 23.9.0.
|
95
|
+
version: 23.9.0.rc9
|
96
96
|
type: :runtime
|
97
97
|
prerelease: false
|
98
98
|
version_requirements: !ruby/object:Gem::Requirement
|
99
99
|
requirements:
|
100
100
|
- - '='
|
101
101
|
- !ruby/object:Gem::Version
|
102
|
-
version: 23.9.0.
|
102
|
+
version: 23.9.0.rc9
|
103
|
+
- !ruby/object:Gem::Dependency
|
104
|
+
name: isomorfeus-i18n
|
105
|
+
requirement: !ruby/object:Gem::Requirement
|
106
|
+
requirements:
|
107
|
+
- - '='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: 23.9.0.rc9
|
110
|
+
type: :runtime
|
111
|
+
prerelease: false
|
112
|
+
version_requirements: !ruby/object:Gem::Requirement
|
113
|
+
requirements:
|
114
|
+
- - '='
|
115
|
+
- !ruby/object:Gem::Version
|
116
|
+
version: 23.9.0.rc9
|
103
117
|
- !ruby/object:Gem::Dependency
|
104
118
|
name: isomorfeus-policy
|
105
119
|
requirement: !ruby/object:Gem::Requirement
|
106
120
|
requirements:
|
107
121
|
- - '='
|
108
122
|
- !ruby/object:Gem::Version
|
109
|
-
version: 23.9.0.
|
123
|
+
version: 23.9.0.rc9
|
110
124
|
type: :runtime
|
111
125
|
prerelease: false
|
112
126
|
version_requirements: !ruby/object:Gem::Requirement
|
113
127
|
requirements:
|
114
128
|
- - '='
|
115
129
|
- !ruby/object:Gem::Version
|
116
|
-
version: 23.9.0.
|
130
|
+
version: 23.9.0.rc9
|
117
131
|
- !ruby/object:Gem::Dependency
|
118
132
|
name: isomorfeus-preact
|
119
133
|
requirement: !ruby/object:Gem::Requirement
|
120
134
|
requirements:
|
121
135
|
- - '='
|
122
136
|
- !ruby/object:Gem::Version
|
123
|
-
version: 23.9.0.
|
137
|
+
version: 23.9.0.rc9
|
124
138
|
type: :runtime
|
125
139
|
prerelease: false
|
126
140
|
version_requirements: !ruby/object:Gem::Requirement
|
127
141
|
requirements:
|
128
142
|
- - '='
|
129
143
|
- !ruby/object:Gem::Version
|
130
|
-
version: 23.9.0.
|
144
|
+
version: 23.9.0.rc9
|
131
145
|
- !ruby/object:Gem::Dependency
|
132
146
|
name: isomorfeus-redux
|
133
147
|
requirement: !ruby/object:Gem::Requirement
|
134
148
|
requirements:
|
135
149
|
- - '='
|
136
150
|
- !ruby/object:Gem::Version
|
137
|
-
version: 23.9.0.
|
151
|
+
version: 23.9.0.rc9
|
138
152
|
type: :runtime
|
139
153
|
prerelease: false
|
140
154
|
version_requirements: !ruby/object:Gem::Requirement
|
141
155
|
requirements:
|
142
156
|
- - '='
|
143
157
|
- !ruby/object:Gem::Version
|
144
|
-
version: 23.9.0.
|
158
|
+
version: 23.9.0.rc9
|
145
159
|
- !ruby/object:Gem::Dependency
|
146
160
|
name: isomorfeus-transport
|
147
161
|
requirement: !ruby/object:Gem::Requirement
|
148
162
|
requirements:
|
149
163
|
- - '='
|
150
164
|
- !ruby/object:Gem::Version
|
151
|
-
version: 23.9.0.
|
165
|
+
version: 23.9.0.rc9
|
152
166
|
type: :runtime
|
153
167
|
prerelease: false
|
154
168
|
version_requirements: !ruby/object:Gem::Requirement
|
155
169
|
requirements:
|
156
170
|
- - '='
|
157
171
|
- !ruby/object:Gem::Version
|
158
|
-
version: 23.9.0.
|
172
|
+
version: 23.9.0.rc9
|
159
173
|
- !ruby/object:Gem::Dependency
|
160
174
|
name: isomorfeus
|
161
175
|
requirement: !ruby/object:Gem::Requirement
|
162
176
|
requirements:
|
163
177
|
- - '='
|
164
178
|
- !ruby/object:Gem::Version
|
165
|
-
version: 23.9.0.
|
179
|
+
version: 23.9.0.rc9
|
166
180
|
type: :development
|
167
181
|
prerelease: false
|
168
182
|
version_requirements: !ruby/object:Gem::Requirement
|
169
183
|
requirements:
|
170
184
|
- - '='
|
171
185
|
- !ruby/object:Gem::Version
|
172
|
-
version: 23.9.0.
|
186
|
+
version: 23.9.0.rc9
|
173
187
|
- !ruby/object:Gem::Dependency
|
174
188
|
name: rake
|
175
189
|
requirement: !ruby/object:Gem::Requirement
|
@@ -215,12 +229,7 @@ files:
|
|
215
229
|
- lib/isomorfeus/operation/init_timer_tasks.rb
|
216
230
|
- lib/isomorfeus/operation/run_task.rb
|
217
231
|
- lib/isomorfeus/operation/version.rb
|
218
|
-
- lib/lucid_local_operation.rb
|
219
232
|
- lib/lucid_operation.rb
|
220
|
-
- lib/lucid_operation/gherkin.rb
|
221
|
-
- lib/lucid_operation/promise_run.rb
|
222
|
-
- lib/lucid_operation/steps.rb
|
223
|
-
- lib/lucid_simple_operation.rb
|
224
233
|
homepage: https://isomorfeus.com
|
225
234
|
licenses:
|
226
235
|
- MIT
|
@@ -1,32 +0,0 @@
|
|
1
|
-
class LucidLocalOperation
|
2
|
-
extend Preact::PropDeclarationMixin
|
3
|
-
extend LucidOperation::Steps
|
4
|
-
include LucidOperation::PromiseRun
|
5
|
-
|
6
|
-
class << self
|
7
|
-
if RUBY_ENGINE != 'opal'
|
8
|
-
def inherited(base)
|
9
|
-
Isomorfeus.add_valid_operation_class(base)
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
def promise_run(**props_hash)
|
14
|
-
self.new(**props_hash).promise_run
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
attr_reader :props
|
19
|
-
attr_accessor :step_result
|
20
|
-
|
21
|
-
def initialize(**props_hash)
|
22
|
-
@props = self.class.validated_props(props_hash)
|
23
|
-
end
|
24
|
-
|
25
|
-
def current_user
|
26
|
-
Isomorfeus.current_user
|
27
|
-
end
|
28
|
-
|
29
|
-
def pub_sub_client
|
30
|
-
Isomorfeus.pub_sub_client
|
31
|
-
end
|
32
|
-
end
|
@@ -1,63 +0,0 @@
|
|
1
|
-
class LucidOperation
|
2
|
-
module Gherkin
|
3
|
-
FIRST_EXCEPTION = "First must be the first one that is used and can only used once!"
|
4
|
-
FINALLY_EXCEPTION = "Finally, except for Ensure and Failed, must be the last one to be used and can only be used once!"
|
5
|
-
|
6
|
-
NEWLINE = /\r?\n/
|
7
|
-
OPERATION = /^\s*Operation: (.*)$/
|
8
|
-
PROCEDURE = /^\s*Procedure: (.*)$/
|
9
|
-
STAR = /^\s*\* (.*)$/
|
10
|
-
GIVEN = /^\s*Given (.*)$/
|
11
|
-
WHEN = /^\s*When (.*)$/
|
12
|
-
THEN = /^\s*Then (.*)$/
|
13
|
-
AND = /^\s*And (.*)$/
|
14
|
-
FIRST = /^\s*First (.*)$/
|
15
|
-
ENSURE = /^\s*Ensure (.*)$/
|
16
|
-
FINALLY = /^\s*Finally (.*)$/
|
17
|
-
IW_FAILING = /^\s*(?:When|If) failing (.*)$/
|
18
|
-
IF_ITT_FAILED = /^\s*If (?:that|this|it) failed (.*)$/
|
19
|
-
FAILED = /^\s*Failed (.*)$/
|
20
|
-
COMMENT = /^\s*# (.*)$/
|
21
|
-
WHITE_SPACE = /^\s*$/
|
22
|
-
|
23
|
-
def self.parse(gherkin_text)
|
24
|
-
operation = { operation: '', procedure: '', steps: [], failure: [], ensure: [] }
|
25
|
-
has_finally = false
|
26
|
-
lines = gherkin_text.split(NEWLINE)
|
27
|
-
|
28
|
-
lines.each do |line|
|
29
|
-
case line
|
30
|
-
when STAR, GIVEN, WHEN, THEN, AND
|
31
|
-
Isomorfeus.raise_error(message: FINALLY_EXCEPTION) if has_finally
|
32
|
-
operation[:steps] << $1.strip
|
33
|
-
when ENSURE
|
34
|
-
operation[:ensure] << $1.strip
|
35
|
-
when IW_FAILING, IF_ITT_FAILED, FAILED
|
36
|
-
operation[:failure] << $1.strip
|
37
|
-
when FIRST
|
38
|
-
Isomorfeus.raise_error(message: FIRST_EXCEPTION) if operation[:steps].size > 0
|
39
|
-
operation[:steps] << $1.strip
|
40
|
-
when FINALLY
|
41
|
-
Isomorfeus.raise_error(message: FINALLY_EXCEPTION) if has_finally
|
42
|
-
operation[:steps] << $1.strip
|
43
|
-
has_finally = true
|
44
|
-
when PROCEDURE
|
45
|
-
Isomorfeus.raise_error(message: 'No Operation defined!') if operation[:operation].empty?
|
46
|
-
Isomorfeus.raise_error(message: 'Procedure already defined!') unless operation[:procedure].empty?
|
47
|
-
operation[:procedure] = $1.strip
|
48
|
-
when OPERATION
|
49
|
-
Isomorfeus.raise_error(message: 'Operation already defined!') unless operation[:operation].empty?
|
50
|
-
operation[:operation] = $1.strip
|
51
|
-
when WHITE_SPACE, COMMENT
|
52
|
-
# nothing, just skip
|
53
|
-
else
|
54
|
-
Isomorfeus.raise_error(message: "Unknown key word(s) at the beginning of the line: #{line}") unless operation[:procedure].empty?
|
55
|
-
operation[:description] = [] unless operation.key?(:description)
|
56
|
-
operation[:description] << line.strip
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
|
-
operation
|
61
|
-
end
|
62
|
-
end
|
63
|
-
end
|
@@ -1,67 +0,0 @@
|
|
1
|
-
class 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,61 +0,0 @@
|
|
1
|
-
class LucidOperation
|
2
|
-
module Steps
|
3
|
-
def procedure(gherkin_text)
|
4
|
-
feature_line = gherkin_text.include?('Operation: ') ? '' : "Operation: #{self.name}\n"
|
5
|
-
scenario_line = feature_line == '' || gherkin_text.include?('Procedure: ') ? '' : " Procedure: #{self.name} executing\n"
|
6
|
-
@procedure = feature_line + scenario_line + gherkin_text
|
7
|
-
end
|
8
|
-
|
9
|
-
def gherkin
|
10
|
-
@gherkin ||= LucidOperation::Gherkin.parse(@procedure)
|
11
|
-
end
|
12
|
-
|
13
|
-
def ensure_steps
|
14
|
-
@ensure_steps ||= []
|
15
|
-
end
|
16
|
-
|
17
|
-
def failure_steps
|
18
|
-
@failure_steps ||= []
|
19
|
-
end
|
20
|
-
|
21
|
-
def steps
|
22
|
-
@steps ||= []
|
23
|
-
end
|
24
|
-
|
25
|
-
def First(regexp_or_string, &block)
|
26
|
-
Isomorfeus.raise_error(message: "#{self}: First already defined, can only be defined once!") if @first_defined
|
27
|
-
@first_defined = true
|
28
|
-
steps << [_re_from_res(regexp_or_string), block]
|
29
|
-
end
|
30
|
-
|
31
|
-
def Given(regexp_or_string, &block)
|
32
|
-
steps << [_re_from_res(regexp_or_string), block]
|
33
|
-
end
|
34
|
-
alias :And :Given
|
35
|
-
alias :Then :Given
|
36
|
-
alias :When :Given
|
37
|
-
|
38
|
-
def Finally(regexp_or_string, &block)
|
39
|
-
Isomorfeus.raise_error(message: "#{self}: Finally already defined, can only be defined once!") if @finally_defined
|
40
|
-
@finally_defined = true
|
41
|
-
steps << [_re_from_res(regexp_or_string), block]
|
42
|
-
end
|
43
|
-
|
44
|
-
def Ensure(regexp_or_string, &block)
|
45
|
-
ensure_steps << [_re_from_res(regexp_or_string), block]
|
46
|
-
end
|
47
|
-
|
48
|
-
def Failed(regexp_or_string, &block)
|
49
|
-
failure_steps << [_re_from_res(regexp_or_string), block]
|
50
|
-
end
|
51
|
-
|
52
|
-
def _re_from_res(regexp_or_string)
|
53
|
-
regexp_or_string.is_a?(String) ? Regexp.new(regexp_or_string) : regexp_or_string
|
54
|
-
end
|
55
|
-
|
56
|
-
alias :If_failing :Failed
|
57
|
-
alias :When_failing :Failed
|
58
|
-
alias :If_this_failed :Failed
|
59
|
-
alias :If_that_failed :Failed
|
60
|
-
end
|
61
|
-
end
|
@@ -1,44 +0,0 @@
|
|
1
|
-
class LucidSimpleOperation
|
2
|
-
extend Preact::PropDeclarationMixin
|
3
|
-
extend Isomorfeus::Operation::GenericClassApi
|
4
|
-
|
5
|
-
class << self
|
6
|
-
if RUBY_ENGINE == 'opal'
|
7
|
-
def op; end
|
8
|
-
else
|
9
|
-
def inherited(base)
|
10
|
-
Isomorfeus.add_valid_operation_class(base)
|
11
|
-
end
|
12
|
-
|
13
|
-
def op(&block)
|
14
|
-
@op = block
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
attr_reader :props
|
20
|
-
|
21
|
-
def initialize(**props_hash)
|
22
|
-
@props = self.class.validated_props(props_hash)
|
23
|
-
end
|
24
|
-
|
25
|
-
def promise_run
|
26
|
-
original_promise = Promise.new
|
27
|
-
|
28
|
-
operation = self
|
29
|
-
promise = original_promise.then do |_|
|
30
|
-
operation.instance_exec(&operation.class.instance_variable_get(:@op))
|
31
|
-
end
|
32
|
-
|
33
|
-
original_promise.resolve
|
34
|
-
promise
|
35
|
-
end
|
36
|
-
|
37
|
-
def current_user
|
38
|
-
Isomorfeus.current_user
|
39
|
-
end
|
40
|
-
|
41
|
-
def pub_sub_client
|
42
|
-
Isomorfeus.pub_sub_client
|
43
|
-
end
|
44
|
-
end
|