live 0.13.0 → 0.13.1

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: '08c6f4d6d5b5fc0e7ba635b617256c06ca84c925b528b99e4ab758bf6461af19'
4
- data.tar.gz: 69266f1a602d85f9f3d14104a2548304498ed38310f34ffa5dfe9e3e9d48aed6
3
+ metadata.gz: bf47630cac82b5611f454d7c61b1db67d8802c91eabc819d44d2e1a82ffd1d96
4
+ data.tar.gz: ce5bcd2dd5a5bc0c98357eb963aaa38ff83c4e312da85c0f3b4e79ca546e6d72
5
5
  SHA512:
6
- metadata.gz: a4e608d98be19c629dd8cba31cb5be8eeac52de4a5fb007ba4822f0baf8b473e16aa4db604585b8ff481d39292c2986408b2d3977667b77552de1cff31b4a85c
7
- data.tar.gz: 1fa963047b5369012f008c57061a585345d98922082d3c744b032ae15c8599a928f7a9c5b12169ac2242cb1f013b55404cce13f4cd4a2763259eda23b8fe06ac
6
+ metadata.gz: cd5eaca0a5038361c60d13de5bc8b5e8e5ce66f0e828c74c0c199d6a8d9706bee31fbeff1365155b41b59241c2be4f405f6d1186c44b928510d1d94ad7e42000
7
+ data.tar.gz: 0f0956b2f4a4d79af54ee01e965585d370633eac1ad23ded24c817e43f0b7b8dd681a5187607fe2fdf4fa52be385f4c20ec25a09c55ceee5c00fe846c8a4cde1
checksums.yaml.gz.sig CHANGED
Binary file
data/lib/live/element.rb CHANGED
@@ -3,8 +3,8 @@
3
3
  # Released under the MIT License.
4
4
  # Copyright, 2021-2024, by Samuel Williams.
5
5
 
6
- require 'json'
7
- require 'securerandom'
6
+ require "json"
7
+ require "securerandom"
8
8
 
9
9
  module Live
10
10
  class PageError < RuntimeError
data/lib/live/page.rb CHANGED
@@ -3,14 +3,16 @@
3
3
  # Released under the MIT License.
4
4
  # Copyright, 2021-2024, by Samuel Williams.
5
5
 
6
- require_relative 'element'
7
- require_relative 'resolver'
6
+ require_relative "element"
7
+ require_relative "resolver"
8
8
 
9
- require 'async'
10
- require 'async/queue'
9
+ require "async"
10
+ require "async/queue"
11
11
 
12
- require 'protocol/websocket'
13
- require 'protocol/websocket/message'
12
+ require "protocol/websocket"
13
+ require "protocol/websocket/message"
14
+
15
+ require "console/event/failure"
14
16
 
15
17
  module Live
16
18
  # Represents a connected client page with bound dynamic content areas.
@@ -74,30 +76,34 @@ module Live
74
76
 
75
77
  def close
76
78
  @elements.each do |id, element|
77
- element.close
79
+ begin
80
+ element.close
81
+ rescue => error
82
+ Console::Event::Failure.for(error).emit(self)
83
+ end
78
84
  end
79
85
  end
80
86
 
81
87
  # Process a single incoming message from the network.
82
88
  def process_message(message)
83
89
  case message[0]
84
- when 'bind'
90
+ when "bind"
85
91
  # Bind a client-side element to a server-side element.
86
92
  if element = self.resolve(message[1], message[2])
87
93
  self.bind(element)
88
94
  else
89
95
  Console.warn(self, "Could not resolve element:", message)
90
- @updates.enqueue(['error', message[1], "Could not resolve element!"])
96
+ @updates.enqueue(["error", message[1], "Could not resolve element!"])
91
97
  end
92
- when 'unbind'
98
+ when "unbind"
93
99
  # Unbind a client-side element from a server-side element.
94
100
  if element = @elements.delete(message[1])
95
101
  element.close unless @attached.key?(message[1])
96
102
  else
97
103
  Console.warn(self, "Could not unbind element:", message)
98
- @updates.enqueue(['error', message[1], "Could not unbind element!"])
104
+ @updates.enqueue(["error", message[1], "Could not unbind element!"])
99
105
  end
100
- when 'event'
106
+ when "event"
101
107
  # Handle an event from the client.
102
108
  self.handle(message[1], message[2])
103
109
  else
@@ -111,14 +117,14 @@ module Live
111
117
  Sync do |task|
112
118
  queue_task = task.async do
113
119
  while update = @updates.dequeue
114
- Console.debug(self, "Sending update:", update)
115
120
  ::Protocol::WebSocket::TextMessage.generate(update).send(connection)
121
+
122
+ # Flush the output if there are no more updates:
116
123
  connection.flush if @updates.empty?
117
124
  end
118
125
  end
119
126
 
120
127
  while message = connection.read
121
- Console.debug(self, "Reading message:", message)
122
128
  process_message(message.parse)
123
129
  end
124
130
  ensure
data/lib/live/resolver.rb CHANGED
@@ -3,7 +3,7 @@
3
3
  # Released under the MIT License.
4
4
  # Copyright, 2021-2024, by Samuel Williams.
5
5
 
6
- require_relative 'element'
6
+ require_relative "element"
7
7
 
8
8
  module Live
9
9
  # Resolves a client-side tag into a server-side instance.
data/lib/live/version.rb CHANGED
@@ -4,5 +4,5 @@
4
4
  # Copyright, 2021-2024, by Samuel Williams.
5
5
 
6
6
  module Live
7
- VERSION = "0.13.0"
7
+ VERSION = "0.13.1"
8
8
  end
data/lib/live/view.rb CHANGED
@@ -3,8 +3,8 @@
3
3
  # Released under the MIT License.
4
4
  # Copyright, 2021-2024, by Samuel Williams.
5
5
 
6
- require_relative 'element'
7
- require 'xrb/builder'
6
+ require_relative "element"
7
+ require "xrb/builder"
8
8
 
9
9
  module Live
10
10
  # Represents a single division of content on the page an provides helpers for rendering the content.
@@ -12,7 +12,7 @@ module Live
12
12
  # @returns [Object] The generated HTML.
13
13
  def to_html
14
14
  XRB::Builder.fragment do |builder|
15
- builder.inline_tag :div, id: @id, class: 'live', data: @data do
15
+ builder.inline_tag :div, id: @id, class: "live", data: @data do
16
16
  render(builder)
17
17
  end
18
18
  end
data/lib/live.rb CHANGED
@@ -5,6 +5,6 @@
5
5
 
6
6
  require_relative "live/version"
7
7
 
8
- require_relative 'live/page'
9
- require_relative 'live/view'
10
- require_relative 'live/resolver'
8
+ require_relative "live/page"
9
+ require_relative "live/view"
10
+ require_relative "live/resolver"
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: live
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.13.0
4
+ version: 0.13.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samuel Williams
@@ -39,7 +39,7 @@ cert_chain:
39
39
  Q2K9NVun/S785AP05vKkXZEFYxqG6EW012U4oLcFl5MySFajYXRYbuUpH6AY+HP8
40
40
  voD0MPg1DssDLKwXyt1eKD/+Fq0bFWhwVM/1XiAXL7lyYUyOq24KHgQ2Csg=
41
41
  -----END CERTIFICATE-----
42
- date: 2024-07-05 00:00:00.000000000 Z
42
+ date: 2024-09-23 00:00:00.000000000 Z
43
43
  dependencies:
44
44
  - !ruby/object:Gem::Dependency
45
45
  name: async-websocket
@@ -104,7 +104,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
104
104
  - !ruby/object:Gem::Version
105
105
  version: '0'
106
106
  requirements: []
107
- rubygems_version: 3.5.11
107
+ rubygems_version: 3.4.19
108
108
  signing_key:
109
109
  specification_version: 4
110
110
  summary: Live HTML tags updated via a WebSocket.
metadata.gz.sig CHANGED
Binary file