live 0.13.0 → 0.13.1

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