puppeteer-bidi 0.0.1.beta2 → 0.0.1.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 +4 -4
- data/CLAUDE.md +11 -5
- data/lib/puppeteer/bidi/browser.rb +17 -22
- data/lib/puppeteer/bidi/core/request.rb +1 -1
- data/lib/puppeteer/bidi/realm.rb +1 -1
- data/lib/puppeteer/bidi/target.rb +0 -3
- data/lib/puppeteer/bidi/task_manager.rb +9 -3
- data/lib/puppeteer/bidi/version.rb +1 -1
- data/lib/puppeteer/bidi.rb +13 -12
- data/sig/_external.rbs +0 -6
- data/sig/puppeteer/bidi/browser.rbs +15 -13
- data/sig/puppeteer/bidi/core/request.rbs +2 -2
- data/sig/puppeteer/bidi/realm.rbs +1 -1
- data/sig/puppeteer/bidi/task_manager.rbs +36 -0
- data/sig/puppeteer/bidi.rbs +6 -4
- metadata +2 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 2d3afdcd6aeda92482fb530cab98075505ae8e6d9b76da6a8f65dc01d3f76ee6
|
|
4
|
+
data.tar.gz: 2c74ca2d812a27ad8051911cb213d008a6d4077781ca5ecf0b782a2a0f62d72e
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 0e900fd975d92973786eea9546f22f8b71afb2a856575c6ef15bba023285322abe888887c1b92458fa736d887cfff8192c0951738d75c91445d69cda46944740
|
|
7
|
+
data.tar.gz: 070afa10326ae5a789b70b40a55c5b5462dbb5599fc5b8e30b83cf8522752fe65d1c7959cc0e42d937d244a2e0fc23c050f0a48b89eb99f0c8fa5223bb924129
|
data/CLAUDE.md
CHANGED
|
@@ -86,14 +86,15 @@ Use [rbs-inline](https://github.com/soutaro/rbs-inline) for type annotations in
|
|
|
86
86
|
class Example
|
|
87
87
|
attr_reader :name #: String
|
|
88
88
|
|
|
89
|
-
# @rbs name: String
|
|
89
|
+
# @rbs name: String -- The name to set
|
|
90
90
|
# @rbs return: void
|
|
91
91
|
def initialize(name)
|
|
92
92
|
@name = name
|
|
93
93
|
end
|
|
94
94
|
|
|
95
|
-
#
|
|
96
|
-
# @rbs
|
|
95
|
+
# Query for an element matching the selector
|
|
96
|
+
# @rbs selector: String -- CSS selector to query
|
|
97
|
+
# @rbs return: ElementHandle? -- Matching element or nil
|
|
97
98
|
def query_selector(selector)
|
|
98
99
|
# ...
|
|
99
100
|
end
|
|
@@ -103,8 +104,14 @@ end
|
|
|
103
104
|
**Conventions:**
|
|
104
105
|
- Use `A?` for nullable types (not `A | nil`)
|
|
105
106
|
- Use `A | B | nil` for union types with nil
|
|
106
|
-
-
|
|
107
|
+
- **Always include descriptions** with `--` separator: `# @rbs name: String -- the name`
|
|
107
108
|
- Public methods should have type annotations
|
|
109
|
+
- **Do NOT use `@rbs!` blocks** - RubyMine IDE doesn't recognize them
|
|
110
|
+
- **Use direct union types** instead of type aliases: `BrowserTarget | PageTarget | FrameTarget` not `target`
|
|
111
|
+
- **Do NOT use `**options` in public APIs** - RubyMine shows as `untyped`. Use explicit keyword arguments:
|
|
112
|
+
- Optional params: `param: nil`
|
|
113
|
+
- Boolean params with default: `headless: true` or `enabled: false`
|
|
114
|
+
- Internal/Core layer methods may still use `**options` for flexibility
|
|
108
115
|
|
|
109
116
|
**Generate RBS files:**
|
|
110
117
|
```bash
|
|
@@ -135,7 +142,6 @@ bundle exec steep check # Run type checker
|
|
|
135
142
|
2. **`sig/_supplementary.rbs`** - Types rbs-inline cannot generate
|
|
136
143
|
- `extend self` pattern: Add `extend ModuleName` declaration
|
|
137
144
|
- Singleton pattern: Add `extend Singleton::SingletonClassMethods`
|
|
138
|
-
- Union type aliases that rbs-inline doesn't preserve
|
|
139
145
|
|
|
140
146
|
**Common Issues:**
|
|
141
147
|
|
|
@@ -68,24 +68,19 @@ module Puppeteer
|
|
|
68
68
|
}
|
|
69
69
|
end
|
|
70
70
|
|
|
71
|
-
# @rbs!
|
|
72
|
-
# type launch_options = {
|
|
73
|
-
# ?executable_path: String,
|
|
74
|
-
# ?user_data_dir: String,
|
|
75
|
-
# ?headless: bool,
|
|
76
|
-
# ?args: Array[String],
|
|
77
|
-
# ?timeout: Numeric
|
|
78
|
-
# }
|
|
79
|
-
|
|
80
71
|
# Launch a new Firefox browser instance
|
|
81
|
-
# @rbs
|
|
72
|
+
# @rbs executable_path: String? -- Path to browser executable
|
|
73
|
+
# @rbs user_data_dir: String? -- Path to user data directory
|
|
74
|
+
# @rbs headless: bool -- Run browser in headless mode
|
|
75
|
+
# @rbs args: Array[String]? -- Additional browser arguments
|
|
76
|
+
# @rbs timeout: Numeric? -- Launch timeout in seconds
|
|
82
77
|
# @rbs return: Browser -- Browser instance
|
|
83
|
-
def self.launch(
|
|
78
|
+
def self.launch(executable_path: nil, user_data_dir: nil, headless: true, args: nil, timeout: nil)
|
|
84
79
|
launcher = BrowserLauncher.new(
|
|
85
|
-
executable_path:
|
|
86
|
-
user_data_dir:
|
|
87
|
-
headless:
|
|
88
|
-
args:
|
|
80
|
+
executable_path: executable_path,
|
|
81
|
+
user_data_dir: user_data_dir,
|
|
82
|
+
headless: headless,
|
|
83
|
+
args: args || []
|
|
89
84
|
)
|
|
90
85
|
|
|
91
86
|
ws_endpoint = launcher.launch
|
|
@@ -95,7 +90,7 @@ module Puppeteer
|
|
|
95
90
|
|
|
96
91
|
# Start transport connection in background thread with Sync reactor
|
|
97
92
|
# Sync is the preferred way to run async code at the top level
|
|
98
|
-
AsyncUtils.async_timeout(
|
|
93
|
+
AsyncUtils.async_timeout((timeout || 30) * 1000, transport.connect).wait
|
|
99
94
|
|
|
100
95
|
connection = Connection.new(transport)
|
|
101
96
|
|
|
@@ -163,8 +158,8 @@ module Puppeteer
|
|
|
163
158
|
|
|
164
159
|
# Wait until a target (top-level browsing context) satisfies the predicate.
|
|
165
160
|
# @rbs timeout: Integer? -- Timeout in milliseconds (default: 30000)
|
|
166
|
-
# @rbs &predicate: (
|
|
167
|
-
# @rbs return:
|
|
161
|
+
# @rbs &predicate: (BrowserTarget | PageTarget | FrameTarget) -> boolish -- Predicate evaluated against each Target
|
|
162
|
+
# @rbs return: BrowserTarget | PageTarget | FrameTarget -- Matching target
|
|
168
163
|
def wait_for_target(timeout: nil, &predicate)
|
|
169
164
|
predicate ||= ->(_target) { true }
|
|
170
165
|
timeout_ms = timeout || 30_000
|
|
@@ -256,8 +251,8 @@ module Puppeteer
|
|
|
256
251
|
|
|
257
252
|
private
|
|
258
253
|
|
|
259
|
-
# @rbs &block: (
|
|
260
|
-
# @rbs return: Enumerator[
|
|
254
|
+
# @rbs &block: (BrowserTarget | PageTarget | FrameTarget) -> void -- Block to yield each target to
|
|
255
|
+
# @rbs return: Enumerator[BrowserTarget | PageTarget | FrameTarget, void] -- Enumerator of targets
|
|
261
256
|
def each_target(&block)
|
|
262
257
|
return enum_for(:each_target) unless block_given?
|
|
263
258
|
return unless @core_browser
|
|
@@ -279,8 +274,8 @@ module Puppeteer
|
|
|
279
274
|
end
|
|
280
275
|
end
|
|
281
276
|
|
|
282
|
-
# @rbs predicate: ^(
|
|
283
|
-
# @rbs return:
|
|
277
|
+
# @rbs predicate: ^(BrowserTarget | PageTarget | FrameTarget) -> boolish -- Predicate to match targets
|
|
278
|
+
# @rbs return: (BrowserTarget | PageTarget | FrameTarget)? -- Matching target or nil
|
|
284
279
|
def find_target(predicate)
|
|
285
280
|
each_target do |target|
|
|
286
281
|
return target if predicate.call(target)
|
|
@@ -80,7 +80,7 @@ module Puppeteer
|
|
|
80
80
|
end
|
|
81
81
|
|
|
82
82
|
# Get request initiator information
|
|
83
|
-
# @rbs return:
|
|
83
|
+
# @rbs return: untyped -- Initiator info (mixed String/Symbol keys)
|
|
84
84
|
def initiator
|
|
85
85
|
initiator_data = @event['initiator']
|
|
86
86
|
return nil unless initiator_data
|
data/lib/puppeteer/bidi/realm.rb
CHANGED
|
@@ -7,7 +7,7 @@ module Puppeteer
|
|
|
7
7
|
# Provides shared lifecycle management for WaitTask instances.
|
|
8
8
|
# https://github.com/puppeteer/puppeteer/blob/main/packages/puppeteer-core/src/api/Realm.ts
|
|
9
9
|
class Realm
|
|
10
|
-
attr_reader :task_manager #: TaskManager
|
|
10
|
+
attr_reader :task_manager #: Puppeteer::Bidi::TaskManager
|
|
11
11
|
|
|
12
12
|
# @rbs timeout_settings: TimeoutSettings -- Timeout settings
|
|
13
13
|
# @rbs return: void
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
+
# rbs_inline: enabled
|
|
2
3
|
|
|
3
4
|
module Puppeteer
|
|
4
5
|
module Bidi
|
|
@@ -6,27 +7,31 @@ module Puppeteer
|
|
|
6
7
|
# This is a faithful port of Puppeteer's TaskManager implementation:
|
|
7
8
|
# https://github.com/puppeteer/puppeteer/blob/main/packages/puppeteer-core/src/common/WaitTask.ts
|
|
8
9
|
class TaskManager
|
|
10
|
+
# @rbs return: void
|
|
9
11
|
def initialize
|
|
10
12
|
@tasks = Set.new
|
|
11
13
|
end
|
|
12
14
|
|
|
13
15
|
# Add a task to the manager
|
|
14
16
|
# Corresponds to Puppeteer's add(task: WaitTask<any>): void
|
|
15
|
-
# @
|
|
17
|
+
# @rbs task: WaitTask -- Task to add
|
|
18
|
+
# @rbs return: void
|
|
16
19
|
def add(task)
|
|
17
20
|
@tasks.add(task)
|
|
18
21
|
end
|
|
19
22
|
|
|
20
23
|
# Delete a task from the manager
|
|
21
24
|
# Corresponds to Puppeteer's delete(task: WaitTask<any>): void
|
|
22
|
-
# @
|
|
25
|
+
# @rbs task: WaitTask -- Task to delete
|
|
26
|
+
# @rbs return: void
|
|
23
27
|
def delete(task)
|
|
24
28
|
@tasks.delete(task)
|
|
25
29
|
end
|
|
26
30
|
|
|
27
31
|
# Terminate all tasks with an optional error
|
|
28
32
|
# Corresponds to Puppeteer's terminateAll(error?: Error): void
|
|
29
|
-
# @
|
|
33
|
+
# @rbs error: Exception? -- Error to terminate with
|
|
34
|
+
# @rbs return: void
|
|
30
35
|
def terminate_all(error = nil)
|
|
31
36
|
@tasks.each do |task|
|
|
32
37
|
task.terminate(error)
|
|
@@ -36,6 +41,7 @@ module Puppeteer
|
|
|
36
41
|
|
|
37
42
|
# Rerun all tasks in parallel
|
|
38
43
|
# Corresponds to Puppeteer's async rerunAll(): Promise<void>
|
|
44
|
+
# @rbs return: void
|
|
39
45
|
def rerun_all
|
|
40
46
|
@tasks.each(&:rerun)
|
|
41
47
|
end
|
data/lib/puppeteer/bidi.rb
CHANGED
|
@@ -32,20 +32,21 @@ require "puppeteer/bidi/browser"
|
|
|
32
32
|
|
|
33
33
|
module Puppeteer
|
|
34
34
|
module Bidi
|
|
35
|
-
# @rbs!
|
|
36
|
-
# type launch_options = {
|
|
37
|
-
# ?executable_path: String,
|
|
38
|
-
# ?user_data_dir: String,
|
|
39
|
-
# ?headless: bool,
|
|
40
|
-
# ?args: Array[String],
|
|
41
|
-
# ?timeout: Numeric
|
|
42
|
-
# }
|
|
43
|
-
|
|
44
35
|
# Launch a new browser instance
|
|
45
|
-
# @rbs
|
|
36
|
+
# @rbs executable_path: String? -- Path to browser executable
|
|
37
|
+
# @rbs user_data_dir: String? -- Path to user data directory
|
|
38
|
+
# @rbs headless: bool -- Run browser in headless mode
|
|
39
|
+
# @rbs args: Array[String]? -- Additional browser arguments
|
|
40
|
+
# @rbs timeout: Numeric? -- Launch timeout in seconds
|
|
46
41
|
# @rbs return: Browser -- Browser instance
|
|
47
|
-
def self.launch(
|
|
48
|
-
Browser.launch(
|
|
42
|
+
def self.launch(executable_path: nil, user_data_dir: nil, headless: true, args: nil, timeout: nil)
|
|
43
|
+
Browser.launch(
|
|
44
|
+
executable_path: executable_path,
|
|
45
|
+
user_data_dir: user_data_dir,
|
|
46
|
+
headless: headless,
|
|
47
|
+
args: args,
|
|
48
|
+
timeout: timeout
|
|
49
|
+
)
|
|
49
50
|
end
|
|
50
51
|
|
|
51
52
|
# Connect to an existing browser instance
|
data/sig/_external.rbs
CHANGED
|
@@ -22,12 +22,14 @@ module Puppeteer
|
|
|
22
22
|
# @rbs return: void
|
|
23
23
|
def initialize: (connection: Connection, launcher: BrowserLauncher?, core_browser: Core::Browser, session: Core::Session) -> void
|
|
24
24
|
|
|
25
|
-
type launch_options = { ?executable_path: String, ?user_data_dir: String, ?headless: bool, ?args: Array[String], ?timeout: Numeric }
|
|
26
|
-
|
|
27
25
|
# Launch a new Firefox browser instance
|
|
28
|
-
# @rbs
|
|
26
|
+
# @rbs executable_path: String? -- Path to browser executable
|
|
27
|
+
# @rbs user_data_dir: String? -- Path to user data directory
|
|
28
|
+
# @rbs headless: bool -- Run browser in headless mode
|
|
29
|
+
# @rbs args: Array[String]? -- Additional browser arguments
|
|
30
|
+
# @rbs timeout: Numeric? -- Launch timeout in seconds
|
|
29
31
|
# @rbs return: Browser -- Browser instance
|
|
30
|
-
def self.launch: (
|
|
32
|
+
def self.launch: (?executable_path: String?, ?user_data_dir: String?, ?headless: bool, ?args: Array[String]?, ?timeout: Numeric?) -> Browser
|
|
31
33
|
|
|
32
34
|
# Connect to an existing Firefox browser instance
|
|
33
35
|
# @rbs ws_endpoint: String -- WebSocket endpoint URL
|
|
@@ -61,9 +63,9 @@ module Puppeteer
|
|
|
61
63
|
|
|
62
64
|
# Wait until a target (top-level browsing context) satisfies the predicate.
|
|
63
65
|
# @rbs timeout: Integer? -- Timeout in milliseconds (default: 30000)
|
|
64
|
-
# @rbs &predicate: (
|
|
65
|
-
# @rbs return:
|
|
66
|
-
def wait_for_target: (?timeout: Integer?) { (
|
|
66
|
+
# @rbs &predicate: (BrowserTarget | PageTarget | FrameTarget) -> boolish -- Predicate evaluated against each Target
|
|
67
|
+
# @rbs return: BrowserTarget | PageTarget | FrameTarget -- Matching target
|
|
68
|
+
def wait_for_target: (?timeout: Integer?) { (BrowserTarget | PageTarget | FrameTarget) -> boolish } -> (BrowserTarget | PageTarget | FrameTarget)
|
|
67
69
|
|
|
68
70
|
# Wait for browser process to exit
|
|
69
71
|
# @rbs return: void
|
|
@@ -71,13 +73,13 @@ module Puppeteer
|
|
|
71
73
|
|
|
72
74
|
private
|
|
73
75
|
|
|
74
|
-
# @rbs &block: (
|
|
75
|
-
# @rbs return: Enumerator[
|
|
76
|
-
def each_target: () { (
|
|
76
|
+
# @rbs &block: (BrowserTarget | PageTarget | FrameTarget) -> void -- Block to yield each target to
|
|
77
|
+
# @rbs return: Enumerator[BrowserTarget | PageTarget | FrameTarget, void] -- Enumerator of targets
|
|
78
|
+
def each_target: () { (BrowserTarget | PageTarget | FrameTarget) -> void } -> Enumerator[BrowserTarget | PageTarget | FrameTarget, void]
|
|
77
79
|
|
|
78
|
-
# @rbs predicate: ^(
|
|
79
|
-
# @rbs return:
|
|
80
|
-
def find_target: (^(
|
|
80
|
+
# @rbs predicate: ^(BrowserTarget | PageTarget | FrameTarget) -> boolish -- Predicate to match targets
|
|
81
|
+
# @rbs return: (BrowserTarget | PageTarget | FrameTarget)? -- Matching target or nil
|
|
82
|
+
def find_target: (^(BrowserTarget | PageTarget | FrameTarget) -> boolish predicate) -> (BrowserTarget | PageTarget | FrameTarget)?
|
|
81
83
|
|
|
82
84
|
# @rbs user_context: Core::UserContext -- User context to get browser context for
|
|
83
85
|
# @rbs return: BrowserContext? -- Browser context or nil
|
|
@@ -50,8 +50,8 @@ module Puppeteer
|
|
|
50
50
|
def last_redirect: () -> Request?
|
|
51
51
|
|
|
52
52
|
# Get request initiator information
|
|
53
|
-
# @rbs return:
|
|
54
|
-
def initiator: () ->
|
|
53
|
+
# @rbs return: untyped -- Initiator info (mixed String/Symbol keys)
|
|
54
|
+
def initiator: () -> untyped
|
|
55
55
|
|
|
56
56
|
# Check if the request is blocked
|
|
57
57
|
# @rbs return: bool -- Whether the request is blocked
|
|
@@ -6,7 +6,7 @@ module Puppeteer
|
|
|
6
6
|
# Provides shared lifecycle management for WaitTask instances.
|
|
7
7
|
# https://github.com/puppeteer/puppeteer/blob/main/packages/puppeteer-core/src/api/Realm.ts
|
|
8
8
|
class Realm
|
|
9
|
-
attr_reader task_manager: TaskManager
|
|
9
|
+
attr_reader task_manager: Puppeteer::Bidi::TaskManager
|
|
10
10
|
|
|
11
11
|
# @rbs timeout_settings: TimeoutSettings -- Timeout settings
|
|
12
12
|
# @rbs return: void
|
|
@@ -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
|
data/sig/puppeteer/bidi.rbs
CHANGED
|
@@ -2,12 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
module Puppeteer
|
|
4
4
|
module Bidi
|
|
5
|
-
type launch_options = { ?executable_path: String, ?user_data_dir: String, ?headless: bool, ?args: Array[String], ?timeout: Numeric }
|
|
6
|
-
|
|
7
5
|
# Launch a new browser instance
|
|
8
|
-
# @rbs
|
|
6
|
+
# @rbs executable_path: String? -- Path to browser executable
|
|
7
|
+
# @rbs user_data_dir: String? -- Path to user data directory
|
|
8
|
+
# @rbs headless: bool -- Run browser in headless mode
|
|
9
|
+
# @rbs args: Array[String]? -- Additional browser arguments
|
|
10
|
+
# @rbs timeout: Numeric? -- Launch timeout in seconds
|
|
9
11
|
# @rbs return: Browser -- Browser instance
|
|
10
|
-
def self.launch: (
|
|
12
|
+
def self.launch: (?executable_path: String?, ?user_data_dir: String?, ?headless: bool, ?args: Array[String]?, ?timeout: Numeric?) -> Browser
|
|
11
13
|
|
|
12
14
|
# Connect to an existing browser instance
|
|
13
15
|
# @rbs ws_endpoint: String -- WebSocket endpoint URL
|
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.
|
|
4
|
+
version: 0.0.1.beta4
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- YusukeIwaki
|
|
@@ -180,6 +180,7 @@ files:
|
|
|
180
180
|
- sig/puppeteer/bidi/realm.rbs
|
|
181
181
|
- sig/puppeteer/bidi/serializer.rbs
|
|
182
182
|
- sig/puppeteer/bidi/target.rbs
|
|
183
|
+
- sig/puppeteer/bidi/task_manager.rbs
|
|
183
184
|
- sig/puppeteer/bidi/timeout_settings.rbs
|
|
184
185
|
- sig/puppeteer/bidi/transport.rbs
|
|
185
186
|
- sig/puppeteer/bidi/wait_task.rbs
|