isomorfeus-redux 4.0.17 → 4.0.18

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 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