bowser 1.0.1 → 1.0.2

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: 8f53f24efe36fd9a16441cc3a47d0d842d365223a3a7a96f9236346bf92378a5
4
- data.tar.gz: 701ab252671234c052d4c3ea69b6dfadb5e830e21dec5016ba8711ee06941848
3
+ metadata.gz: 1c64ab47af4f205533b6862c356ac7683ec67ce9a366db661f3d102a19643d34
4
+ data.tar.gz: fe09c481650814b17004454f177967d6a505436620489d567a0e300e202c38d0
5
5
  SHA512:
6
- metadata.gz: cb8bec025144f5e66a2d1a2d4779631823f7eb84e25546a9a10230da5d840744240120ffcc56919cf6b0cef73ac3e833e7bdace629cc8b785123c46e2afa5f2f
7
- data.tar.gz: 1357dd5e1facd10aafb5e844504be9a7fcffc47e7018d18e59e1f2ce7b1d4b6ffa2a4317fc817ef9ced838f7d27ef75137e5c893eafaae0049501f7613afd2cc
6
+ metadata.gz: 27f6bc8021abd354453e9bd302fc9c1b69245cdae5a9343209181e9f7ad0f5fcf3a7bffeaddc76d4e79e4cd9b52af5cbd764350f30d1c6d24a1f7c890e22ed2d
7
+ data.tar.gz: 5a1e2bc54f127ea0878617cb2a553c6d39bd8826746f320c164f1bd653326caac3f5e37adc04f3259ab15c9ae7ea35487b13a0931efd95f4f5e4ef87993271dc
@@ -1,3 +1,3 @@
1
1
  module Bowser
2
- VERSION = "1.0.1"
2
+ VERSION = "1.0.2"
3
3
  end
@@ -0,0 +1,61 @@
1
+ module Bowser
2
+ class Cookie
3
+ def self.all
4
+ native
5
+ .split(';')
6
+ .map { |cookie| from_native(cookie) }
7
+ end
8
+
9
+ def self.[] key
10
+ all.find { |cookie| cookie.key == key }
11
+ end
12
+
13
+ def self.delete key
14
+ `document.cookie = #{"#{key}=; expires=#{`#{Time.now}.toUTCString()`}"}`
15
+ nil
16
+ end
17
+
18
+ def self.from_native string
19
+ new *string.split('=', 2)
20
+ end
21
+
22
+ def self.native
23
+ `document.cookie`
24
+ end
25
+
26
+ def self.set **attrs
27
+ attrs.map do |key, value|
28
+ new(key, value).set
29
+ end
30
+ end
31
+
32
+ attr_reader :key, :value
33
+
34
+ def initialize key, value, **options
35
+ @key = key.strip
36
+ @value = value
37
+ @options = options
38
+ end
39
+
40
+ def delete
41
+ `document.cookie = "#@key=; expires=0"`
42
+ nil
43
+ end
44
+
45
+ def set
46
+ options = @options.map do |opt, value|
47
+ "; #{opt}=#{
48
+ case value
49
+ when Date
50
+ `#{value}.toUTCString()`
51
+ else
52
+ value
53
+ end
54
+ }"
55
+ end
56
+
57
+ `document.cookie = #{"#@key=#@value#{options.join}"}`
58
+ self
59
+ end
60
+ end
61
+ end
@@ -128,15 +128,15 @@ module Bowser
128
128
  p
129
129
  end
130
130
 
131
- def get_all klass, count: nil, index: nil
131
+ def get_all klass, count: nil, index: nil, &block
132
+ if index
133
+ return index(index).get_all(klass, count: count, &block)
134
+ end
135
+
132
136
  Promise.new do |p|
133
137
  query = block_given? ? yield(Query.new) : `undefined`
134
138
 
135
- request = if index
136
- index(index).get_all(klass, count: count)
137
- else
138
- Request.new(`#@native.getAll(#{query}, #{count || `undefined`})`)
139
- end
139
+ request = Request.new(`#@native.getAll(#{query}, #{count || `undefined`})`)
140
140
  request.on :success do |event|
141
141
  p.resolve event.target.result.map { |js_obj|
142
142
  `delete #{js_obj}.$$id` # Remove old Ruby runtime metadata
@@ -201,6 +201,33 @@ module Bowser
201
201
 
202
202
  p
203
203
  end
204
+
205
+ def cursor klass, direction: :next, count: `undefined`
206
+ query = block_given? ? (yield Query.new) : `undefined`
207
+
208
+ Promise.new do |p|
209
+ results = []
210
+ req = `#@native.openCursor(#{query}, #{direction})`
211
+ index = 0
212
+
213
+ %x{
214
+ req.onsuccess = #{proc { |event|
215
+ cursor = `event.target.result`
216
+ if `#{cursor}`
217
+ js_obj = `#{cursor}.value`
218
+ `delete #{js_obj}.$$id` # Remove old Ruby runtime metadata
219
+
220
+ value = `Object.assign(#{klass.allocate}, #{js_obj})`
221
+ `results.push(value)`
222
+ `(!(count < index++)) ? #{cursor}.continue() : #{p.resolve results}`
223
+ else
224
+ p.resolve results
225
+ end
226
+ }};
227
+ req.onerror = #{proc { |e| p.reject e }};
228
+ }
229
+ end
230
+ end
204
231
  end
205
232
 
206
233
  class Query
@@ -64,6 +64,8 @@ module Bowser
64
64
  #
65
65
  # @param reason [String, nil] the reason this socket is being closed
66
66
  def close reason=`undefined`
67
+ @autoreconnect = false
68
+ @handlers = {}
67
69
  `#@native.close(reason)`
68
70
  end
69
71
 
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.1
4
+ version: 1.0.2
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-07-08 00:00:00.000000000 Z
11
+ date: 2018-08-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: opal
@@ -108,6 +108,7 @@ files:
108
108
  - lib/bowser.rb
109
109
  - lib/bowser/version.rb
110
110
  - opal/bowser.rb
111
+ - opal/bowser/cookie.rb
111
112
  - opal/bowser/delegate_native.rb
112
113
  - opal/bowser/document.rb
113
114
  - opal/bowser/element.rb