bowser 1.0.4 → 1.0.5

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: '0976380b083433a0eb0eca5aade90211d8536bd5bdf23dd1e25396023b82580a'
4
- data.tar.gz: 8acc48bf5de8fad4acf6c7e65914add41bd80d8941d401440e38875af36c1e7b
3
+ metadata.gz: be51bf65ec21bb7818a6757b0496f0ae99179c787b71929b6c76d8c0ce757bb5
4
+ data.tar.gz: 2f8f294e6f61adcd65f3f13f9d349a5b627ac9d96cddf4f391c8a2e44c0a743e
5
5
  SHA512:
6
- metadata.gz: d9dc608c20a45b8eae84694a77c99c21179aff280dd76b2b9e89daa844018b90896330d6f83edb59081d92dbfe24922f4a83a06e3d098b6c61508aae2feb0b7c
7
- data.tar.gz: f78894ca62e9f22baa55ca641bfb49cad23b51558c879edfaa32d6dfa81ae172e7cda14a9289d2448d91cfaa67ab91e00b436084d6054052f15938b003f18c96
6
+ metadata.gz: f6bf23f58406cf0381d91a9cb65a4aae8a97bce00ecdf92946da67b2e5839556423640903ee4b8d4d2000fb3565c008cc4ec4f2d2793e08c0bcfd2b27d905b96
7
+ data.tar.gz: d4e6096765dd4a2dd215a8011a7b7f221b44b81f408a822b53d3cd0a357b048e3af2924b550da9e5eac9f590b02fe468e07eec3ae0e89e888f5e78ecf30b3d50
@@ -1,3 +1,3 @@
1
1
  module Bowser
2
- VERSION = "1.0.4"
2
+ VERSION = "1.0.5"
3
3
  end
@@ -0,0 +1,28 @@
1
+ module Bowser
2
+ module Fetch
3
+ class Response
4
+ include DelegateNative
5
+
6
+ def json
7
+ ::Bowser::Promise.from_native(
8
+ `#@native
9
+ .json()
10
+ .then(function(value) { return #{::Opal::JSON.from_object(`value`)} })`
11
+ )
12
+ end
13
+
14
+ def text
15
+ ::Bowser::Promise.from_native `#@native.text()`
16
+ end
17
+ end
18
+ end
19
+ end
20
+
21
+ module Kernel
22
+ def fetch url, **options
23
+ ::Bowser::Promise.from_native(`fetch(#{url}, #{options.to_n})
24
+ .then(function(response) {
25
+ return #{::Bowser::Fetch::Response.new(`response`);
26
+ }})`)
27
+ end
28
+ end
@@ -219,7 +219,12 @@ module Bowser
219
219
 
220
220
  value = `Object.assign(#{klass.allocate}, #{js_obj})`
221
221
  `results.push(value)`
222
- `(!(count < index++)) ? #{cursor}.continue() : #{p.resolve results}`
222
+
223
+ if `count != null && (++index < count)`
224
+ `#{cursor}.continue()`
225
+ else
226
+ p.resolve results
227
+ end
223
228
  else
224
229
  p.resolve results
225
230
  end
@@ -2,6 +2,19 @@ module Bowser
2
2
  class Promise
3
3
  attr_reader :value
4
4
 
5
+ if RUBY_ENGINE == 'opal'
6
+ def self.from_native promise
7
+ new do |p|
8
+ %x{
9
+ #{promise}.then(
10
+ function(value) { #{p.resolve(`value`)} },
11
+ function(reason) { #{p.reject(`reason`)} }
12
+ )
13
+ }
14
+ end
15
+ end
16
+ end
17
+
5
18
  def self.race promises
6
19
  new do |promise|
7
20
  promises.each do |p|
@@ -35,11 +48,14 @@ module Bowser
35
48
  @callbacks = []
36
49
 
37
50
  yield self if block_given?
51
+
52
+ @then = method(:then).to_proc
53
+ @catch = method(:catch).to_proc
38
54
  end
39
55
 
40
- def then &block
56
+ def then handler=nil, &block
41
57
  self.class.new do |p|
42
- callback = SuccessCallback.new(p, block)
58
+ callback = SuccessCallback.new(p, handler || block)
43
59
 
44
60
  if pending?
45
61
  @callbacks << callback
@@ -51,9 +67,9 @@ module Bowser
51
67
  end
52
68
  end
53
69
 
54
- def catch &block
70
+ def catch handler=nil, &block
55
71
  self.class.new do |p|
56
- callback = FailureCallback.new(p, block)
72
+ callback = FailureCallback.new(p, handler || block)
57
73
 
58
74
  if pending?
59
75
  @callbacks << callback
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bowser
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.4
4
+ version: 1.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jamie Gaskins
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-09-15 00:00:00.000000000 Z
11
+ date: 2019-01-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: opal
@@ -116,6 +116,7 @@ files:
116
116
  - opal/bowser/element/media.rb
117
117
  - opal/bowser/event.rb
118
118
  - opal/bowser/event_target.rb
119
+ - opal/bowser/fetch.rb
119
120
  - opal/bowser/file_list.rb
120
121
  - opal/bowser/geolocation.rb
121
122
  - opal/bowser/http.rb