kreuzcrawl 0.3.0.pre.rc.43 → 0.3.0.pre.rc.50
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/ext/kreuzcrawl_rb/native/Cargo.lock +2 -2
- data/ext/kreuzcrawl_rb/native/Cargo.toml +2 -2
- data/ext/kreuzcrawl_rb/native/extconf.rb +4 -1
- data/ext/kreuzcrawl_rb/src/lib.rs +1 -1
- data/lib/kreuzcrawl/native.rb +20 -136
- data/lib/kreuzcrawl/version.rb +3 -2
- data/lib/kreuzcrawl.rb +7 -1
- data/lib/kreuzcrawl_rb.so +0 -0
- data/sig/types.rbs +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 2213fa1c83d734c7ad5e7fb41a87d910654b54de2623485ded5ef78e0af04b61
|
|
4
|
+
data.tar.gz: 1254c10de4a176e4548db7a246463fcdadf836a4521db41e64ff44f59b75cd0c
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 7929332edca6661be7a3b575db2e524f2d3ebafe2ad0a70f1f5113dc5f1696b41fd574f49acca26ae12fb80b19b9a039e4ddaa6a34fc9529ee633b8d0d9e59ca
|
|
7
|
+
data.tar.gz: ad173c414b49aad8fd64a8e5de62e1e8ea09178e4eaa91c288fc48f83055e00c7f4300f2518a44a8f382a33a93c644b3fb3d53b6eccde72b45c64d8087b99eee
|
|
@@ -1469,7 +1469,7 @@ dependencies = [
|
|
|
1469
1469
|
|
|
1470
1470
|
[[package]]
|
|
1471
1471
|
name = "kreuzcrawl"
|
|
1472
|
-
version = "0.3.0-rc.
|
|
1472
|
+
version = "0.3.0-rc.50"
|
|
1473
1473
|
dependencies = [
|
|
1474
1474
|
"ahash",
|
|
1475
1475
|
"aho-corasick",
|
|
@@ -1506,7 +1506,7 @@ dependencies = [
|
|
|
1506
1506
|
|
|
1507
1507
|
[[package]]
|
|
1508
1508
|
name = "kreuzcrawl-rb"
|
|
1509
|
-
version = "0.3.0-rc.
|
|
1509
|
+
version = "0.3.0-rc.50"
|
|
1510
1510
|
dependencies = [
|
|
1511
1511
|
"futures",
|
|
1512
1512
|
"kreuzcrawl",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[package]
|
|
2
2
|
name = "kreuzcrawl-rb"
|
|
3
|
-
version = "0.3.0-rc.
|
|
3
|
+
version = "0.3.0-rc.50"
|
|
4
4
|
edition = "2024"
|
|
5
5
|
license = "Elastic-2.0"
|
|
6
6
|
description = "High-performance web crawling engine"
|
|
@@ -18,7 +18,7 @@ crate-type = ["cdylib"]
|
|
|
18
18
|
|
|
19
19
|
[dependencies]
|
|
20
20
|
futures = "0.3"
|
|
21
|
-
kreuzcrawl = { version = "0.3.0-rc.
|
|
21
|
+
kreuzcrawl = { version = "0.3.0-rc.50", path = "../../../../../crates/kreuzcrawl", features = ["interact", "browser-chromiumoxide"] }
|
|
22
22
|
magnus = "0.8"
|
|
23
23
|
rb-sys = ">=0.9, <0.9.128"
|
|
24
24
|
serde = { version = "1", features = ["derive"] }
|
|
@@ -7,5 +7,8 @@ default_profile = ENV.fetch("CARGO_PROFILE", "release")
|
|
|
7
7
|
|
|
8
8
|
create_rust_makefile("kreuzcrawl_rb") do |config|
|
|
9
9
|
config.profile = default_profile.to_sym
|
|
10
|
-
|
|
10
|
+
# extconf.rb and Cargo.toml are siblings under ext/kreuzcrawl_rb/native/; rb_sys interprets
|
|
11
|
+
# ext_dir relative to extconf.rb, so "." finds the sibling Cargo.toml. "native" would
|
|
12
|
+
# resolve to native/native/Cargo.toml and break `gem install` on end-user machines.
|
|
13
|
+
config.ext_dir = "."
|
|
11
14
|
end
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// This file is auto-generated by alef. DO NOT EDIT.
|
|
2
|
-
// alef:hash:
|
|
2
|
+
// alef:hash:e0b048907e4acd1bff8132ca9fab8a2ec941d36e30e70ac1f6ce3cd337219c92
|
|
3
3
|
// Re-generate with: alef generate
|
|
4
4
|
#![allow(dead_code, unused_imports, unused_variables)]
|
|
5
5
|
#![allow(
|
data/lib/kreuzcrawl/native.rb
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# This file is auto-generated by alef — DO NOT EDIT.
|
|
2
|
-
# alef:hash:
|
|
2
|
+
# alef:hash:e0b048907e4acd1bff8132ca9fab8a2ec941d36e30e70ac1f6ce3cd337219c92
|
|
3
3
|
# To regenerate: alef generate
|
|
4
4
|
# To verify freshness: alef verify --exit-code
|
|
5
5
|
# frozen_string_literal: true
|
|
@@ -29,8 +29,7 @@ module Kreuzcrawl
|
|
|
29
29
|
end
|
|
30
30
|
end
|
|
31
31
|
end
|
|
32
|
-
|
|
33
|
-
# HTTP Basic authentication.
|
|
32
|
+
## HTTP Basic authentication.
|
|
34
33
|
AuthConfigBasic = Data.define(:username, :password) do
|
|
35
34
|
include AuthConfig
|
|
36
35
|
extend T::Sig
|
|
@@ -38,20 +37,15 @@ module Kreuzcrawl
|
|
|
38
37
|
# Username sent in the `Authorization: Basic` header.
|
|
39
38
|
sig { returns(String) }
|
|
40
39
|
def username = super # rubocop:disable Lint/UselessMethodDefinition
|
|
41
|
-
|
|
42
40
|
# Password sent in the `Authorization: Basic` header.
|
|
43
41
|
sig { returns(String) }
|
|
44
42
|
def password = super # rubocop:disable Lint/UselessMethodDefinition
|
|
45
|
-
|
|
46
43
|
sig { returns(T::Boolean) }
|
|
47
44
|
def basic? = true
|
|
48
|
-
|
|
49
45
|
sig { returns(T::Boolean) }
|
|
50
46
|
def bearer? = false
|
|
51
|
-
|
|
52
47
|
sig { returns(T::Boolean) }
|
|
53
48
|
def header? = false
|
|
54
|
-
|
|
55
49
|
# @param hash [Hash] deserialized from the native extension
|
|
56
50
|
# @return [self]
|
|
57
51
|
sig { params(hash: T::Hash[T.untyped, T.untyped]).returns(T.attached_class) }
|
|
@@ -59,8 +53,7 @@ module Kreuzcrawl
|
|
|
59
53
|
new(username: hash[:username] || hash["username"], password: hash[:password] || hash["password"])
|
|
60
54
|
end
|
|
61
55
|
end
|
|
62
|
-
|
|
63
|
-
# Bearer token authentication.
|
|
56
|
+
## Bearer token authentication.
|
|
64
57
|
AuthConfigBearer = Data.define(:token) do
|
|
65
58
|
include AuthConfig
|
|
66
59
|
extend T::Sig
|
|
@@ -68,16 +61,12 @@ module Kreuzcrawl
|
|
|
68
61
|
# Token sent in the `Authorization: Bearer` header.
|
|
69
62
|
sig { returns(String) }
|
|
70
63
|
def token = super # rubocop:disable Lint/UselessMethodDefinition
|
|
71
|
-
|
|
72
64
|
sig { returns(T::Boolean) }
|
|
73
65
|
def basic? = false
|
|
74
|
-
|
|
75
66
|
sig { returns(T::Boolean) }
|
|
76
67
|
def bearer? = true
|
|
77
|
-
|
|
78
68
|
sig { returns(T::Boolean) }
|
|
79
69
|
def header? = false
|
|
80
|
-
|
|
81
70
|
# @param hash [Hash] deserialized from the native extension
|
|
82
71
|
# @return [self]
|
|
83
72
|
sig { params(hash: T::Hash[T.untyped, T.untyped]).returns(T.attached_class) }
|
|
@@ -85,8 +74,7 @@ module Kreuzcrawl
|
|
|
85
74
|
new(token: hash[:token] || hash["token"])
|
|
86
75
|
end
|
|
87
76
|
end
|
|
88
|
-
|
|
89
|
-
# Custom authentication header.
|
|
77
|
+
## Custom authentication header.
|
|
90
78
|
AuthConfigHeader = Data.define(:name, :value) do
|
|
91
79
|
include AuthConfig
|
|
92
80
|
extend T::Sig
|
|
@@ -94,20 +82,15 @@ module Kreuzcrawl
|
|
|
94
82
|
# HTTP header name to set on each request.
|
|
95
83
|
sig { returns(String) }
|
|
96
84
|
def name = super # rubocop:disable Lint/UselessMethodDefinition
|
|
97
|
-
|
|
98
85
|
# HTTP header value to send.
|
|
99
86
|
sig { returns(String) }
|
|
100
87
|
def value = super # rubocop:disable Lint/UselessMethodDefinition
|
|
101
|
-
|
|
102
88
|
sig { returns(T::Boolean) }
|
|
103
89
|
def basic? = false
|
|
104
|
-
|
|
105
90
|
sig { returns(T::Boolean) }
|
|
106
91
|
def bearer? = false
|
|
107
|
-
|
|
108
92
|
sig { returns(T::Boolean) }
|
|
109
93
|
def header? = true
|
|
110
|
-
|
|
111
94
|
# @param hash [Hash] deserialized from the native extension
|
|
112
95
|
# @return [self]
|
|
113
96
|
sig { params(hash: T::Hash[T.untyped, T.untyped]).returns(T.attached_class) }
|
|
@@ -147,8 +130,7 @@ module Kreuzcrawl
|
|
|
147
130
|
end
|
|
148
131
|
end
|
|
149
132
|
end
|
|
150
|
-
|
|
151
|
-
# A single page has been crawled.
|
|
133
|
+
## A single page has been crawled.
|
|
152
134
|
CrawlEventPage = Data.define(:result) do
|
|
153
135
|
include CrawlEvent
|
|
154
136
|
extend T::Sig
|
|
@@ -156,16 +138,12 @@ module Kreuzcrawl
|
|
|
156
138
|
# The crawled page result.
|
|
157
139
|
sig { returns(CrawlPageResult) }
|
|
158
140
|
def result = super # rubocop:disable Lint/UselessMethodDefinition
|
|
159
|
-
|
|
160
141
|
sig { returns(T::Boolean) }
|
|
161
142
|
def page? = true
|
|
162
|
-
|
|
163
143
|
sig { returns(T::Boolean) }
|
|
164
144
|
def error? = false
|
|
165
|
-
|
|
166
145
|
sig { returns(T::Boolean) }
|
|
167
146
|
def complete? = false
|
|
168
|
-
|
|
169
147
|
# @param hash [Hash] deserialized from the native extension
|
|
170
148
|
# @return [self]
|
|
171
149
|
sig { params(hash: T::Hash[T.untyped, T.untyped]).returns(T.attached_class) }
|
|
@@ -173,8 +151,7 @@ module Kreuzcrawl
|
|
|
173
151
|
new(result: hash[:result] || hash["result"])
|
|
174
152
|
end
|
|
175
153
|
end
|
|
176
|
-
|
|
177
|
-
# An error occurred while crawling a URL.
|
|
154
|
+
## An error occurred while crawling a URL.
|
|
178
155
|
CrawlEventError = Data.define(:url, :error) do
|
|
179
156
|
include CrawlEvent
|
|
180
157
|
extend T::Sig
|
|
@@ -182,20 +159,15 @@ module Kreuzcrawl
|
|
|
182
159
|
# The URL that failed.
|
|
183
160
|
sig { returns(String) }
|
|
184
161
|
def url = super # rubocop:disable Lint/UselessMethodDefinition
|
|
185
|
-
|
|
186
162
|
# The error message.
|
|
187
163
|
sig { returns(String) }
|
|
188
164
|
def error = super # rubocop:disable Lint/UselessMethodDefinition
|
|
189
|
-
|
|
190
165
|
sig { returns(T::Boolean) }
|
|
191
166
|
def page? = false
|
|
192
|
-
|
|
193
167
|
sig { returns(T::Boolean) }
|
|
194
168
|
def error? = true
|
|
195
|
-
|
|
196
169
|
sig { returns(T::Boolean) }
|
|
197
170
|
def complete? = false
|
|
198
|
-
|
|
199
171
|
# @param hash [Hash] deserialized from the native extension
|
|
200
172
|
# @return [self]
|
|
201
173
|
sig { params(hash: T::Hash[T.untyped, T.untyped]).returns(T.attached_class) }
|
|
@@ -203,8 +175,7 @@ module Kreuzcrawl
|
|
|
203
175
|
new(url: hash[:url] || hash["url"], error: hash[:error] || hash["error"])
|
|
204
176
|
end
|
|
205
177
|
end
|
|
206
|
-
|
|
207
|
-
# The crawl has completed.
|
|
178
|
+
## The crawl has completed.
|
|
208
179
|
CrawlEventComplete = Data.define(:pages_crawled) do
|
|
209
180
|
include CrawlEvent
|
|
210
181
|
extend T::Sig
|
|
@@ -212,16 +183,12 @@ module Kreuzcrawl
|
|
|
212
183
|
# Total number of pages crawled.
|
|
213
184
|
sig { returns(Integer) }
|
|
214
185
|
def pages_crawled = super # rubocop:disable Lint/UselessMethodDefinition
|
|
215
|
-
|
|
216
186
|
sig { returns(T::Boolean) }
|
|
217
187
|
def page? = false
|
|
218
|
-
|
|
219
188
|
sig { returns(T::Boolean) }
|
|
220
189
|
def error? = false
|
|
221
|
-
|
|
222
190
|
sig { returns(T::Boolean) }
|
|
223
191
|
def complete? = true
|
|
224
|
-
|
|
225
192
|
# @param hash [Hash] deserialized from the native extension
|
|
226
193
|
# @return [self]
|
|
227
194
|
sig { params(hash: T::Hash[T.untyped, T.untyped]).returns(T.attached_class) }
|
|
@@ -261,8 +228,7 @@ module Kreuzcrawl
|
|
|
261
228
|
end
|
|
262
229
|
end
|
|
263
230
|
end
|
|
264
|
-
|
|
265
|
-
# Click on an element matching the given CSS selector.
|
|
231
|
+
## Click on an element matching the given CSS selector.
|
|
266
232
|
PageActionClick = Data.define(:selector) do
|
|
267
233
|
include PageAction
|
|
268
234
|
extend T::Sig
|
|
@@ -270,31 +236,22 @@ module Kreuzcrawl
|
|
|
270
236
|
# CSS selector for the element to click.
|
|
271
237
|
sig { returns(String) }
|
|
272
238
|
def selector = super # rubocop:disable Lint/UselessMethodDefinition
|
|
273
|
-
|
|
274
239
|
sig { returns(T::Boolean) }
|
|
275
240
|
def click? = true
|
|
276
|
-
|
|
277
241
|
sig { returns(T::Boolean) }
|
|
278
242
|
def type_text? = false
|
|
279
|
-
|
|
280
243
|
sig { returns(T::Boolean) }
|
|
281
244
|
def press? = false
|
|
282
|
-
|
|
283
245
|
sig { returns(T::Boolean) }
|
|
284
246
|
def scroll? = false
|
|
285
|
-
|
|
286
247
|
sig { returns(T::Boolean) }
|
|
287
248
|
def wait? = false
|
|
288
|
-
|
|
289
249
|
sig { returns(T::Boolean) }
|
|
290
250
|
def screenshot? = false
|
|
291
|
-
|
|
292
251
|
sig { returns(T::Boolean) }
|
|
293
252
|
def execute_js? = false
|
|
294
|
-
|
|
295
253
|
sig { returns(T::Boolean) }
|
|
296
254
|
def scrape? = false
|
|
297
|
-
|
|
298
255
|
# @param hash [Hash] deserialized from the native extension
|
|
299
256
|
# @return [self]
|
|
300
257
|
sig { params(hash: T::Hash[T.untyped, T.untyped]).returns(T.attached_class) }
|
|
@@ -302,8 +259,7 @@ module Kreuzcrawl
|
|
|
302
259
|
new(selector: hash[:selector] || hash["selector"])
|
|
303
260
|
end
|
|
304
261
|
end
|
|
305
|
-
|
|
306
|
-
# Type text into an element matching the given CSS selector.
|
|
262
|
+
## Type text into an element matching the given CSS selector.
|
|
307
263
|
PageActionTypeText = Data.define(:selector, :text) do
|
|
308
264
|
include PageAction
|
|
309
265
|
extend T::Sig
|
|
@@ -311,35 +267,25 @@ module Kreuzcrawl
|
|
|
311
267
|
# CSS selector for the input element.
|
|
312
268
|
sig { returns(String) }
|
|
313
269
|
def selector = super # rubocop:disable Lint/UselessMethodDefinition
|
|
314
|
-
|
|
315
270
|
# Text to type into the element.
|
|
316
271
|
sig { returns(String) }
|
|
317
272
|
def text = super # rubocop:disable Lint/UselessMethodDefinition
|
|
318
|
-
|
|
319
273
|
sig { returns(T::Boolean) }
|
|
320
274
|
def click? = false
|
|
321
|
-
|
|
322
275
|
sig { returns(T::Boolean) }
|
|
323
276
|
def type_text? = true
|
|
324
|
-
|
|
325
277
|
sig { returns(T::Boolean) }
|
|
326
278
|
def press? = false
|
|
327
|
-
|
|
328
279
|
sig { returns(T::Boolean) }
|
|
329
280
|
def scroll? = false
|
|
330
|
-
|
|
331
281
|
sig { returns(T::Boolean) }
|
|
332
282
|
def wait? = false
|
|
333
|
-
|
|
334
283
|
sig { returns(T::Boolean) }
|
|
335
284
|
def screenshot? = false
|
|
336
|
-
|
|
337
285
|
sig { returns(T::Boolean) }
|
|
338
286
|
def execute_js? = false
|
|
339
|
-
|
|
340
287
|
sig { returns(T::Boolean) }
|
|
341
288
|
def scrape? = false
|
|
342
|
-
|
|
343
289
|
# @param hash [Hash] deserialized from the native extension
|
|
344
290
|
# @return [self]
|
|
345
291
|
sig { params(hash: T::Hash[T.untyped, T.untyped]).returns(T.attached_class) }
|
|
@@ -347,8 +293,7 @@ module Kreuzcrawl
|
|
|
347
293
|
new(selector: hash[:selector] || hash["selector"], text: hash[:text] || hash["text"])
|
|
348
294
|
end
|
|
349
295
|
end
|
|
350
|
-
|
|
351
|
-
# Press a keyboard key (e.g. "Enter", "Tab", "Escape").
|
|
296
|
+
## Press a keyboard key (e.g. "Enter", "Tab", "Escape").
|
|
352
297
|
PageActionPress = Data.define(:key) do
|
|
353
298
|
include PageAction
|
|
354
299
|
extend T::Sig
|
|
@@ -356,31 +301,22 @@ module Kreuzcrawl
|
|
|
356
301
|
# Key name to press.
|
|
357
302
|
sig { returns(String) }
|
|
358
303
|
def key = super # rubocop:disable Lint/UselessMethodDefinition
|
|
359
|
-
|
|
360
304
|
sig { returns(T::Boolean) }
|
|
361
305
|
def click? = false
|
|
362
|
-
|
|
363
306
|
sig { returns(T::Boolean) }
|
|
364
307
|
def type_text? = false
|
|
365
|
-
|
|
366
308
|
sig { returns(T::Boolean) }
|
|
367
309
|
def press? = true
|
|
368
|
-
|
|
369
310
|
sig { returns(T::Boolean) }
|
|
370
311
|
def scroll? = false
|
|
371
|
-
|
|
372
312
|
sig { returns(T::Boolean) }
|
|
373
313
|
def wait? = false
|
|
374
|
-
|
|
375
314
|
sig { returns(T::Boolean) }
|
|
376
315
|
def screenshot? = false
|
|
377
|
-
|
|
378
316
|
sig { returns(T::Boolean) }
|
|
379
317
|
def execute_js? = false
|
|
380
|
-
|
|
381
318
|
sig { returns(T::Boolean) }
|
|
382
319
|
def scrape? = false
|
|
383
|
-
|
|
384
320
|
# @param hash [Hash] deserialized from the native extension
|
|
385
321
|
# @return [self]
|
|
386
322
|
sig { params(hash: T::Hash[T.untyped, T.untyped]).returns(T.attached_class) }
|
|
@@ -388,8 +324,7 @@ module Kreuzcrawl
|
|
|
388
324
|
new(key: hash[:key] || hash["key"])
|
|
389
325
|
end
|
|
390
326
|
end
|
|
391
|
-
|
|
392
|
-
# Scroll the page or a specific element.
|
|
327
|
+
## Scroll the page or a specific element.
|
|
393
328
|
PageActionScroll = Data.define(:direction, :selector, :amount) do
|
|
394
329
|
include PageAction
|
|
395
330
|
extend T::Sig
|
|
@@ -397,39 +332,28 @@ module Kreuzcrawl
|
|
|
397
332
|
# Direction to scroll.
|
|
398
333
|
sig { returns(ScrollDirection) }
|
|
399
334
|
def direction = super # rubocop:disable Lint/UselessMethodDefinition
|
|
400
|
-
|
|
401
335
|
# Optional CSS selector for a scrollable element. Scrolls the page if absent.
|
|
402
336
|
sig { returns(T.nilable(String)) }
|
|
403
337
|
def selector = super # rubocop:disable Lint/UselessMethodDefinition
|
|
404
|
-
|
|
405
338
|
# Optional pixel amount to scroll. Uses a default if absent.
|
|
406
339
|
sig { returns(T.nilable(Integer)) }
|
|
407
340
|
def amount = super # rubocop:disable Lint/UselessMethodDefinition
|
|
408
|
-
|
|
409
341
|
sig { returns(T::Boolean) }
|
|
410
342
|
def click? = false
|
|
411
|
-
|
|
412
343
|
sig { returns(T::Boolean) }
|
|
413
344
|
def type_text? = false
|
|
414
|
-
|
|
415
345
|
sig { returns(T::Boolean) }
|
|
416
346
|
def press? = false
|
|
417
|
-
|
|
418
347
|
sig { returns(T::Boolean) }
|
|
419
348
|
def scroll? = true
|
|
420
|
-
|
|
421
349
|
sig { returns(T::Boolean) }
|
|
422
350
|
def wait? = false
|
|
423
|
-
|
|
424
351
|
sig { returns(T::Boolean) }
|
|
425
352
|
def screenshot? = false
|
|
426
|
-
|
|
427
353
|
sig { returns(T::Boolean) }
|
|
428
354
|
def execute_js? = false
|
|
429
|
-
|
|
430
355
|
sig { returns(T::Boolean) }
|
|
431
356
|
def scrape? = false
|
|
432
|
-
|
|
433
357
|
# @param hash [Hash] deserialized from the native extension
|
|
434
358
|
# @return [self]
|
|
435
359
|
sig { params(hash: T::Hash[T.untyped, T.untyped]).returns(T.attached_class) }
|
|
@@ -437,8 +361,7 @@ module Kreuzcrawl
|
|
|
437
361
|
new(direction: hash[:direction] || hash["direction"], selector: hash[:selector] || hash["selector"], amount: hash[:amount] || hash["amount"])
|
|
438
362
|
end
|
|
439
363
|
end
|
|
440
|
-
|
|
441
|
-
# Wait for a duration or for an element to appear.
|
|
364
|
+
## Wait for a duration or for an element to appear.
|
|
442
365
|
PageActionWait = Data.define(:milliseconds, :selector) do
|
|
443
366
|
include PageAction
|
|
444
367
|
extend T::Sig
|
|
@@ -446,35 +369,25 @@ module Kreuzcrawl
|
|
|
446
369
|
# Milliseconds to wait. Ignored if `selector` is provided.
|
|
447
370
|
sig { returns(T.nilable(Integer)) }
|
|
448
371
|
def milliseconds = super # rubocop:disable Lint/UselessMethodDefinition
|
|
449
|
-
|
|
450
372
|
# CSS selector to wait for.
|
|
451
373
|
sig { returns(T.nilable(String)) }
|
|
452
374
|
def selector = super # rubocop:disable Lint/UselessMethodDefinition
|
|
453
|
-
|
|
454
375
|
sig { returns(T::Boolean) }
|
|
455
376
|
def click? = false
|
|
456
|
-
|
|
457
377
|
sig { returns(T::Boolean) }
|
|
458
378
|
def type_text? = false
|
|
459
|
-
|
|
460
379
|
sig { returns(T::Boolean) }
|
|
461
380
|
def press? = false
|
|
462
|
-
|
|
463
381
|
sig { returns(T::Boolean) }
|
|
464
382
|
def scroll? = false
|
|
465
|
-
|
|
466
383
|
sig { returns(T::Boolean) }
|
|
467
384
|
def wait? = true
|
|
468
|
-
|
|
469
385
|
sig { returns(T::Boolean) }
|
|
470
386
|
def screenshot? = false
|
|
471
|
-
|
|
472
387
|
sig { returns(T::Boolean) }
|
|
473
388
|
def execute_js? = false
|
|
474
|
-
|
|
475
389
|
sig { returns(T::Boolean) }
|
|
476
390
|
def scrape? = false
|
|
477
|
-
|
|
478
391
|
# @param hash [Hash] deserialized from the native extension
|
|
479
392
|
# @return [self]
|
|
480
393
|
sig { params(hash: T::Hash[T.untyped, T.untyped]).returns(T.attached_class) }
|
|
@@ -482,8 +395,7 @@ module Kreuzcrawl
|
|
|
482
395
|
new(milliseconds: hash[:milliseconds] || hash["milliseconds"], selector: hash[:selector] || hash["selector"])
|
|
483
396
|
end
|
|
484
397
|
end
|
|
485
|
-
|
|
486
|
-
# Take a screenshot of the current page.
|
|
398
|
+
## Take a screenshot of the current page.
|
|
487
399
|
PageActionScreenshot = Data.define(:full_page) do
|
|
488
400
|
include PageAction
|
|
489
401
|
extend T::Sig
|
|
@@ -495,31 +407,22 @@ module Kreuzcrawl
|
|
|
495
407
|
# use either convention without error.
|
|
496
408
|
sig { returns(T.nilable(T::Boolean)) }
|
|
497
409
|
def full_page = super # rubocop:disable Lint/UselessMethodDefinition
|
|
498
|
-
|
|
499
410
|
sig { returns(T::Boolean) }
|
|
500
411
|
def click? = false
|
|
501
|
-
|
|
502
412
|
sig { returns(T::Boolean) }
|
|
503
413
|
def type_text? = false
|
|
504
|
-
|
|
505
414
|
sig { returns(T::Boolean) }
|
|
506
415
|
def press? = false
|
|
507
|
-
|
|
508
416
|
sig { returns(T::Boolean) }
|
|
509
417
|
def scroll? = false
|
|
510
|
-
|
|
511
418
|
sig { returns(T::Boolean) }
|
|
512
419
|
def wait? = false
|
|
513
|
-
|
|
514
420
|
sig { returns(T::Boolean) }
|
|
515
421
|
def screenshot? = true
|
|
516
|
-
|
|
517
422
|
sig { returns(T::Boolean) }
|
|
518
423
|
def execute_js? = false
|
|
519
|
-
|
|
520
424
|
sig { returns(T::Boolean) }
|
|
521
425
|
def scrape? = false
|
|
522
|
-
|
|
523
426
|
# @param hash [Hash] deserialized from the native extension
|
|
524
427
|
# @return [self]
|
|
525
428
|
sig { params(hash: T::Hash[T.untyped, T.untyped]).returns(T.attached_class) }
|
|
@@ -527,13 +430,12 @@ module Kreuzcrawl
|
|
|
527
430
|
new(full_page: hash[:full_page] || hash["full_page"])
|
|
528
431
|
end
|
|
529
432
|
end
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
#
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
# Only execute scripts from trusted sources.
|
|
433
|
+
## Execute arbitrary JavaScript in the page context.
|
|
434
|
+
##
|
|
435
|
+
## # Safety
|
|
436
|
+
##
|
|
437
|
+
## The script runs with full page privileges in the browser context.
|
|
438
|
+
## Only execute scripts from trusted sources.
|
|
537
439
|
PageActionExecuteJs = Data.define(:script) do
|
|
538
440
|
include PageAction
|
|
539
441
|
extend T::Sig
|
|
@@ -541,31 +443,22 @@ module Kreuzcrawl
|
|
|
541
443
|
# JavaScript source code to execute. Max 1 MB.
|
|
542
444
|
sig { returns(String) }
|
|
543
445
|
def script = super # rubocop:disable Lint/UselessMethodDefinition
|
|
544
|
-
|
|
545
446
|
sig { returns(T::Boolean) }
|
|
546
447
|
def click? = false
|
|
547
|
-
|
|
548
448
|
sig { returns(T::Boolean) }
|
|
549
449
|
def type_text? = false
|
|
550
|
-
|
|
551
450
|
sig { returns(T::Boolean) }
|
|
552
451
|
def press? = false
|
|
553
|
-
|
|
554
452
|
sig { returns(T::Boolean) }
|
|
555
453
|
def scroll? = false
|
|
556
|
-
|
|
557
454
|
sig { returns(T::Boolean) }
|
|
558
455
|
def wait? = false
|
|
559
|
-
|
|
560
456
|
sig { returns(T::Boolean) }
|
|
561
457
|
def screenshot? = false
|
|
562
|
-
|
|
563
458
|
sig { returns(T::Boolean) }
|
|
564
459
|
def execute_js? = true
|
|
565
|
-
|
|
566
460
|
sig { returns(T::Boolean) }
|
|
567
461
|
def scrape? = false
|
|
568
|
-
|
|
569
462
|
# @param hash [Hash] deserialized from the native extension
|
|
570
463
|
# @return [self]
|
|
571
464
|
sig { params(hash: T::Hash[T.untyped, T.untyped]).returns(T.attached_class) }
|
|
@@ -573,36 +466,27 @@ module Kreuzcrawl
|
|
|
573
466
|
new(script: hash[:script] || hash["script"])
|
|
574
467
|
end
|
|
575
468
|
end
|
|
576
|
-
|
|
577
|
-
# Scrape the current page HTML.
|
|
469
|
+
## Scrape the current page HTML.
|
|
578
470
|
PageActionScrape = Data.define do
|
|
579
471
|
include PageAction
|
|
580
472
|
extend T::Sig
|
|
581
473
|
|
|
582
474
|
sig { returns(T::Boolean) }
|
|
583
475
|
def click? = false
|
|
584
|
-
|
|
585
476
|
sig { returns(T::Boolean) }
|
|
586
477
|
def type_text? = false
|
|
587
|
-
|
|
588
478
|
sig { returns(T::Boolean) }
|
|
589
479
|
def press? = false
|
|
590
|
-
|
|
591
480
|
sig { returns(T::Boolean) }
|
|
592
481
|
def scroll? = false
|
|
593
|
-
|
|
594
482
|
sig { returns(T::Boolean) }
|
|
595
483
|
def wait? = false
|
|
596
|
-
|
|
597
484
|
sig { returns(T::Boolean) }
|
|
598
485
|
def screenshot? = false
|
|
599
|
-
|
|
600
486
|
sig { returns(T::Boolean) }
|
|
601
487
|
def execute_js? = false
|
|
602
|
-
|
|
603
488
|
sig { returns(T::Boolean) }
|
|
604
489
|
def scrape? = true
|
|
605
|
-
|
|
606
490
|
# @param hash [Hash] deserialized from the native extension
|
|
607
491
|
# @return [self]
|
|
608
492
|
sig { params(hash: T::Hash[T.untyped, T.untyped]).returns(T.attached_class) }
|
data/lib/kreuzcrawl/version.rb
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
# This file is auto-generated by alef — DO NOT EDIT.
|
|
2
|
-
# alef:hash:
|
|
2
|
+
# alef:hash:e0b048907e4acd1bff8132ca9fab8a2ec941d36e30e70ac1f6ce3cd337219c92
|
|
3
3
|
# To regenerate: alef generate
|
|
4
4
|
# To verify freshness: alef verify --exit-code
|
|
5
5
|
# frozen_string_literal: true
|
|
6
6
|
|
|
7
7
|
module Kreuzcrawl
|
|
8
|
-
|
|
8
|
+
## The version string for this package.
|
|
9
|
+
VERSION = "0.3.0.pre.rc.50"
|
|
9
10
|
end
|
data/lib/kreuzcrawl.rb
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# This file is auto-generated by alef — DO NOT EDIT.
|
|
2
|
-
# alef:hash:
|
|
2
|
+
# alef:hash:e0b048907e4acd1bff8132ca9fab8a2ec941d36e30e70ac1f6ce3cd337219c92
|
|
3
3
|
# To regenerate: alef generate
|
|
4
4
|
# To verify freshness: alef verify --exit-code
|
|
5
5
|
# frozen_string_literal: true
|
|
@@ -7,6 +7,12 @@
|
|
|
7
7
|
require_relative "kreuzcrawl/version"
|
|
8
8
|
require_relative "kreuzcrawl/native"
|
|
9
9
|
|
|
10
|
+
# Top-level namespace for the Kreuzcrawl Ruby binding.
|
|
11
|
+
#
|
|
12
|
+
# All type and function symbols are re-exported from the native extension
|
|
13
|
+
# loaded via `require_relative "kreuzcrawl/native"`. See
|
|
14
|
+
# {file:README.md} for usage examples and the upstream documentation
|
|
15
|
+
# for the full API reference.
|
|
10
16
|
module Kreuzcrawl
|
|
11
17
|
# Re-export all types and functions from native extension
|
|
12
18
|
end
|
data/lib/kreuzcrawl_rb.so
CHANGED
|
Binary file
|
data/sig/types.rbs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# This file is auto-generated by alef — DO NOT EDIT.
|
|
2
|
-
# alef:hash:
|
|
2
|
+
# alef:hash:e0b048907e4acd1bff8132ca9fab8a2ec941d36e30e70ac1f6ce3cd337219c92
|
|
3
3
|
# To regenerate: alef generate
|
|
4
4
|
# To verify freshness: alef verify --exit-code
|
|
5
5
|
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: kreuzcrawl
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.3.0.pre.rc.
|
|
4
|
+
version: 0.3.0.pre.rc.50
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Kreuzberg Team
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-06-
|
|
11
|
+
date: 2026-06-08 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rb_sys
|