isomorfeus-redux 4.0.17 → 4.0.18

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 85dc6330c2823bf70203af10cf649173b09113cbdd915cd26d94a40e89deb1df
4
- data.tar.gz: 1fbd716da17d29b0b2899d2ed4e8303d4de5ac0bb7a1f64ce9a8243c897cd3d2
3
+ metadata.gz: dab6bfed0e9e91a5a59c8b45056449ad2c0f2cab5ec1bfb7fcfb5f8179628970
4
+ data.tar.gz: 5506812a4498c8080ad3a125f25052afe8602a043786062952abcb1ffa5c9472
5
5
  SHA512:
6
- metadata.gz: d0e4c004fd4886f9ee55eb58e1f9c7941db25e6acf5fc1c5a6e14cbd81d8e75c944fd93b79fc88f01fd89e2b25ea68ac7f8155aca34109862214f19c99204f87
7
- data.tar.gz: 013e66addd2a839c8156dcd57dd62ec5e75fa33a72b205268bec6ee5b92ba382189bd3194111e2f41b5cf7542fbe46d51c5abc4ff18474d914fc6dcdc17b0935
6
+ metadata.gz: ed0aefa578a4af22a5b478b50fc133949598e0ca79d267f5bbbd3b4951f131885f7dcf0db1308a71c63273d5813f4298517d9910bb1ac66169753d0b59f48aaa
7
+ data.tar.gz: 7fa33aa40a2c96218f5d43cca71f119c077322bab3896612839005f947d0ef36ef9157df0f8e5dcc39863b4cefdaaba798d05576dff2f6be70d63420fc7fb185
@@ -12,7 +12,9 @@ if RUBY_ENGINE == 'opal'
12
12
  Redux::Reducers::add_application_reducers_to_store
13
13
  Isomorfeus.init_store
14
14
  else
15
- require 'isomorfeus/promise'
15
+ opal_path = Gem::Specification.find_by_name('opal').full_gem_path
16
+ promise_path = File.join(opal_path, 'stdlib', 'promise.rb')
17
+ require promise_path
16
18
  require 'redux/version'
17
19
  require 'isomorfeus/execution_environment'
18
20
 
@@ -1,349 +1,3 @@
1
- # taken from https://github.com/ruby-hyperloop/hyper-operation/blob/edge/lib/hyper-operation/promise.rb
2
-
3
- class Promise
4
- def self.value(value)
5
- new.resolve(value)
6
- end
7
-
8
- def self.error(value)
9
- new.reject(value)
10
- end
11
-
12
- def self.when(*promises)
13
- When.new(promises)
14
- end
15
-
16
- attr_reader :error, :prev, :next
17
-
18
- def initialize(action = {})
19
- @action = action
20
-
21
- @realized = false
22
- @exception = false
23
- @value = nil
24
- @error = nil
25
- @delayed = false
26
-
27
- @prev = nil
28
- @next = []
29
- end
30
-
31
- def value
32
- if Promise === @value
33
- @value.value
34
- else
35
- @value
36
- end
37
- end
38
-
39
- def act?
40
- @action.has_key?(:success) || @action.has_key?(:always)
41
- end
42
-
43
- def action
44
- @action.keys
45
- end
46
-
47
- def exception?
48
- @exception
49
- end
50
-
51
- def realized?
52
- !!@realized
53
- end
54
-
55
- def resolved?
56
- @realized == :resolve
57
- end
58
-
59
- def rejected?
60
- @realized == :reject
61
- end
62
-
63
- def pending?
64
- !realized?
65
- end
66
-
67
- def ^(promise)
68
- promise << self
69
- self >> promise
70
-
71
- promise
72
- end
73
-
74
- def <<(promise)
75
- @prev = promise
76
-
77
- self
78
- end
79
-
80
- def >>(promise)
81
- @next << promise
82
-
83
- if exception?
84
- promise.reject(@delayed[0])
85
- elsif resolved?
86
- promise.resolve(@delayed ? @delayed[0] : value)
87
- elsif rejected?
88
- if !@action.has_key?(:failure) || Promise === (@delayed ? @delayed[0] : @error)
89
- promise.reject(@delayed ? @delayed[0] : error)
90
- elsif promise.action.include?(:always)
91
- promise.reject(@delayed ? @delayed[0] : error)
92
- end
93
- end
94
-
95
- self
96
- end
97
-
98
- def resolve(value = nil)
99
- if realized?
100
- raise ArgumentError, 'the promise has already been realized'
101
- end
102
-
103
- if Promise === value
104
- return (value << @prev) ^ self
105
- end
106
-
107
- begin
108
- if block = @action[:success] || @action[:always]
109
- value = block.call(value)
110
- end
111
-
112
- resolve!(value)
113
- rescue Exception => e
114
- exception!(e)
115
- end
116
-
117
- self
118
- end
119
-
120
- def resolve!(value)
121
- @realized = :resolve
122
- @value = value
123
-
124
- if @next.any?
125
- @next.each { |p| p.resolve(value) }
126
- else
127
- @delayed = [value]
128
- end
129
- end
130
-
131
- def reject(value = nil)
132
- if realized?
133
- raise ArgumentError, 'the promise has already been realized'
134
- end
135
-
136
- if Promise === value
137
- return (value << @prev) ^ self
138
- end
139
-
140
- begin
141
- if block = @action[:failure] || @action[:always]
142
- value = block.call(value)
143
- end
144
-
145
- if @action.has_key?(:always)
146
- resolve!(value)
147
- else
148
- reject!(value)
149
- end
150
- rescue Exception => e
151
- exception!(e)
152
- end
153
-
154
- self
155
- end
156
-
157
- def reject!(value)
158
- @realized = :reject
159
- @error = value
160
-
161
- if @next.any?
162
- @next.each { |p| p.reject(value) }
163
- else
164
- @delayed = [value]
165
- end
166
- end
167
-
168
- def exception!(error)
169
- @exception = true
170
-
171
- reject!(error)
172
- end
173
-
174
- def then(&block)
175
- self ^ Promise.new(success: block)
176
- end
177
-
178
- def then!(&block)
179
- there_can_be_only_one!
180
- self.then(&block)
181
- end
182
-
183
- alias do then
184
- alias do! then!
185
-
186
- def fail(&block)
187
- self ^ Promise.new(failure: block)
188
- end
189
-
190
- def fail!(&block)
191
- there_can_be_only_one!
192
- fail(&block)
193
- end
194
-
195
- alias rescue fail
196
- alias catch fail
197
- alias rescue! fail!
198
- alias catch! fail!
199
-
200
- def always(&block)
201
- self ^ Promise.new(always: block)
202
- end
203
-
204
- def always!(&block)
205
- there_can_be_only_one!
206
- always(&block)
207
- end
208
-
209
- alias finally always
210
- alias ensure always
211
- alias finally! always!
212
- alias ensure! always!
213
-
214
- def trace(depth = nil, &block)
215
- self ^ Trace.new(depth, block)
216
- end
217
-
218
- def trace!(*args, &block)
219
- there_can_be_only_one!
220
- trace(*args, &block)
221
- end
222
-
223
- def there_can_be_only_one!
224
- if @next.any?
225
- raise ArgumentError, 'a promise has already been chained'
226
- end
227
- end
228
-
229
- def inspect
230
- result = "#<#{self.class}(#{object_id})"
231
-
232
- if @next.any?
233
- result += " >> #{@next.inspect}"
234
- end
235
-
236
- if realized?
237
- result += ": #{(@value || @error).inspect}>"
238
- else
239
- result += ">"
240
- end
241
-
242
- result
243
- end
244
-
245
- class Trace < self
246
- def self.it(promise)
247
- current = []
248
-
249
- if promise.act? || promise.prev.nil?
250
- current.push(promise.value)
251
- end
252
-
253
- if prev = promise.prev
254
- current.concat(it(prev))
255
- else
256
- current
257
- end
258
- end
259
-
260
- def initialize(depth, block)
261
- @depth = depth
262
-
263
- super success: proc {
264
- trace = Trace.it(self).reverse
265
- trace.pop
266
-
267
- if depth && depth <= trace.length
268
- trace.shift(trace.length - depth)
269
- end
270
-
271
- block.call(*trace)
272
- }
273
- end
274
- end
275
-
276
- class When < self
277
- def initialize(promises = [])
278
- super()
279
-
280
- @wait = []
281
-
282
- promises.each {|promise|
283
- wait promise
284
- }
285
- end
286
-
287
- def each(&block)
288
- raise ArgumentError, 'no block given' unless block
289
-
290
- self.then {|values|
291
- values.each(&block)
292
- }
293
- end
294
-
295
- def collect(&block)
296
- raise ArgumentError, 'no block given' unless block
297
-
298
- self.then {|values|
299
- When.new(values.map(&block))
300
- }
301
- end
302
-
303
- def inject(*args, &block)
304
- self.then {|values|
305
- values.reduce(*args, &block)
306
- }
307
- end
308
-
309
- alias map collect
310
-
311
- alias reduce inject
312
-
313
- def wait(promise)
314
- unless Promise === promise
315
- promise = Promise.value(promise)
316
- end
317
-
318
- if promise.act?
319
- promise = promise.then
320
- end
321
-
322
- @wait << promise
323
-
324
- promise.always {
325
- try if @next.any?
326
- }
327
-
328
- self
329
- end
330
-
331
- alias and wait
332
-
333
- def >>(*)
334
- super.tap {
335
- try
336
- }
337
- end
338
-
339
- def try
340
- if @wait.all?(&:realized?)
341
- if promise = @wait.find(&:rejected?)
342
- reject(promise.error)
343
- else
344
- resolve(@wait.map(&:value))
345
- end
346
- end
347
- end
348
- end
349
- end
1
+ opal_path = Gem::Specification.find_by_name('opal').full_gem_path
2
+ promise_path = File.join(opal_path, 'stdlib', 'promise.rb')
3
+ require promise_path
@@ -1,3 +1,3 @@
1
1
  module Redux
2
- VERSION = '4.0.17'
2
+ VERSION = '4.0.18'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: isomorfeus-redux
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.17
4
+ version: 4.0.18
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jan Biedermann
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-01-19 00:00:00.000000000 Z
11
+ date: 2020-02-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: opal