bidi2pdf 0.1.0 → 0.1.2
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/.rubocop.yml +3 -0
- data/CHANGELOG.md +41 -1
- data/README.md +31 -0
- data/Rakefile +2 -0
- data/cliff.toml +114 -0
- data/docker/Dockerfile.chromedriver +33 -0
- data/docker/docker-compose.yml +24 -0
- data/docker/entrypoint.sh +3 -0
- data/docker/nginx/default.conf +42 -0
- data/docker/nginx/htpasswd +1 -0
- data/lib/bidi2pdf/bidi/add_headers_interceptor.rb +1 -1
- data/lib/bidi2pdf/bidi/auth_interceptor.rb +1 -1
- data/lib/bidi2pdf/bidi/client.rb +55 -140
- data/lib/bidi2pdf/bidi/command_manager.rb +82 -0
- data/lib/bidi2pdf/bidi/connection_manager.rb +34 -0
- data/lib/bidi2pdf/bidi/session.rb +26 -9
- data/lib/bidi2pdf/chromedriver_manager.rb +50 -6
- data/lib/bidi2pdf/cli.rb +147 -18
- data/lib/bidi2pdf/launcher.rb +19 -6
- data/lib/bidi2pdf/process_tree.rb +71 -0
- data/lib/bidi2pdf/session_runner.rb +5 -5
- data/lib/bidi2pdf/version.rb +1 -1
- data/lib/bidi2pdf.rb +1 -0
- data/sig/bidi2pdf/bidi/add_headers_interceptor.rbs +20 -0
- data/sig/bidi2pdf/bidi/auth_interceptor.rbs +17 -0
- data/sig/bidi2pdf/bidi/browser.rbs +38 -0
- data/sig/bidi2pdf/bidi/browser_tab.rbs +42 -0
- data/sig/bidi2pdf/bidi/client.rbs +72 -0
- data/sig/bidi2pdf/bidi/event_manager.rbs +29 -0
- data/sig/bidi2pdf/bidi/network_event.rbs +51 -0
- data/sig/bidi2pdf/bidi/network_events.rbs +55 -0
- data/sig/bidi2pdf/bidi/print_parameters_validator.rbs +44 -0
- data/sig/bidi2pdf/bidi/session.rbs +52 -0
- data/sig/bidi2pdf/bidi/user_context.rbs +50 -0
- data/sig/bidi2pdf/bidi/web_socket_dispatcher.rbs +53 -0
- data/sig/bidi2pdf/chromedriver_manager.rbs +42 -0
- data/sig/bidi2pdf/cli.rbs +21 -0
- data/sig/bidi2pdf/launcher.rbs +38 -0
- data/sig/bidi2pdf/process_tree.rbs +27 -0
- data/sig/bidi2pdf/session_runner.rbs +51 -0
- data/sig/bidi2pdf/utils.rbs +5 -0
- data/sig/vendor/thor.rbs +13 -0
- data/tasks/changelog.rake +29 -0
- data/tasks/generate_rbs.rake +64 -0
- metadata +65 -8
@@ -0,0 +1,51 @@
|
|
1
|
+
module Bidi2pdf
|
2
|
+
class SessionRunner
|
3
|
+
@session: untyped
|
4
|
+
|
5
|
+
@url: untyped
|
6
|
+
|
7
|
+
@output: untyped
|
8
|
+
|
9
|
+
@cookies: untyped
|
10
|
+
|
11
|
+
@headers: untyped
|
12
|
+
|
13
|
+
@auth: untyped
|
14
|
+
|
15
|
+
@wait_window_loaded: untyped
|
16
|
+
|
17
|
+
@wait_network_idle: untyped
|
18
|
+
|
19
|
+
@print_options: untyped
|
20
|
+
|
21
|
+
@window: untyped
|
22
|
+
|
23
|
+
@tab: untyped
|
24
|
+
|
25
|
+
@uri: untyped
|
26
|
+
|
27
|
+
def initialize: (session: untyped, url: untyped, output: untyped, ?cookies: ::Hash[untyped, untyped], ?headers: ::Hash[untyped, untyped], ?auth: ::Hash[untyped, untyped], ?wait_window_loaded: bool, ?wait_network_idle: bool, ?print_options: ::Hash[untyped, untyped]) -> void
|
28
|
+
|
29
|
+
def run: () -> untyped
|
30
|
+
|
31
|
+
private
|
32
|
+
|
33
|
+
def setup_browser: () -> untyped
|
34
|
+
|
35
|
+
def add_cookies: (untyped tab) -> untyped
|
36
|
+
|
37
|
+
def add_headers: () -> untyped
|
38
|
+
|
39
|
+
def add_basic_auth: () -> (nil | untyped)
|
40
|
+
|
41
|
+
def run_flow: () -> untyped
|
42
|
+
|
43
|
+
def uri: () -> untyped
|
44
|
+
|
45
|
+
def domain: () -> untyped
|
46
|
+
|
47
|
+
def source_origin: () -> untyped
|
48
|
+
|
49
|
+
def url_patterns: () -> ::Array[{ type: "pattern", protocol: untyped, hostname: untyped, port: untyped }]
|
50
|
+
end
|
51
|
+
end
|
data/sig/vendor/thor.rbs
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
class Thor
|
2
|
+
def self.desc: (String name, String description) -> void
|
3
|
+
|
4
|
+
def self.option: (Symbol name, ?Hash[Symbol, untyped] options) -> void
|
5
|
+
|
6
|
+
def self.long_desc: (String description, ?Hash[Symbol, untyped] options) -> void
|
7
|
+
|
8
|
+
interface _Command
|
9
|
+
def execute: (*untyped) -> untyped
|
10
|
+
end
|
11
|
+
|
12
|
+
def initialize: (?Hash[Symbol, untyped] options) -> void
|
13
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
def cliff_installed?
|
4
|
+
system("which git-cliff > /dev/null 2>&1")
|
5
|
+
end
|
6
|
+
|
7
|
+
namespace :changelog do
|
8
|
+
desc "Generate unreleased section in CHANGELOG.md (requires git-cliff)"
|
9
|
+
task :update_unreleased do
|
10
|
+
unless cliff_installed?
|
11
|
+
puts "🚫 git-cliff is not installed!"
|
12
|
+
puts "👉 Install it here: https://git-cliff.org/docs/installation/"
|
13
|
+
exit 1
|
14
|
+
end
|
15
|
+
|
16
|
+
generated = `git cliff --unreleased`
|
17
|
+
|
18
|
+
changelog_path = "CHANGELOG.md"
|
19
|
+
changelog = File.read(changelog_path)
|
20
|
+
|
21
|
+
updated = changelog.sub(
|
22
|
+
/<!--.*generated\s+by\s+git-cliff\s+start\s+-->(.*?)<!--\s+generated\s+by\s+git-cliff\s+end\s+-->/m,
|
23
|
+
generated.strip
|
24
|
+
)
|
25
|
+
|
26
|
+
File.write(changelog_path, updated)
|
27
|
+
puts "✅ Replaced generated section in CHANGELOG.md"
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,64 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "fileutils"
|
4
|
+
require "rbs"
|
5
|
+
|
6
|
+
SOURCE_DIR = "lib"
|
7
|
+
OUTPUT_DIR = "sig"
|
8
|
+
|
9
|
+
# rubocop:disable Metrics/BlockLength
|
10
|
+
namespace :rbs do
|
11
|
+
file_list = FileList["#{SOURCE_DIR}/**/*.rb"]
|
12
|
+
|
13
|
+
desc "Generate all RBS files"
|
14
|
+
task generate_rbs: :rbs_targets
|
15
|
+
|
16
|
+
rbs_map = file_list.to_h do |rb|
|
17
|
+
relative = rb.sub(%r{^#{SOURCE_DIR}/}, "")
|
18
|
+
rbs = File.join(OUTPUT_DIR, relative.sub(/\.rb$/, ".rbs"))
|
19
|
+
[rbs, rb]
|
20
|
+
end
|
21
|
+
|
22
|
+
rbs_map.each do |rbs_path, rb_path|
|
23
|
+
file rbs_path => rb_path do
|
24
|
+
puts "🔧 Generating: #{rbs_path} (from #{rb_path})"
|
25
|
+
|
26
|
+
FileUtils.mkdir_p(File.dirname(rbs_path))
|
27
|
+
|
28
|
+
begin
|
29
|
+
input = Pathname(rb_path)
|
30
|
+
output = Pathname(rbs_path)
|
31
|
+
|
32
|
+
parser = RBS::Prototype::RB.new
|
33
|
+
parser.parse input.read
|
34
|
+
|
35
|
+
if output.file?
|
36
|
+
puts "⚠️ RBS file already exists: #{rbs_path}"
|
37
|
+
else
|
38
|
+
puts "📝 Writing RBS file: #{rbs_path}"
|
39
|
+
|
40
|
+
output.open("w") do |io|
|
41
|
+
writer = RBS::Writer.new(out: io)
|
42
|
+
writer.write(parser.decls)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
rescue StandardError => e
|
46
|
+
puts "❌ Error generating RBS for #{rb_path}: #{e.message}"
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
desc "Generate RBS files for all Ruby files"
|
52
|
+
task rbs_targets: rbs_map.keys do
|
53
|
+
puts "✅ RBS generation complete!"
|
54
|
+
end
|
55
|
+
|
56
|
+
desc "Clean all generated RBS files"
|
57
|
+
task :clean_rbs do
|
58
|
+
FileList["#{OUTPUT_DIR}/**/*.rbs"].each do |file|
|
59
|
+
FileUtils.rm_f(file)
|
60
|
+
end
|
61
|
+
puts "🧹 Cleaned up all RBS files"
|
62
|
+
end
|
63
|
+
end
|
64
|
+
# rubocop:enable Metrics/BlockLength
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bidi2pdf
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dieter S.
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2025-04-
|
11
|
+
date: 2025-04-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: base64
|
@@ -66,6 +66,20 @@ dependencies:
|
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '2.4'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: sys-proctable
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '1.3'
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '1.3'
|
69
83
|
- !ruby/object:Gem::Dependency
|
70
84
|
name: thor
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -136,6 +150,20 @@ dependencies:
|
|
136
150
|
- - "~>"
|
137
151
|
- !ruby/object:Gem::Version
|
138
152
|
version: '13.0'
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: rbs
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - "~>"
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '3.4'
|
160
|
+
type: :development
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - "~>"
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '3.4'
|
139
167
|
- !ruby/object:Gem::Dependency
|
140
168
|
name: rspec
|
141
169
|
requirement: !ruby/object:Gem::Requirement
|
@@ -207,33 +235,33 @@ dependencies:
|
|
207
235
|
- !ruby/object:Gem::Version
|
208
236
|
version: '0.22'
|
209
237
|
- !ruby/object:Gem::Dependency
|
210
|
-
name:
|
238
|
+
name: testcontainers
|
211
239
|
requirement: !ruby/object:Gem::Requirement
|
212
240
|
requirements:
|
213
241
|
- - "~>"
|
214
242
|
- !ruby/object:Gem::Version
|
215
|
-
version:
|
243
|
+
version: 0.2.0
|
216
244
|
type: :development
|
217
245
|
prerelease: false
|
218
246
|
version_requirements: !ruby/object:Gem::Requirement
|
219
247
|
requirements:
|
220
248
|
- - "~>"
|
221
249
|
- !ruby/object:Gem::Version
|
222
|
-
version:
|
250
|
+
version: 0.2.0
|
223
251
|
- !ruby/object:Gem::Dependency
|
224
|
-
name:
|
252
|
+
name: unicode_utils
|
225
253
|
requirement: !ruby/object:Gem::Requirement
|
226
254
|
requirements:
|
227
255
|
- - "~>"
|
228
256
|
- !ruby/object:Gem::Version
|
229
|
-
version: '1.
|
257
|
+
version: '1.4'
|
230
258
|
type: :development
|
231
259
|
prerelease: false
|
232
260
|
version_requirements: !ruby/object:Gem::Requirement
|
233
261
|
requirements:
|
234
262
|
- - "~>"
|
235
263
|
- !ruby/object:Gem::Version
|
236
|
-
version: '1.
|
264
|
+
version: '1.4'
|
237
265
|
description: |
|
238
266
|
Bidi2pdf is a powerful PDF generation tool that uses Chrome's BiDirectional Protocol
|
239
267
|
to render web pages as high-quality PDF documents. It offers:
|
@@ -265,8 +293,13 @@ files:
|
|
265
293
|
- LICENSE.txt
|
266
294
|
- README.md
|
267
295
|
- Rakefile
|
296
|
+
- cliff.toml
|
268
297
|
- docker/Dockerfile
|
298
|
+
- docker/Dockerfile.chromedriver
|
269
299
|
- docker/docker-compose.yml
|
300
|
+
- docker/entrypoint.sh
|
301
|
+
- docker/nginx/default.conf
|
302
|
+
- docker/nginx/htpasswd
|
270
303
|
- exe/bidi2pdf
|
271
304
|
- lib/bidi2pdf.rb
|
272
305
|
- lib/bidi2pdf/bidi/add_headers_interceptor.rb
|
@@ -274,6 +307,8 @@ files:
|
|
274
307
|
- lib/bidi2pdf/bidi/browser.rb
|
275
308
|
- lib/bidi2pdf/bidi/browser_tab.rb
|
276
309
|
- lib/bidi2pdf/bidi/client.rb
|
310
|
+
- lib/bidi2pdf/bidi/command_manager.rb
|
311
|
+
- lib/bidi2pdf/bidi/connection_manager.rb
|
277
312
|
- lib/bidi2pdf/bidi/event_manager.rb
|
278
313
|
- lib/bidi2pdf/bidi/network_event.rb
|
279
314
|
- lib/bidi2pdf/bidi/network_events.rb
|
@@ -284,15 +319,37 @@ files:
|
|
284
319
|
- lib/bidi2pdf/chromedriver_manager.rb
|
285
320
|
- lib/bidi2pdf/cli.rb
|
286
321
|
- lib/bidi2pdf/launcher.rb
|
322
|
+
- lib/bidi2pdf/process_tree.rb
|
287
323
|
- lib/bidi2pdf/session_runner.rb
|
288
324
|
- lib/bidi2pdf/utils.rb
|
289
325
|
- lib/bidi2pdf/version.rb
|
290
326
|
- sig/bidi2pdf.rbs
|
327
|
+
- sig/bidi2pdf/bidi/add_headers_interceptor.rbs
|
328
|
+
- sig/bidi2pdf/bidi/auth_interceptor.rbs
|
329
|
+
- sig/bidi2pdf/bidi/browser.rbs
|
330
|
+
- sig/bidi2pdf/bidi/browser_tab.rbs
|
331
|
+
- sig/bidi2pdf/bidi/client.rbs
|
332
|
+
- sig/bidi2pdf/bidi/event_manager.rbs
|
333
|
+
- sig/bidi2pdf/bidi/network_event.rbs
|
334
|
+
- sig/bidi2pdf/bidi/network_events.rbs
|
335
|
+
- sig/bidi2pdf/bidi/print_parameters_validator.rbs
|
336
|
+
- sig/bidi2pdf/bidi/session.rbs
|
337
|
+
- sig/bidi2pdf/bidi/user_context.rbs
|
338
|
+
- sig/bidi2pdf/bidi/web_socket_dispatcher.rbs
|
291
339
|
- sig/bidi2pdf/chrome/chromedriver_downloader.rbs
|
292
340
|
- sig/bidi2pdf/chrome/downloader_helper.rbs
|
293
341
|
- sig/bidi2pdf/chrome/finder.rbs
|
294
342
|
- sig/bidi2pdf/chrome/platform.rbs
|
295
343
|
- sig/bidi2pdf/chrome/version_resolver.rbs
|
344
|
+
- sig/bidi2pdf/chromedriver_manager.rbs
|
345
|
+
- sig/bidi2pdf/cli.rbs
|
346
|
+
- sig/bidi2pdf/launcher.rbs
|
347
|
+
- sig/bidi2pdf/process_tree.rbs
|
348
|
+
- sig/bidi2pdf/session_runner.rbs
|
349
|
+
- sig/bidi2pdf/utils.rbs
|
350
|
+
- sig/vendor/thor.rbs
|
351
|
+
- tasks/changelog.rake
|
352
|
+
- tasks/generate_rbs.rake
|
296
353
|
- tmp/.keep
|
297
354
|
homepage: https://github.com/dieter-medium/bidi2pdf
|
298
355
|
licenses:
|