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 +4 -4
- data/lib/bowser/version.rb +1 -1
- data/opal/bowser/cookie.rb +61 -0
- data/opal/bowser/indexed_db.rb +33 -6
- data/opal/bowser/websocket.rb +2 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1c64ab47af4f205533b6862c356ac7683ec67ce9a366db661f3d102a19643d34
|
4
|
+
data.tar.gz: fe09c481650814b17004454f177967d6a505436620489d567a0e300e202c38d0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 27f6bc8021abd354453e9bd302fc9c1b69245cdae5a9343209181e9f7ad0f5fcf3a7bffeaddc76d4e79e4cd9b52af5cbd764350f30d1c6d24a1f7c890e22ed2d
|
7
|
+
data.tar.gz: 5a1e2bc54f127ea0878617cb2a553c6d39bd8826746f320c164f1bd653326caac3f5e37adc04f3259ab15c9ae7ea35487b13a0931efd95f4f5e4ef87993271dc
|
data/lib/bowser/version.rb
CHANGED
@@ -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
|
data/opal/bowser/indexed_db.rb
CHANGED
@@ -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 =
|
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
|
data/opal/bowser/websocket.rb
CHANGED
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
|
+
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-
|
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
|