bidi2pdf 0.1.13 → 0.1.15

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 (121) hide show
  1. checksums.yaml +4 -4
  2. data/.devcontainer/Dockerfile +53 -0
  3. data/.devcontainer/devcontainer.json +51 -0
  4. data/.devcontainer/docker-compose.yml +33 -0
  5. data/.ruby-gemset +1 -1
  6. data/.ruby-version +1 -1
  7. data/CHANGELOG.md +93 -6
  8. data/README.md +80 -5
  9. data/docker/Dockerfile +1 -1
  10. data/docker/Dockerfile.slim +2 -2
  11. data/docker/chrome-driver/chrome.json +874 -0
  12. data/lib/bidi2pdf/bidi/browser_tab.rb +97 -4
  13. data/lib/bidi2pdf/bidi/buffered_web_socket_client.rb +178 -0
  14. data/lib/bidi2pdf/bidi/client.rb +12 -5
  15. data/lib/bidi2pdf/bidi/commands/base.rb +2 -0
  16. data/lib/bidi2pdf/bidi/commands/capture_screenshot.rb +33 -0
  17. data/lib/bidi2pdf/bidi/commands/set_viewport.rb +32 -0
  18. data/lib/bidi2pdf/bidi/commands.rb +2 -0
  19. data/lib/bidi2pdf/bidi/network_event.rb +12 -3
  20. data/lib/bidi2pdf/bidi/network_events.rb +9 -1
  21. data/lib/bidi2pdf/bidi/session.rb +1 -1
  22. data/lib/bidi2pdf/chromedriver_manager.rb +10 -6
  23. data/lib/bidi2pdf/cli.rb +11 -1
  24. data/lib/bidi2pdf/launcher.rb +5 -3
  25. data/lib/bidi2pdf/notifications/logging_subscriber.rb +2 -0
  26. data/lib/bidi2pdf/session_warmer.rb +377 -0
  27. data/lib/bidi2pdf/test_helpers/images.rb +8 -0
  28. data/lib/bidi2pdf/test_helpers/pdf_reader_utils.rb +1 -2
  29. data/lib/bidi2pdf/test_helpers/pdf_text_sanitizer.rb +1 -2
  30. data/lib/bidi2pdf/test_helpers/testcontainers/chromedriver_container.rb +1 -1
  31. data/lib/bidi2pdf/test_helpers/testcontainers/chromedriver_test_helper.rb +22 -2
  32. data/lib/bidi2pdf/test_helpers/testcontainers/container_endpoint.rb +30 -0
  33. data/lib/bidi2pdf/test_helpers/testcontainers/testcontainers_refinement.rb +33 -0
  34. data/lib/bidi2pdf/test_helpers/testcontainers.rb +1 -0
  35. data/lib/bidi2pdf/version.rb +1 -1
  36. data/lib/bidi2pdf.rb +26 -1
  37. data/sig/bidi2pdf/bidi/add_headers_interceptor.rbs +16 -9
  38. data/sig/bidi2pdf/bidi/auth_interceptor.rbs +32 -7
  39. data/sig/bidi2pdf/bidi/browser.rbs +4 -31
  40. data/sig/bidi2pdf/bidi/browser_console_logger.rbs +59 -0
  41. data/sig/bidi2pdf/bidi/browser_tab.rbs +269 -25
  42. data/sig/bidi2pdf/bidi/buffered_web_socket_client.rbs +81 -0
  43. data/sig/bidi2pdf/bidi/client.rbs +103 -43
  44. data/sig/bidi2pdf/bidi/command_manager.rbs +5 -17
  45. data/sig/bidi2pdf/bidi/commands/add_intercept.rbs +16 -8
  46. data/sig/bidi2pdf/bidi/commands/base.rbs +49 -9
  47. data/sig/bidi2pdf/bidi/commands/browser_close.rbs +3 -1
  48. data/sig/bidi2pdf/bidi/commands/browser_create_user_context.rbs +2 -0
  49. data/sig/bidi2pdf/bidi/commands/browser_remove_user_context.rbs +19 -0
  50. data/sig/bidi2pdf/bidi/commands/browsing_context_close.rbs +8 -2
  51. data/sig/bidi2pdf/bidi/commands/browsing_context_navigate.rbs +12 -6
  52. data/sig/bidi2pdf/bidi/commands/browsing_context_print.rbs +10 -5
  53. data/sig/bidi2pdf/bidi/commands/cancel_auth.rbs +8 -2
  54. data/sig/bidi2pdf/bidi/commands/capture_screenshot.rbs +31 -0
  55. data/sig/bidi2pdf/bidi/commands/cdp_get_session.rbs +17 -0
  56. data/sig/bidi2pdf/bidi/commands/create_window.rbs +4 -0
  57. data/sig/bidi2pdf/bidi/commands/get_user_contexts.rbs +2 -0
  58. data/sig/bidi2pdf/bidi/commands/network_continue.rbs +4 -0
  59. data/sig/bidi2pdf/bidi/commands/page_print.rbs +28 -0
  60. data/sig/bidi2pdf/bidi/commands/print_parameters_validator.rbs +3 -0
  61. data/sig/bidi2pdf/bidi/commands/provide_credentials.rbs +12 -6
  62. data/sig/bidi2pdf/bidi/commands/script_evaluate.rbs +4 -0
  63. data/sig/bidi2pdf/bidi/commands/session_end.rbs +2 -0
  64. data/sig/bidi2pdf/bidi/commands/session_status.rbs +3 -1
  65. data/sig/bidi2pdf/bidi/commands/session_subscribe.rbs +4 -0
  66. data/sig/bidi2pdf/bidi/commands/set_tab_cookie.rbs +51 -23
  67. data/sig/bidi2pdf/bidi/commands/set_usercontext_cookie.rbs +17 -19
  68. data/sig/bidi2pdf/bidi/commands/set_viewport.rbs +31 -0
  69. data/sig/bidi2pdf/bidi/connection_manager.rbs +2 -1
  70. data/sig/bidi2pdf/bidi/event_manager.rbs +14 -19
  71. data/sig/bidi2pdf/bidi/interceptor.rbs +5 -0
  72. data/sig/bidi2pdf/bidi/js_logger_helper.rbs +9 -0
  73. data/sig/bidi2pdf/bidi/logger_events.rbs +21 -0
  74. data/sig/bidi2pdf/bidi/navigation_failed_events.rbs +17 -0
  75. data/sig/bidi2pdf/bidi/network_event.rbs +64 -46
  76. data/sig/bidi2pdf/bidi/network_event_formatters/network_event_console_formatter.rbs +63 -0
  77. data/sig/bidi2pdf/bidi/network_event_formatters/network_event_formatter_utils.rbs +15 -0
  78. data/sig/bidi2pdf/bidi/network_event_formatters/network_event_html_formatter.rbs +18 -0
  79. data/sig/bidi2pdf/bidi/network_event_formatters.rbs +6 -0
  80. data/sig/bidi2pdf/bidi/network_events.rbs +14 -39
  81. data/sig/bidi2pdf/bidi/session.rbs +144 -31
  82. data/sig/bidi2pdf/bidi/user_context.rbs +64 -45
  83. data/sig/bidi2pdf/bidi/web_socket_dispatcher.rbs +22 -30
  84. data/sig/bidi2pdf/chromedriver_manager.rbs +61 -22
  85. data/sig/bidi2pdf/cli.rbs +22 -2
  86. data/sig/bidi2pdf/dsl.rbs +34 -0
  87. data/sig/bidi2pdf/launcher.rbs +39 -1
  88. data/sig/bidi2pdf/notifications/event.rbs +40 -0
  89. data/sig/bidi2pdf/notifications/instrumenter.rbs +21 -0
  90. data/sig/bidi2pdf/notifications/logging_subscriber.rbs +41 -0
  91. data/sig/bidi2pdf/notifications.rbs +24 -0
  92. data/sig/bidi2pdf/process_tree.rbs +2 -2
  93. data/sig/bidi2pdf/session_runner.rbs +41 -1
  94. data/sig/bidi2pdf/session_warmer.rbs +221 -0
  95. data/sig/bidi2pdf/test_helpers/configuration.rbs +51 -0
  96. data/sig/bidi2pdf/test_helpers/images/extractor.rbs +43 -0
  97. data/sig/bidi2pdf/test_helpers/images/image_similarity_checker.rbs +35 -0
  98. data/sig/bidi2pdf/test_helpers/images/tiff_helper.rbs +70 -0
  99. data/sig/bidi2pdf/test_helpers/images.rbs +0 -0
  100. data/sig/bidi2pdf/test_helpers/matchers/contains_pdf_image.rbs +0 -0
  101. data/sig/bidi2pdf/test_helpers/matchers/contains_pdf_text.rbs +0 -0
  102. data/sig/bidi2pdf/test_helpers/matchers/have_pdf_page_count.rbs +0 -0
  103. data/sig/bidi2pdf/test_helpers/matchers/match_pdf_text.rbs +0 -0
  104. data/sig/bidi2pdf/test_helpers/pdf_file_helper.rbs +23 -0
  105. data/sig/bidi2pdf/test_helpers/pdf_reader_utils.rbs +49 -0
  106. data/sig/bidi2pdf/test_helpers/pdf_text_sanitizer.rbs +38 -0
  107. data/sig/bidi2pdf/test_helpers/spec_paths_helper.rbs +35 -0
  108. data/sig/bidi2pdf/test_helpers/testcontainers/chromedriver_container.rbs +43 -0
  109. data/sig/bidi2pdf/test_helpers/testcontainers/chromedriver_test_helper.rbs +45 -0
  110. data/sig/bidi2pdf/test_helpers/testcontainers/container_endpoint.rbs +25 -0
  111. data/sig/bidi2pdf/test_helpers/testcontainers/shared_docker_network.rbs +3 -0
  112. data/sig/bidi2pdf/test_helpers/testcontainers/testcontainers_refinement.rbs +47 -0
  113. data/sig/bidi2pdf/test_helpers/testcontainers.rbs +6 -0
  114. data/sig/bidi2pdf/test_helpers.rbs +0 -0
  115. data/sig/bidi2pdf/verbose_logger.rbs +37 -0
  116. data/sig/bidi2pdf/version.rbs +3 -0
  117. data/sig/bidi2pdf.rbs +130 -2
  118. data/tasks/generate_rbs.rake +11 -11
  119. data/tasks/release_credentials_check.rake +97 -0
  120. metadata +67 -10
  121. data/sig/bidi2pdf/utils.rbs +0 -5
@@ -9,6 +9,10 @@ module Bidi2pdf
9
9
  attr_reader events: untyped
10
10
 
11
11
  def initialize: (events: untyped) -> void
12
+
13
+ def method_name: () -> "session.subscribe"
14
+
15
+ def params: () -> untyped
12
16
  end
13
17
  end
14
18
  end
@@ -2,29 +2,57 @@ module Bidi2pdf
2
2
  module Bidi
3
3
  module Commands
4
4
  class SetTabCookie
5
- include Commands::Base
6
-
7
- attr_reader name: String
8
- attr_reader value: String
9
- attr_reader domain: String
10
- attr_reader path: String
11
- attr_reader secure: bool
12
- attr_reader http_only: bool
13
- attr_reader same_site: String
14
- attr_reader ttl: Integer
15
- attr_reader browsing_context_id: String?
16
-
17
- def initialize: (
18
- name: String,
19
- value: String,
20
- domain: String,
21
- browsing_context_id: String?,
22
- ?path: String,
23
- ?secure: bool,
24
- ?http_only: bool,
25
- ?same_site: String,
26
- ?ttl: Integer
27
- ) -> void
5
+ self.@time_provider: untyped
6
+
7
+ @name: untyped
8
+
9
+ @value: untyped
10
+
11
+ @domain: untyped
12
+
13
+ @path: untyped
14
+
15
+ @secure: untyped
16
+
17
+ @http_only: untyped
18
+
19
+ @same_site: untyped
20
+
21
+ @ttl: untyped
22
+
23
+ @browsing_context_id: untyped
24
+
25
+ include Base
26
+
27
+ attr_writer self.time_provider: untyped
28
+
29
+ def self.time_provider: () -> untyped
30
+
31
+ attr_reader name: untyped
32
+
33
+ attr_reader value: untyped
34
+
35
+ attr_reader domain: untyped
36
+
37
+ attr_reader path: untyped
38
+
39
+ attr_reader secure: untyped
40
+
41
+ attr_reader http_only: untyped
42
+
43
+ attr_reader same_site: untyped
44
+
45
+ attr_reader ttl: untyped
46
+
47
+ attr_reader browsing_context_id: untyped
48
+
49
+ def initialize: (name: untyped, value: untyped, domain: untyped, browsing_context_id: untyped, ?path: ::String, ?secure: bool, ?http_only: bool, ?same_site: ::String, ?ttl: ::Integer) -> void
50
+
51
+ def expiry: () -> untyped
52
+
53
+ def method_name: () -> "storage.setCookie"
54
+
55
+ def params: () -> untyped
28
56
  end
29
57
  end
30
58
  end
@@ -2,25 +2,23 @@ module Bidi2pdf
2
2
  module Bidi
3
3
  module Commands
4
4
  class SetUsercontextCookie < SetTabCookie
5
- include Commands::Base
6
-
7
- attr_reader user_context_id: String
8
- attr_reader source_origin: String
9
-
10
- def initialize: (
11
- name: String,
12
- value: String,
13
- domain: String,
14
- user_context_id: String,
15
- source_origin: String,
16
- ?path: String,
17
- ?secure: bool,
18
- ?http_only: bool,
19
- ?same_site: String,
20
- ?ttl: Integer
21
- ) -> void
22
-
23
- def expiry: () -> Integer
5
+ @user_context_id: untyped
6
+
7
+ @source_origin: untyped
8
+
9
+ include Base
10
+
11
+ attr_reader user_context_id: untyped
12
+
13
+ attr_reader source_origin: untyped
14
+
15
+ def initialize: (name: untyped, value: untyped, domain: untyped, user_context_id: untyped, source_origin: untyped, ?path: ::String, ?secure: bool, ?http_only: bool, ?same_site: ::String, ?ttl: ::Integer) -> void
16
+
17
+ def expiry: () -> untyped
18
+
19
+ def method_name: () -> "storage.setCookie"
20
+
21
+ def params: () -> untyped
24
22
  end
25
23
  end
26
24
  end
@@ -0,0 +1,31 @@
1
+ module Bidi2pdf
2
+ module Bidi
3
+ module Commands
4
+ class SetViewport
5
+ @context: untyped
6
+
7
+ @width: untyped
8
+
9
+ @height: untyped
10
+
11
+ @device_pixel_ratio: untyped
12
+
13
+ include Base
14
+
15
+ attr_reader context: untyped
16
+
17
+ attr_reader width: untyped
18
+
19
+ attr_reader height: untyped
20
+
21
+ attr_reader device_pixel_ratio: untyped
22
+
23
+ def initialize: (context: untyped, width: untyped, height: untyped, ?device_pixel_ratio: untyped?) -> void
24
+
25
+ def method_name: () -> "browsingContext.setViewport"
26
+
27
+ def params: () -> untyped
28
+ end
29
+ end
30
+ end
31
+ end
@@ -5,12 +5,13 @@ module Bidi2pdf
5
5
 
6
6
  @connected: untyped
7
7
 
8
- @connection_queue: untyped
8
+ @connection_latch: untyped
9
9
 
10
10
  def initialize: (logger: untyped) -> void
11
11
 
12
12
  def mark_connected: () -> (nil | untyped)
13
13
 
14
+ # rubocop:disable Naming/PredicateMethod
14
15
  def wait_until_open: (timeout: untyped) -> true
15
16
  end
16
17
  end
@@ -1,35 +1,30 @@
1
1
  module Bidi2pdf
2
2
  module Bidi
3
3
  class EventManager
4
- class Listener
5
- attr_reader block: untyped
6
- attr_reader id: String
4
+ @listeners: untyped
7
5
 
8
- def initialize: (untyped block, ?String id) -> void
6
+ @type: untyped
9
7
 
10
- def call: (*untyped args) -> untyped
8
+ Listener: untyped
11
9
 
12
- def ==: (untyped other) -> bool
10
+ attr_reader type: untyped
13
11
 
14
- def eql?: (untyped other) -> bool
12
+ def initialize: (untyped type) -> void
15
13
 
16
- def hash: () -> Integer
17
- end
14
+ def on: (*untyped event_names) { (?) -> untyped } -> untyped
18
15
 
19
- @listeners: untyped
20
- @type: untyped
21
-
22
- attr_reader type: untyped
16
+ def off: (untyped event_name, untyped listener) -> untyped
23
17
 
24
- def initialize: (untyped type) -> void
18
+ def dispatch: (untyped event_name, *untyped args) -> untyped
25
19
 
26
- def on: (*untyped event_names, &untyped block) -> Listener
20
+ def clear: (?untyped? event_name) -> untyped
27
21
 
28
- def off: (untyped event_name, Listener listener) -> void
22
+ private
29
23
 
30
- def dispatch: (untyped event_name, *untyped args) -> void
24
+ def log_msg: (untyped prefix, untyped data) -> untyped
31
25
 
32
- def clear: (?untyped event_name) -> void
26
+ # rubocop: disable all
27
+ def truncate_large_values: (untyped org, ?::Integer max_length, ?::Integer max_depth, ?::Integer current_depth) -> ("...(too deep)..." | untyped)
33
28
  end
34
29
  end
35
- end
30
+ end
@@ -3,6 +3,8 @@ module Bidi2pdf
3
3
  module Interceptor
4
4
  @client: untyped
5
5
 
6
+ @handle_event_listener: untyped
7
+
6
8
  def self.included: (untyped base) -> untyped
7
9
 
8
10
  module ClassMethods
@@ -19,6 +21,9 @@ module Bidi2pdf
19
21
 
20
22
  def register_with_client: (client: untyped) -> untyped
21
23
 
24
+ def unregister_with_client: (client: untyped) -> (nil | untyped)
25
+
26
+ # rubocop: disable Metrics/AbcSize
22
27
  def handle_event: (untyped response) -> untyped
23
28
 
24
29
  def interceptor_id: () -> untyped
@@ -0,0 +1,9 @@
1
+ module Bidi2pdf
2
+ module Bidi
3
+ module JsLoggerHelper
4
+ private
5
+
6
+ def format_stack_trace: (untyped trace) -> untyped
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,21 @@
1
+ module Bidi2pdf
2
+ module Bidi
3
+ class LoggerEvents
4
+ @context_id: untyped
5
+
6
+ @browser_console_logger: untyped
7
+
8
+ attr_reader context_id: untyped
9
+
10
+ attr_reader browser_console_logger: untyped
11
+
12
+ def initialize: (untyped context_id) -> void
13
+
14
+ def handle_event: (untyped data) -> untyped
15
+
16
+ def handle_response: (untyped _method, untyped event) -> untyped
17
+
18
+ def resolve_log_level: (untyped js_level) -> untyped
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,17 @@
1
+ module Bidi2pdf
2
+ module Bidi
3
+ class NavigationFailedEvents
4
+ @context_id: untyped
5
+
6
+ attr_reader context_id: untyped
7
+
8
+ attr_reader browser_console_logger: untyped
9
+
10
+ def initialize: (untyped context_id) -> void
11
+
12
+ def handle_event: (untyped data) -> untyped
13
+
14
+ def handle_response: (untyped _method, untyped event) -> untyped
15
+ end
16
+ end
17
+ end
@@ -1,51 +1,69 @@
1
1
  module Bidi2pdf
2
2
  module Bidi
3
3
  class NetworkEvent
4
- # Request data
5
- @request_id: String
6
- @url: String
7
- @method: String
8
- @headers: Hash[String, String]
9
- @post_data: String?
10
-
11
- # Response data
12
- @response_status: Integer?
13
- @response_headers: Hash[String, String]?
14
- @response_body: String?
15
-
16
- # Timing information
17
- @timestamp: Float
18
- @timing: Hash[Symbol, Float]?
19
-
20
- attr_reader request_id: String
21
- attr_reader url: String
22
- attr_reader method: String
23
- attr_reader headers: Hash[String, String]
24
- attr_reader post_data: String?
25
- attr_reader response_status: Integer?
26
- attr_reader response_headers: Hash[String, String]?
27
- attr_reader response_body: String?
28
- attr_reader timestamp: Float
29
- attr_reader timing: Hash[Symbol, Float]?
30
-
31
- def initialize: (
32
- request_id: String,
33
- url: String,
34
- method: String,
35
- headers: Hash[String, String],
36
- ?post_data: String?,
37
- ?timestamp: Float?
38
- ) -> void
39
-
40
- def add_response: (
41
- status: Integer,
42
- headers: Hash[String, String],
43
- ?body: String?
44
- ) -> void
45
-
46
- def add_timing: (Hash[Symbol, Float] timing_data) -> void
47
-
48
- def completed?: () -> bool
4
+ @id: untyped
5
+
6
+ @url: untyped
7
+
8
+ @start_timestamp: untyped
9
+
10
+ @timing: untyped
11
+
12
+ @state: untyped
13
+
14
+ @http_status_code: untyped
15
+
16
+ @http_method: untyped
17
+
18
+ @navigation: untyped
19
+
20
+ @end_timestamp: untyped
21
+
22
+ @bytes_received: untyped
23
+
24
+ attr_reader id: untyped
25
+
26
+ attr_reader url: untyped
27
+
28
+ attr_reader state: untyped
29
+
30
+ attr_reader start_timestamp: untyped
31
+
32
+ attr_reader end_timestamp: untyped
33
+
34
+ attr_reader timing: untyped
35
+
36
+ attr_reader http_status_code: untyped
37
+
38
+ attr_reader http_method: untyped
39
+
40
+ attr_reader bytes_received: untyped
41
+
42
+ attr_reader navigation: untyped
43
+
44
+ STATE_MAP: { "network.responseStarted" => "started", "network.responseCompleted" => "completed", "network.fetchError" => "error" }
45
+
46
+ # @param [String, nil] navigation The BiDi navigation ID this request belongs to - present on
47
+ # the main-frame document request, letting a caller correlate a specific
48
+ # browsingContext.navigate call to the network event carrying its actual HTTP status. A
49
+ # sub-resource request (an image, a script, ...) has no real BiDi navigation ID and stays
50
+ # nil here - #id already distinguishes one event from another in logs, so this field is
51
+ # left alone rather than filled with a value the protocol never sent.
52
+ def initialize: (id: untyped, url: untyped, timestamp: untyped, timing: untyped, state: untyped, ?http_status_code: untyped?, ?http_method: untyped?, ?navigation: untyped?) -> void
53
+
54
+ def update_state: (untyped new_state, ?timestamp: untyped?, ?timing: untyped?, ?http_status_code: untyped?, ?bytes_received: untyped?) -> untyped
55
+
56
+ def map_state: (untyped state) -> untyped
57
+
58
+ def format_timestamp: (untyped timestamp) -> ("N/A" | untyped)
59
+
60
+ def duration_seconds: () -> (nil | untyped)
61
+
62
+ def in_progress?: () -> untyped
63
+
64
+ def to_s: () -> ::String
65
+
66
+ def dup: () -> untyped
49
67
  end
50
68
  end
51
- end
69
+ end
@@ -0,0 +1,63 @@
1
+ module Bidi2pdf
2
+ module Bidi
3
+ module NetworkEventFormatters
4
+ # rubocop: disable Metrics/AbcSize
5
+ class NetworkEventConsoleFormatter
6
+ @color_enabled: untyped
7
+
8
+ @logger: untyped
9
+
10
+ include NetworkEventFormatterUtils
11
+
12
+ attr_reader color_enabled: untyped
13
+
14
+ attr_reader logger: untyped
15
+
16
+ # ANSI styles
17
+ RESET: "\e[0m"
18
+
19
+ BOLD: "\e[1m"
20
+
21
+ DIM: "\e[2m"
22
+
23
+ RED: "\e[31m"
24
+
25
+ GREEN: "\e[32m"
26
+
27
+ YELLOW: "\e[33m"
28
+
29
+ CYAN: "\e[36m"
30
+
31
+ GRAY: "\e[90m"
32
+
33
+ def initialize: (?color: bool, ?logger: untyped) -> void
34
+
35
+ def log: (untyped events) -> untyped
36
+
37
+ def pretty_log: (untyped event) -> untyped
38
+
39
+ private
40
+
41
+ def format_timing: (untyped event) -> ("" | untyped)
42
+
43
+ def color_for_status: (untyped code) -> untyped
44
+
45
+ def bold: (untyped str) -> (::String | untyped)
46
+
47
+ def dim: (untyped str) -> (::String | untyped)
48
+
49
+ def green: (?::String str) -> (::String | untyped)
50
+
51
+ def yellow: (?::String str) -> (::String | untyped)
52
+
53
+ def red: (?::String str) -> (::String | untyped)
54
+
55
+ def cyan: (?::String str) -> (::String | untyped)
56
+
57
+ def gray: (?::String str) -> (::String | untyped)
58
+
59
+ def reset: () -> (untyped | "")
60
+ end
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,15 @@
1
+ module Bidi2pdf
2
+ module Bidi
3
+ module NetworkEventFormatters
4
+ module NetworkEventFormatterUtils
5
+ def format_bytes: (untyped size) -> ("N/A" | untyped)
6
+
7
+ def parse_timing: (untyped event) -> (::Array[untyped] | untyped)
8
+
9
+ def format_timestamp: (untyped timestamp) -> ("N/A" | untyped)
10
+
11
+ def shorten_url: (untyped url) -> (untyped | "data:text/html,...")
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,18 @@
1
+ module Bidi2pdf
2
+ module Bidi
3
+ module NetworkEventFormatters
4
+ class NetworkEventHtmlFormatter
5
+ include NetworkEventFormatterUtils
6
+
7
+ def render: (untyped events) -> (nil | ::String)
8
+
9
+ def toc_entry: (untyped event, untyped index) -> ::String
10
+
11
+ # rubocop: disable Metrics/AbcSize
12
+ def render_event: (untyped event, untyped index) -> ::String
13
+
14
+ def render_timing_bars: (untyped timing) -> ("" | ::String)
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,6 @@
1
+ module Bidi2pdf
2
+ module Bidi
3
+ module NetworkEventFormatters
4
+ end
5
+ end
6
+ end
@@ -1,55 +1,30 @@
1
1
  module Bidi2pdf
2
2
  module Bidi
3
3
  class NetworkEvents
4
- include Enumerable[NetworkEvent]
4
+ @context_id: untyped
5
5
 
6
- @events: Hash[String, NetworkEvent]
7
- @browser: Bidi2pdf::Bidi::Browser?
8
- @event_manager: Bidi2pdf::Bidi::EventManager?
9
- @recording: bool
10
- @filters: Array[Proc]
6
+ @events: untyped
11
7
 
12
- attr_reader events: Hash[String, NetworkEvent]
13
- attr_reader recording: bool
8
+ @network_event_formatter: untyped
14
9
 
15
- def initialize: (?browser: Bidi2pdf::Bidi::Browser?) -> void
10
+ attr_reader context_id: untyped
16
11
 
17
- def start_recording: (?browser: Bidi2pdf::Bidi::Browser?) -> void
12
+ attr_reader events: untyped
18
13
 
19
- def stop_recording: () -> void
14
+ attr_reader network_event_formatter: untyped
20
15
 
21
- def add_filter: () { (NetworkEvent) -> bool } -> void
16
+ def initialize: (untyped context_id) -> void
22
17
 
23
- def clear_filters: () -> void
18
+ def handle_event: (untyped data) -> untyped
24
19
 
25
- def clear: () -> void
20
+ # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
21
+ def handle_response: (untyped method, untyped event) -> (nil | untyped)
26
22
 
27
- def size: () -> Integer
23
+ def all_events: () -> untyped
28
24
 
29
- def []: (String request_id) -> NetworkEvent?
25
+ def log_network_traffic: (?format: ::Symbol) -> untyped
30
26
 
31
- def each: () { (NetworkEvent) -> void } -> self
32
- | () -> Enumerator[NetworkEvent, self]
33
-
34
- def find_by_url: (String url_pattern) -> Array[NetworkEvent]
35
-
36
- def find_by_method: (String method) -> Array[NetworkEvent]
37
-
38
- def completed_requests: () -> Array[NetworkEvent]
39
-
40
- def pending_requests: () -> Array[NetworkEvent]
41
-
42
- def to_a: () -> Array[NetworkEvent]
43
-
44
- private
45
-
46
- def setup_event_listeners: () -> void
47
-
48
- def handle_request_event: (Hash[String, untyped] params) -> void
49
-
50
- def handle_response_event: (Hash[String, untyped] params) -> void
51
-
52
- def handle_loading_finished_event: (Hash[String, untyped] params) -> void
27
+ def wait_until_network_idle: (?timeout: ::Integer, ?poll_interval: ::Float) -> untyped
53
28
  end
54
29
  end
55
- end
30
+ end