puppeteer-bidi 0.0.3.beta3 → 0.0.3.beta4

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: eb435eba199162f3270ff09d0efeaf728935717f0c690a0549f176f1be06e072
4
- data.tar.gz: 7a39e4c65471997c4d37f4558459121a9370769dbf341b7f45b6d2441175b60e
3
+ metadata.gz: b794392cacbce5b48461723974e67a0e22502bad38c1aa80a49474b1a68d0839
4
+ data.tar.gz: cfb0d15e44f66ed1ae5b2bc4bdb3d3d51cef2a58fedd589595ec12da0d7b7493
5
5
  SHA512:
6
- metadata.gz: 1d9b44c59dda746bae25de8ad9e37c9576867fd5f39b434e39e0ea2cb1ce30d05e943496d787e9cc254d5747af1ce8514818dce67c5778861345617788c2b6af
7
- data.tar.gz: 5d80cc021677292638eb0103cf7aca8f9c87309fcb858425360b1ac6f937f2d5d1e5386c5b30e738589fc787ab7f609a271af18d682ac9452b95ae5fec25d765
6
+ metadata.gz: 9c0aad71fa66ac6e9a8d04db539d58eabcf68c405816e2692a6c228c42f6a03608fb37bd254b11bf87e87984253c87641c7d6b51d1a2f85c4b921c0fee69bfa3
7
+ data.tar.gz: 42eb5accee635501e56df09026fa506cf1772f188ac7d2f6b595e8b70d6428380cb4a4d97023436d284a0fae8db056a00ef41d5c69fad4f67326c2a0d67ee108
@@ -3,7 +3,6 @@
3
3
 
4
4
  require "async"
5
5
  require "async/promise"
6
- require "async/queue"
7
6
  require "delegate"
8
7
  require "thread"
9
8
 
@@ -11,6 +10,18 @@ module Puppeteer
11
10
  module Bidi
12
11
  # Runs a dedicated Async reactor in a background thread and proxies calls into it.
13
12
  class ReactorRunner
13
+ class Finalizer
14
+ def initialize(queue, thread)
15
+ @queue = queue
16
+ @thread = thread
17
+ end
18
+
19
+ def call(_id)
20
+ @queue.close
21
+ @thread.join unless ::Thread.current == @thread
22
+ end
23
+ end
24
+
14
25
  class Proxy < SimpleDelegator
15
26
  # @rbs runner: ReactorRunner -- Reactor runner
16
27
  # @rbs target: untyped -- Target object to proxy
@@ -78,20 +89,27 @@ module Puppeteer
78
89
 
79
90
  # @rbs return: void
80
91
  def initialize
81
- @queue = Async::Queue.new
92
+ @queue = Thread::Queue.new
82
93
  @ready = Queue.new
83
94
  @closed = false
84
95
  @thread = Thread.new do
85
- Sync do |task|
86
- @ready << true
87
- @queue.async(parent: task) do |_async_task, job|
88
- job.call
96
+ begin
97
+ Sync do |task|
98
+ @ready << true
99
+ while (job = @queue.pop)
100
+ task.async do
101
+ job.call
102
+ end
103
+ end
89
104
  end
105
+ rescue ClosedQueueError
106
+ # Queue closed; exit the reactor loop.
90
107
  ensure
91
108
  @closed = true
92
109
  end
93
110
  end
94
111
 
112
+ ObjectSpace.define_finalizer(self, Finalizer.new(@queue, @thread))
95
113
  @ready.pop
96
114
  end
97
115
 
@@ -103,16 +121,12 @@ module Puppeteer
103
121
 
104
122
  promise = Async::Promise.new
105
123
  job = lambda do
106
- begin
107
- promise.resolve(block.call)
108
- rescue => e
109
- promise.reject(e)
110
- end
124
+ Async::Promise.fulfill(promise, &block)
111
125
  end
112
126
 
113
127
  begin
114
128
  @queue << job
115
- rescue Async::Queue::ClosedError
129
+ rescue ClosedQueueError
116
130
  raise Error, "ReactorRunner is closed"
117
131
  end
118
132
 
@@ -101,7 +101,7 @@ module Puppeteer
101
101
  next if message.nil?
102
102
 
103
103
  Async do
104
- data = JSON.parse(message)
104
+ data = JSON.parse(message.to_str)
105
105
  debug_print_receive(data)
106
106
  @on_message&.call(data)
107
107
  rescue JSON::ParserError => e
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Puppeteer
4
4
  module Bidi
5
- VERSION = "0.0.3.beta3"
5
+ VERSION = "0.0.3.beta4"
6
6
  end
7
7
  end
data/sig/_external.rbs CHANGED
@@ -34,6 +34,7 @@ module Async
34
34
  def reject: (Exception) -> void
35
35
  def resolved?: () -> bool
36
36
  def value: () -> T?
37
+ def self.fulfill: [U] (Promise[U]) { () -> U } -> U
37
38
  end
38
39
 
39
40
  class TimeoutError < StandardError
@@ -4,6 +4,12 @@ module Puppeteer
4
4
  module Bidi
5
5
  # Runs a dedicated Async reactor in a background thread and proxies calls into it.
6
6
  class ReactorRunner
7
+ class Finalizer
8
+ def initialize: (untyped queue, untyped thread) -> untyped
9
+
10
+ def call: (untyped _id) -> untyped
11
+ end
12
+
7
13
  class Proxy < SimpleDelegator
8
14
  # @rbs runner: ReactorRunner -- Reactor runner
9
15
  # @rbs target: untyped -- Target object to proxy
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: puppeteer-bidi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3.beta3
4
+ version: 0.0.3.beta4
5
5
  platform: ruby
6
6
  authors:
7
7
  - YusukeIwaki