puppeteer-bidi 0.0.1.beta1 → 0.0.1.beta3

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.
Files changed (84) hide show
  1. checksums.yaml +4 -4
  2. data/CLAUDE.md +50 -4
  3. data/README.md +8 -1
  4. data/Steepfile +36 -0
  5. data/lib/puppeteer/bidi/async_utils.rb +1 -0
  6. data/lib/puppeteer/bidi/browser.rb +38 -24
  7. data/lib/puppeteer/bidi/browser_context.rb +13 -4
  8. data/lib/puppeteer/bidi/browser_launcher.rb +1 -0
  9. data/lib/puppeteer/bidi/connection.rb +26 -9
  10. data/lib/puppeteer/bidi/core/browser.rb +15 -14
  11. data/lib/puppeteer/bidi/core/browsing_context.rb +64 -46
  12. data/lib/puppeteer/bidi/core/disposable.rb +10 -3
  13. data/lib/puppeteer/bidi/core/errors.rb +18 -1
  14. data/lib/puppeteer/bidi/core/event_emitter.rb +18 -9
  15. data/lib/puppeteer/bidi/core/navigation.rb +4 -3
  16. data/lib/puppeteer/bidi/core/realm.rb +29 -26
  17. data/lib/puppeteer/bidi/core/request.rb +33 -29
  18. data/lib/puppeteer/bidi/core/session.rb +14 -11
  19. data/lib/puppeteer/bidi/core/user_context.rb +17 -16
  20. data/lib/puppeteer/bidi/core/user_prompt.rb +8 -7
  21. data/lib/puppeteer/bidi/core.rb +1 -0
  22. data/lib/puppeteer/bidi/deserializer.rb +1 -0
  23. data/lib/puppeteer/bidi/element_handle.rb +52 -52
  24. data/lib/puppeteer/bidi/errors.rb +1 -0
  25. data/lib/puppeteer/bidi/file_chooser.rb +1 -0
  26. data/lib/puppeteer/bidi/frame.rb +70 -70
  27. data/lib/puppeteer/bidi/http_response.rb +1 -0
  28. data/lib/puppeteer/bidi/injected_source.rb +1 -0
  29. data/lib/puppeteer/bidi/js_handle.rb +23 -23
  30. data/lib/puppeteer/bidi/keyboard.rb +24 -13
  31. data/lib/puppeteer/bidi/lazy_arg.rb +1 -0
  32. data/lib/puppeteer/bidi/mouse.rb +31 -18
  33. data/lib/puppeteer/bidi/page.rb +87 -87
  34. data/lib/puppeteer/bidi/query_handler.rb +3 -0
  35. data/lib/puppeteer/bidi/realm.rb +70 -6
  36. data/lib/puppeteer/bidi/serializer.rb +1 -0
  37. data/lib/puppeteer/bidi/target.rb +24 -0
  38. data/lib/puppeteer/bidi/task_manager.rb +9 -3
  39. data/lib/puppeteer/bidi/timeout_settings.rb +1 -0
  40. data/lib/puppeteer/bidi/transport.rb +1 -0
  41. data/lib/puppeteer/bidi/version.rb +1 -1
  42. data/lib/puppeteer/bidi/wait_task.rb +1 -0
  43. data/lib/puppeteer/bidi.rb +8 -4
  44. data/sig/_external.rbs +128 -0
  45. data/sig/_supplementary.rbs +20 -0
  46. data/sig/puppeteer/bidi/async_utils.rbs +68 -0
  47. data/sig/puppeteer/bidi/browser.rbs +35 -26
  48. data/sig/puppeteer/bidi/browser_context.rbs +39 -0
  49. data/sig/puppeteer/bidi/browser_launcher.rbs +45 -0
  50. data/sig/puppeteer/bidi/connection.rbs +67 -0
  51. data/sig/puppeteer/bidi/core/browser.rbs +79 -0
  52. data/sig/puppeteer/bidi/core/browsing_context.rbs +210 -0
  53. data/sig/puppeteer/bidi/core/disposable.rbs +42 -0
  54. data/sig/puppeteer/bidi/core/errors.rbs +65 -0
  55. data/sig/puppeteer/bidi/core/event_emitter.rbs +50 -0
  56. data/sig/puppeteer/bidi/core/navigation.rbs +37 -0
  57. data/sig/puppeteer/bidi/core/realm.rbs +132 -0
  58. data/sig/puppeteer/bidi/core/request.rbs +120 -0
  59. data/sig/puppeteer/bidi/core/session.rbs +65 -0
  60. data/sig/puppeteer/bidi/core/user_context.rbs +72 -0
  61. data/sig/puppeteer/bidi/core/user_prompt.rbs +52 -0
  62. data/sig/puppeteer/bidi/core.rbs +9 -0
  63. data/sig/puppeteer/bidi/deserializer.rbs +28 -0
  64. data/sig/puppeteer/bidi/element_handle.rbs +52 -52
  65. data/sig/puppeteer/bidi/errors.rbs +34 -0
  66. data/sig/puppeteer/bidi/file_chooser.rbs +27 -0
  67. data/sig/puppeteer/bidi/frame.rbs +70 -70
  68. data/sig/puppeteer/bidi/http_response.rbs +18 -0
  69. data/sig/puppeteer/bidi/injected_source.rbs +21 -0
  70. data/sig/puppeteer/bidi/js_handle.rbs +23 -23
  71. data/sig/puppeteer/bidi/keyboard.rbs +57 -0
  72. data/sig/puppeteer/bidi/lazy_arg.rbs +15 -0
  73. data/sig/puppeteer/bidi/mouse.rbs +73 -0
  74. data/sig/puppeteer/bidi/page.rbs +87 -87
  75. data/sig/puppeteer/bidi/query_handler.rbs +113 -0
  76. data/sig/puppeteer/bidi/realm.rbs +141 -0
  77. data/sig/puppeteer/bidi/serializer.rbs +31 -0
  78. data/sig/puppeteer/bidi/target.rbs +68 -0
  79. data/sig/puppeteer/bidi/task_manager.rbs +36 -0
  80. data/sig/puppeteer/bidi/timeout_settings.rbs +14 -0
  81. data/sig/puppeteer/bidi/transport.rbs +43 -0
  82. data/sig/puppeteer/bidi/wait_task.rbs +62 -0
  83. data/sig/puppeteer/bidi.rbs +8 -4
  84. metadata +36 -1
@@ -0,0 +1,36 @@
1
+ # Generated from lib/puppeteer/bidi/task_manager.rb with RBS::Inline
2
+
3
+ module Puppeteer
4
+ module Bidi
5
+ # TaskManager tracks active WaitTask instances to enable coordinated lifecycle management
6
+ # This is a faithful port of Puppeteer's TaskManager implementation:
7
+ # https://github.com/puppeteer/puppeteer/blob/main/packages/puppeteer-core/src/common/WaitTask.ts
8
+ class TaskManager
9
+ # @rbs return: void
10
+ def initialize: () -> void
11
+
12
+ # Add a task to the manager
13
+ # Corresponds to Puppeteer's add(task: WaitTask<any>): void
14
+ # @rbs task: WaitTask -- Task to add
15
+ # @rbs return: void
16
+ def add: (WaitTask task) -> void
17
+
18
+ # Delete a task from the manager
19
+ # Corresponds to Puppeteer's delete(task: WaitTask<any>): void
20
+ # @rbs task: WaitTask -- Task to delete
21
+ # @rbs return: void
22
+ def delete: (WaitTask task) -> void
23
+
24
+ # Terminate all tasks with an optional error
25
+ # Corresponds to Puppeteer's terminateAll(error?: Error): void
26
+ # @rbs error: Exception? -- Error to terminate with
27
+ # @rbs return: void
28
+ def terminate_all: (?Exception? error) -> void
29
+
30
+ # Rerun all tasks in parallel
31
+ # Corresponds to Puppeteer's async rerunAll(): Promise<void>
32
+ # @rbs return: void
33
+ def rerun_all: () -> void
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,14 @@
1
+ # Generated from lib/puppeteer/bidi/timeout_settings.rb with RBS::Inline
2
+
3
+ module Puppeteer
4
+ module Bidi
5
+ # Minimal timeout settings helper to share default wait values across realms.
6
+ class TimeoutSettings
7
+ def initialize: (untyped default_timeout) -> untyped
8
+
9
+ def timeout: () -> untyped
10
+
11
+ def set_default_timeout: (untyped timeout) -> untyped
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,43 @@
1
+ # Generated from lib/puppeteer/bidi/transport.rb with RBS::Inline
2
+
3
+ module Puppeteer
4
+ module Bidi
5
+ # Transport handles WebSocket communication with BiDi server
6
+ # This is the lowest layer that manages raw WebSocket send/receive
7
+ class Transport
8
+ class ClosedError < Error
9
+ end
10
+
11
+ attr_reader url: untyped
12
+
13
+ def initialize: (untyped url) -> untyped
14
+
15
+ # Connect to WebSocket and start receiving messages
16
+ def connect: () -> untyped
17
+
18
+ # Send a message to BiDi server
19
+ def async_send_message: (untyped message) -> untyped
20
+
21
+ # Register message handler
22
+ def on_message: () ?{ (?) -> untyped } -> untyped
23
+
24
+ # Register close handler
25
+ def on_close: () ?{ (?) -> untyped } -> untyped
26
+
27
+ # Close the WebSocket connection
28
+ def close: () -> untyped
29
+
30
+ def closed?: () -> untyped
31
+
32
+ def connected?: () -> untyped
33
+
34
+ private
35
+
36
+ def receive_loop: (untyped connection) -> untyped
37
+
38
+ def debug_print_send: (untyped message) -> untyped
39
+
40
+ def debug_print_receive: (untyped message) -> untyped
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,62 @@
1
+ # Generated from lib/puppeteer/bidi/wait_task.rb with RBS::Inline
2
+
3
+ module Puppeteer
4
+ module Bidi
5
+ # WaitTask orchestrates polling for a predicate using Puppeteer's Poller classes.
6
+ # This is a faithful port of Puppeteer's WaitTask implementation:
7
+ # https://github.com/puppeteer/puppeteer/blob/main/packages/puppeteer-core/src/common/WaitTask.ts
8
+ #
9
+ # Note: signal and AbortSignal are not implemented as they are JavaScript-specific
10
+ class WaitTask
11
+ # Corresponds to Puppeteer's WaitTask constructor
12
+ # @param world [Realm] The realm to execute in (matches Puppeteer's World abstraction)
13
+ # @param options [Hash] Options for waiting
14
+ # @option options [String, Numeric] :polling Polling strategy ('raf', 'mutation', or interval in ms)
15
+ # @option options [Numeric] :timeout Timeout in milliseconds
16
+ # @option options [ElementHandle] :root Root element for mutation polling
17
+ # @param fn [String] JavaScript function to evaluate
18
+ # @param args [Array] Arguments to pass to the function
19
+ def initialize: (untyped world, untyped options, untyped fn, *untyped args) -> untyped
20
+
21
+ # Get the result as a promise
22
+ # Corresponds to Puppeteer's get result(): Promise<HandleFor<T>>
23
+ # @return [Async::Promise] Promise that resolves to JSHandle
24
+ def result: () -> untyped
25
+
26
+ # Rerun the polling task
27
+ # Corresponds to Puppeteer's async rerun(): Promise<void>
28
+ def rerun: () -> untyped
29
+
30
+ # Terminate the task
31
+ # Corresponds to Puppeteer's async terminate(error?: Error): Promise<void>
32
+ # @param error [Exception, nil] Error to reject with
33
+ def terminate: (?untyped error) -> untyped
34
+
35
+ private
36
+
37
+ # Run a single rerun cycle. Mirrors the async rerun logic from Puppeteer.
38
+ def perform_rerun: () -> untyped
39
+
40
+ # Create RAFPoller instance
41
+ # Corresponds to Puppeteer's evaluateHandle call for RAFPoller
42
+ def create_raf_poller: () -> untyped
43
+
44
+ # Create MutationPoller instance
45
+ # Corresponds to Puppeteer's evaluateHandle call for MutationPoller
46
+ def create_mutation_poller: () -> untyped
47
+
48
+ # Create IntervalPoller instance
49
+ # Corresponds to Puppeteer's evaluateHandle call for IntervalPoller
50
+ def create_interval_poller: () -> untyped
51
+
52
+ # Check if error should terminate task
53
+ # Corresponds to Puppeteer's getBadError(error: unknown): Error | undefined
54
+ # @param error [Exception] Error to check
55
+ # @return [Exception, nil] Error if it should terminate, nil if recoverable
56
+ def get_bad_error: (untyped error) -> untyped
57
+
58
+ # Safely stop and dispose a poller handle, ignoring cleanup errors
59
+ def stop_and_dispose_poller: (untyped poller) -> untyped
60
+ end
61
+ end
62
+ end
@@ -3,13 +3,17 @@
3
3
  module Puppeteer
4
4
  module Bidi
5
5
  # Launch a new browser instance
6
- # @rbs **options: untyped
7
- # @rbs return: Browser
6
+ # @rbs executable_path: String
7
+ # @rbs user_data_dir: String
8
+ # @rbs headless: bool
9
+ # @rbs args: Array[String]
10
+ # @rbs timeout: Numeric
11
+ # @rbs return: Browser -- Browser instance
8
12
  def self.launch: (**untyped options) -> Browser
9
13
 
10
14
  # Connect to an existing browser instance
11
- # @rbs ws_endpoint: String
12
- # @rbs return: Browser
15
+ # @rbs ws_endpoint: String -- WebSocket endpoint URL
16
+ # @rbs return: Browser -- Browser instance
13
17
  def self.connect: (String ws_endpoint) -> Browser
14
18
  end
15
19
  end
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.1.beta1
4
+ version: 0.0.1.beta3
5
5
  platform: ruby
6
6
  authors:
7
7
  - YusukeIwaki
@@ -101,6 +101,7 @@ files:
101
101
  - LICENSE.txt
102
102
  - README.md
103
103
  - Rakefile
104
+ - Steepfile
104
105
  - lib/puppeteer/bidi.rb
105
106
  - lib/puppeteer/bidi/async_utils.rb
106
107
  - lib/puppeteer/bidi/browser.rb
@@ -143,12 +144,46 @@ files:
143
144
  - lib/puppeteer/bidi/version.rb
144
145
  - lib/puppeteer/bidi/wait_task.rb
145
146
  - scripts/update_injected_source.rb
147
+ - sig/_external.rbs
148
+ - sig/_supplementary.rbs
146
149
  - sig/puppeteer/bidi.rbs
150
+ - sig/puppeteer/bidi/async_utils.rbs
147
151
  - sig/puppeteer/bidi/browser.rbs
152
+ - sig/puppeteer/bidi/browser_context.rbs
153
+ - sig/puppeteer/bidi/browser_launcher.rbs
154
+ - sig/puppeteer/bidi/connection.rbs
155
+ - sig/puppeteer/bidi/core.rbs
156
+ - sig/puppeteer/bidi/core/browser.rbs
157
+ - sig/puppeteer/bidi/core/browsing_context.rbs
158
+ - sig/puppeteer/bidi/core/disposable.rbs
159
+ - sig/puppeteer/bidi/core/errors.rbs
160
+ - sig/puppeteer/bidi/core/event_emitter.rbs
161
+ - sig/puppeteer/bidi/core/navigation.rbs
162
+ - sig/puppeteer/bidi/core/realm.rbs
163
+ - sig/puppeteer/bidi/core/request.rbs
164
+ - sig/puppeteer/bidi/core/session.rbs
165
+ - sig/puppeteer/bidi/core/user_context.rbs
166
+ - sig/puppeteer/bidi/core/user_prompt.rbs
167
+ - sig/puppeteer/bidi/deserializer.rbs
148
168
  - sig/puppeteer/bidi/element_handle.rbs
169
+ - sig/puppeteer/bidi/errors.rbs
170
+ - sig/puppeteer/bidi/file_chooser.rbs
149
171
  - sig/puppeteer/bidi/frame.rbs
172
+ - sig/puppeteer/bidi/http_response.rbs
173
+ - sig/puppeteer/bidi/injected_source.rbs
150
174
  - sig/puppeteer/bidi/js_handle.rbs
175
+ - sig/puppeteer/bidi/keyboard.rbs
176
+ - sig/puppeteer/bidi/lazy_arg.rbs
177
+ - sig/puppeteer/bidi/mouse.rbs
151
178
  - sig/puppeteer/bidi/page.rbs
179
+ - sig/puppeteer/bidi/query_handler.rbs
180
+ - sig/puppeteer/bidi/realm.rbs
181
+ - sig/puppeteer/bidi/serializer.rbs
182
+ - sig/puppeteer/bidi/target.rbs
183
+ - sig/puppeteer/bidi/task_manager.rbs
184
+ - sig/puppeteer/bidi/timeout_settings.rbs
185
+ - sig/puppeteer/bidi/transport.rbs
186
+ - sig/puppeteer/bidi/wait_task.rbs
152
187
  homepage: https://github.com/YusukeIwaki/puppeteer-bidi
153
188
  licenses:
154
189
  - MIT