@purepageio/fetch-engines 0.4.1 → 0.5.0
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.
- package/README.md +177 -31
- package/dist/FetchEngine.d.ts +11 -1
- package/dist/FetchEngine.d.ts.map +1 -1
- package/dist/FetchEngine.js +73 -0
- package/dist/FetchEngine.js.map +1 -1
- package/dist/HybridEngine.d.ts +12 -1
- package/dist/HybridEngine.d.ts.map +1 -1
- package/dist/HybridEngine.js +40 -0
- package/dist/HybridEngine.js.map +1 -1
- package/dist/IEngine.d.ts +8 -1
- package/dist/IEngine.d.ts.map +1 -1
- package/dist/PlaywrightEngine.d.ts +31 -1
- package/dist/PlaywrightEngine.d.ts.map +1 -1
- package/dist/PlaywrightEngine.js +233 -0
- package/dist/PlaywrightEngine.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/types.d.ts +29 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -9,10 +9,11 @@ Fetching web content can be complex. You need to handle static HTML, dynamic Jav
|
|
|
9
9
|
|
|
10
10
|
**Why use `@purepageio/fetch-engines`?**
|
|
11
11
|
|
|
12
|
-
- **Unified API:** Get content from simple or complex sites using the same `fetchHTML(url, options?)` method.
|
|
12
|
+
- **Unified API:** Get content from simple or complex sites using the same `fetchHTML(url, options?)` method for processed content or `fetchContent(url, options?)` for raw content.
|
|
13
13
|
- **Flexible Strategies:** Choose the right tool for the job:
|
|
14
14
|
- `FetchEngine`: Lightweight and fast for static HTML, using the standard `fetch` API. Ideal for speed and efficiency with content that doesn't require JavaScript rendering. Supports custom headers.
|
|
15
15
|
- `HybridEngine`: The best of both worlds – tries `FetchEngine` first for speed, automatically falls back to a powerful browser engine (internally, `PlaywrightEngine`) for reliability on complex, JavaScript-heavy pages. Supports custom headers.
|
|
16
|
+
- **Raw Content Support:** Use `fetchContent()` to retrieve any type of content (PDFs, images, APIs, etc.) with the same smart fallback logic as `fetchHTML()`.
|
|
16
17
|
- **Robust & Resilient:** Built-in caching, configurable retries, and standardized error handling make your fetching logic more dependable.
|
|
17
18
|
- **Simplified Automation:** When `HybridEngine` uses its browser capabilities (via the internal `PlaywrightEngine`), it manages browser instances and contexts automatically through efficient pooling and includes integrated stealth measures to bypass common anti-bot systems.
|
|
18
19
|
- **Content Transformation:** Optionally convert fetched HTML directly to clean Markdown content.
|
|
@@ -26,6 +27,7 @@ This package provides a high-level abstraction, letting you focus on using the w
|
|
|
26
27
|
- [Installation](#installation)
|
|
27
28
|
- [Engines](#engines)
|
|
28
29
|
- [Basic Usage](#basic-usage)
|
|
30
|
+
- [fetchHTML vs fetchContent](#fetchhtml-vs-fetchcontent)
|
|
29
31
|
- [Configuration](#configuration)
|
|
30
32
|
- [Return Value](#return-value)
|
|
31
33
|
- [API Reference](#api-reference)
|
|
@@ -38,7 +40,8 @@ This package provides a high-level abstraction, letting you focus on using the w
|
|
|
38
40
|
## Features
|
|
39
41
|
|
|
40
42
|
- **Multiple Fetching Strategies:** Choose between `FetchEngine` (lightweight `fetch`) or `HybridEngine` (smart fallback to a full browser engine).
|
|
41
|
-
- **Unified API:** Simple `fetchHTML(url, options?)` interface across both primary engines.
|
|
43
|
+
- **Unified API:** Simple `fetchHTML(url, options?)` interface for processed content and `fetchContent(url, options?)` for raw content across both primary engines.
|
|
44
|
+
- **Raw Content Fetching:** Use `fetchContent()` to retrieve any type of content (PDFs, images, JSON, XML, etc.) without HTML processing or content-type restrictions.
|
|
42
45
|
- **Custom Headers:** Easily provide custom HTTP headers for requests in both `FetchEngine` and `HybridEngine`.
|
|
43
46
|
- **Configurable Retries:** Automatic retries on failure with customizable attempts and delays.
|
|
44
47
|
- **Built-in Caching:** In-memory caching with configurable TTL to reduce redundant fetches.
|
|
@@ -155,6 +158,111 @@ async function main() {
|
|
|
155
158
|
main();
|
|
156
159
|
```
|
|
157
160
|
|
|
161
|
+
### Raw Content Fetching
|
|
162
|
+
|
|
163
|
+
```typescript
|
|
164
|
+
import { HybridEngine } from "@purepageio/fetch-engines";
|
|
165
|
+
|
|
166
|
+
const engine = new HybridEngine();
|
|
167
|
+
|
|
168
|
+
async function fetchRawContent() {
|
|
169
|
+
try {
|
|
170
|
+
// Fetch a PDF document
|
|
171
|
+
const pdfResult = await engine.fetchContent("https://example.com/document.pdf");
|
|
172
|
+
console.log(`PDF Content-Type: ${pdfResult.contentType}`);
|
|
173
|
+
console.log(
|
|
174
|
+
`PDF Size: ${Buffer.isBuffer(pdfResult.content) ? pdfResult.content.length : pdfResult.content.length} bytes`
|
|
175
|
+
);
|
|
176
|
+
|
|
177
|
+
// Fetch JSON API
|
|
178
|
+
const jsonResult = await engine.fetchContent("https://api.example.com/data");
|
|
179
|
+
console.log(`JSON Content-Type: ${jsonResult.contentType}`);
|
|
180
|
+
console.log(`JSON Data: ${typeof jsonResult.content === "string" ? jsonResult.content : "Binary data"}`);
|
|
181
|
+
|
|
182
|
+
// Fetch with custom headers
|
|
183
|
+
const customResult = await engine.fetchContent("https://protected-api.example.com/data", {
|
|
184
|
+
headers: {
|
|
185
|
+
Authorization: "Bearer your-token",
|
|
186
|
+
Accept: "application/json",
|
|
187
|
+
},
|
|
188
|
+
});
|
|
189
|
+
console.log(`Custom fetch result: ${customResult.statusCode}`);
|
|
190
|
+
} catch (error) {
|
|
191
|
+
console.error("Raw content fetch failed:", error);
|
|
192
|
+
} finally {
|
|
193
|
+
await engine.cleanup();
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
fetchRawContent();
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
## fetchHTML vs fetchContent
|
|
200
|
+
|
|
201
|
+
Choose the right method for your use case:
|
|
202
|
+
|
|
203
|
+
### `fetchHTML(url, options?)`
|
|
204
|
+
|
|
205
|
+
**Use when:** You want to extract and process web page content.
|
|
206
|
+
|
|
207
|
+
**Features:**
|
|
208
|
+
|
|
209
|
+
- Processes HTML content and extracts metadata (title, etc.)
|
|
210
|
+
- Supports HTML-to-Markdown conversion
|
|
211
|
+
- Optimized for web page content
|
|
212
|
+
- Content-type restrictions (HTML/XML only)
|
|
213
|
+
- Returns processed content as `string`
|
|
214
|
+
|
|
215
|
+
**Best for:**
|
|
216
|
+
|
|
217
|
+
- Web scraping
|
|
218
|
+
- Content extraction
|
|
219
|
+
- Blog/article processing
|
|
220
|
+
- Any scenario where you need structured HTML or Markdown
|
|
221
|
+
|
|
222
|
+
### `fetchContent(url, options?)`
|
|
223
|
+
|
|
224
|
+
**Use when:** You want raw content without processing, mimicking standard `fetch()` behavior.
|
|
225
|
+
|
|
226
|
+
**Features:**
|
|
227
|
+
|
|
228
|
+
- Retrieves any content type (PDFs, images, JSON, XML, etc.)
|
|
229
|
+
- No content-type restrictions
|
|
230
|
+
- Returns raw content as `Buffer` (binary) or `string` (text)
|
|
231
|
+
- Preserves original MIME type information
|
|
232
|
+
- Minimal processing overhead
|
|
233
|
+
|
|
234
|
+
**Best for:**
|
|
235
|
+
|
|
236
|
+
- API consumption
|
|
237
|
+
- File downloads (PDFs, images, etc.)
|
|
238
|
+
- Binary content retrieval
|
|
239
|
+
- Any scenario where you need the raw response
|
|
240
|
+
|
|
241
|
+
### Example Comparison
|
|
242
|
+
|
|
243
|
+
```typescript
|
|
244
|
+
import { HybridEngine } from "@purepageio/fetch-engines";
|
|
245
|
+
|
|
246
|
+
const engine = new HybridEngine();
|
|
247
|
+
|
|
248
|
+
// fetchHTML - for web page content
|
|
249
|
+
const htmlResult = await engine.fetchHTML("https://example.com");
|
|
250
|
+
console.log(htmlResult.title); // "Example Domain"
|
|
251
|
+
console.log(htmlResult.contentType); // "html" or "markdown"
|
|
252
|
+
console.log(typeof htmlResult.content); // "string" (processed HTML/Markdown)
|
|
253
|
+
|
|
254
|
+
// fetchContent - for raw content
|
|
255
|
+
const contentResult = await engine.fetchContent("https://example.com");
|
|
256
|
+
console.log(contentResult.title); // "Example Domain" (extracted but not processed)
|
|
257
|
+
console.log(contentResult.contentType); // "text/html" (original MIME type)
|
|
258
|
+
console.log(typeof contentResult.content); // "string" (raw HTML)
|
|
259
|
+
|
|
260
|
+
// fetchContent - for non-HTML content
|
|
261
|
+
const pdfResult = await engine.fetchContent("https://example.com/doc.pdf");
|
|
262
|
+
console.log(pdfResult.contentType); // "application/pdf"
|
|
263
|
+
console.log(Buffer.isBuffer(pdfResult.content)); // true (binary content)
|
|
264
|
+
```
|
|
265
|
+
|
|
158
266
|
## Configuration
|
|
159
267
|
|
|
160
268
|
Engines accept an optional configuration object in their constructor to customise behavior.
|
|
@@ -234,7 +342,7 @@ When you configure `HybridEngine` using `PlaywrightEngineConfig`:
|
|
|
234
342
|
- **`headers?: Record<string, string>`**:
|
|
235
343
|
- These headers override any headers set in the `HybridEngine` constructor.
|
|
236
344
|
- If `FetchEngine` is used: These headers are passed to `FetchEngine.fetchHTML(url, { headers: ... })`. `FetchEngine` then merges them with its constructor headers and base defaults.
|
|
237
|
-
- If `PlaywrightEngine` (fallback) is used: These headers are merged with `HybridEngine` constructor headers (options take precedence) and the result is passed to `PlaywrightEngine
|
|
345
|
+
- If `PlaywrightEngine` (fallback) is used: These headers are merged with `HybridEngine` constructor headers (options take precedence) and the result is passed to `PlaywrightEngine`'s `fetchHTML()`. `PlaywrightEngine` then applies its own logic (e.g., for `page.setExtraHTTPHeaders` or its HTTP fallback).
|
|
238
346
|
- **`markdown?: boolean`**:
|
|
239
347
|
- If `FetchEngine` is used: This per-request option is **ignored**. `FetchEngine` uses its own constructor `markdown` setting.
|
|
240
348
|
- If `PlaywrightEngine` (fallback) is used: This overrides `PlaywrightEngine`'s default and determines its output format.
|
|
@@ -260,6 +368,8 @@ async function fetchSpaSite() {
|
|
|
260
368
|
|
|
261
369
|
## Return Value
|
|
262
370
|
|
|
371
|
+
### `fetchHTML()` Result
|
|
372
|
+
|
|
263
373
|
All `fetchHTML()` methods return a Promise that resolves to an `HTMLFetchResult` object:
|
|
264
374
|
|
|
265
375
|
- `content` (`string`): The fetched content, either original HTML or converted Markdown.
|
|
@@ -270,6 +380,18 @@ All `fetchHTML()` methods return a Promise that resolves to an `HTMLFetchResult`
|
|
|
270
380
|
- `statusCode` (`number | undefined`): HTTP status code.
|
|
271
381
|
- `error` (`Error | undefined`): Error object if the fetch failed after all retries. It's generally recommended to rely on catching thrown errors for failure handling.
|
|
272
382
|
|
|
383
|
+
### `fetchContent()` Result
|
|
384
|
+
|
|
385
|
+
All `fetchContent()` methods return a Promise that resolves to a `ContentFetchResult` object:
|
|
386
|
+
|
|
387
|
+
- `content` (`Buffer | string`): The raw fetched content. Binary content (PDFs, images, etc.) is returned as `Buffer`, text content as `string`.
|
|
388
|
+
- `contentType` (`string`): The original MIME type from the server (e.g., `"application/pdf"`, `"text/html"`, `"application/json"`).
|
|
389
|
+
- `title` (`string | null`): Extracted page title if the content is HTML, otherwise `null`.
|
|
390
|
+
- `url` (`string`): Final URL after redirects.
|
|
391
|
+
- `isFromCache` (`boolean`): True if the result came from cache.
|
|
392
|
+
- `statusCode` (`number | undefined`): HTTP status code.
|
|
393
|
+
- `error` (`Error | undefined`): Error object if the fetch failed after all retries. It's generally recommended to rely on catching thrown errors for failure handling.
|
|
394
|
+
|
|
273
395
|
## API Reference
|
|
274
396
|
|
|
275
397
|
### `engine.fetchHTML(url, options?)`
|
|
@@ -284,6 +406,15 @@ All `fetchHTML()` methods return a Promise that resolves to an `HTMLFetchResult`
|
|
|
284
406
|
|
|
285
407
|
Fetches content, returning HTML or Markdown based on configuration/options in `result.content` with `result.contentType` indicating the format.
|
|
286
408
|
|
|
409
|
+
### `engine.fetchContent(url, options?)`
|
|
410
|
+
|
|
411
|
+
- `url` (`string`): URL to fetch.
|
|
412
|
+
- `options?` (`ContentFetchOptions`): Optional per-request overrides.
|
|
413
|
+
- `headers?: Record<string, string>`: Custom headers for this specific request.
|
|
414
|
+
- **Returns:** `Promise<ContentFetchResult>`
|
|
415
|
+
|
|
416
|
+
Fetches raw content without processing, mimicking standard `fetch()` behavior. Returns binary content as `Buffer` and text content as `string`. Supports any content type (PDFs, images, JSON, XML, etc.) and uses the same smart fallback logic as `fetchHTML()` but without HTML-specific processing or content-type restrictions.
|
|
417
|
+
|
|
287
418
|
### `engine.cleanup()` (`HybridEngine` and direct `FetchEngine` if no cleanup needed)
|
|
288
419
|
|
|
289
420
|
- **Returns:** `Promise<void>`
|
|
@@ -312,11 +443,10 @@ Errors during fetching are typically thrown as instances of `FetchError` (or its
|
|
|
312
443
|
Common `FetchError` codes and scenarios:
|
|
313
444
|
|
|
314
445
|
- **`ERR_HTTP_ERROR`**: Thrown by `FetchEngine` for HTTP status codes >= 400. `error.statusCode` will be set.
|
|
315
|
-
- **`ERR_NON_HTML_CONTENT`**: Thrown by `FetchEngine` if the content type is not HTML and `markdown` conversion is not requested.
|
|
446
|
+
- **`ERR_NON_HTML_CONTENT`**: Thrown by `FetchEngine` if the content type is not HTML and `markdown` conversion is not requested. **Note:** `fetchContent()` does not throw this error as it supports all content types.
|
|
316
447
|
- **`ERR_PLAYWRIGHT_OPERATION`**: A general error from `HybridEngine`'s browser mode indicating a failure during a Playwright operation (e.g., page acquisition, navigation, interaction). The `originalError` property will often contain the specific Playwright error.
|
|
317
448
|
- **`ERR_NAVIGATION`**: Often seen as part of `ERR_PLAYWRIGHT_OPERATION`'s message or in `originalError` when a Playwright navigation (in `HybridEngine`'s browser mode) fails (e.g., timeout, SSL error).
|
|
318
|
-
- **`ERR_MARKDOWN_CONVERSION_NON_HTML`**: Thrown by `HybridEngine` (when its Playwright part is active) if `markdown: true` is requested for a non-HTML content type (e.g., XML, JSON).
|
|
319
|
-
- **`ERR_UNSUPPORTED_RAW_CONTENT_TYPE`**: Thrown by `HybridEngine` (when its Playwright part is active and `markdown: false`) if requested for a content type it doesn't support for direct fetching (e.g., images, applications).
|
|
449
|
+
- **`ERR_MARKDOWN_CONVERSION_NON_HTML`**: Thrown by `HybridEngine` (when its Playwright part is active) if `markdown: true` is requested for a non-HTML content type (e.g., XML, JSON). **Note:** Only applies to `fetchHTML()` as `fetchContent()` doesn't perform markdown conversion.
|
|
320
450
|
- **`ERR_CACHE_ERROR`**: Indicates an issue with cache read/write operations.
|
|
321
451
|
- **`ERR_PROXY_CONFIG_ERROR`**: Problem with proxy configuration (for `HybridEngine`'s browser mode).
|
|
322
452
|
- **`ERR_BROWSER_POOL_EXHAUSTED`**: If `HybridEngine`'s browser pool cannot provide a page.
|
|
@@ -338,40 +468,56 @@ const engine = new HybridEngine({ useHttpFallback: false, maxRetries: 1 }); // u
|
|
|
338
468
|
|
|
339
469
|
async function fetchWithHandling(url: string) {
|
|
340
470
|
try {
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
471
|
+
// Try fetchHTML first
|
|
472
|
+
const htmlResult = await engine.fetchHTML(url, { headers: { "X-My-Header": "TestValue" } });
|
|
473
|
+
if (htmlResult.error) {
|
|
474
|
+
console.warn(`fetchHTML for ${url} included non-critical error after retries: ${htmlResult.error.message}`);
|
|
344
475
|
}
|
|
345
|
-
console.log(`Success for ${url}! Title: ${
|
|
346
|
-
// Use
|
|
476
|
+
console.log(`fetchHTML Success for ${url}! Title: ${htmlResult.title}, Content type: ${htmlResult.contentType}`);
|
|
477
|
+
// Use htmlResult.content
|
|
347
478
|
} catch (error) {
|
|
348
|
-
console.error(`
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
console.error(` Original Error: ${error.originalError.name} - ${error.originalError.message}`);
|
|
357
|
-
}
|
|
358
|
-
// Example of specific handling:
|
|
359
|
-
if (error.code === "ERR_PLAYWRIGHT_OPERATION") {
|
|
360
|
-
console.error(
|
|
361
|
-
" Hint: This was a Playwright operation failure (HybridEngine's browser mode). Check Playwright logs or originalError."
|
|
479
|
+
console.error(`fetchHTML failed for ${url}, trying fetchContent...`);
|
|
480
|
+
|
|
481
|
+
try {
|
|
482
|
+
// Fallback to fetchContent for raw content
|
|
483
|
+
const contentResult = await engine.fetchContent(url, { headers: { "X-My-Header": "TestValue" } });
|
|
484
|
+
if (contentResult.error) {
|
|
485
|
+
console.warn(
|
|
486
|
+
`fetchContent for ${url} included non-critical error after retries: ${contentResult.error.message}`
|
|
362
487
|
);
|
|
363
488
|
}
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
}
|
|
367
|
-
console.error(`
|
|
489
|
+
console.log(`fetchContent Success for ${url}! Content type: ${contentResult.contentType}`);
|
|
490
|
+
// Use contentResult.content (could be Buffer or string)
|
|
491
|
+
} catch (contentError) {
|
|
492
|
+
console.error(`Both fetchHTML and fetchContent failed for ${url}:`);
|
|
493
|
+
if (contentError instanceof FetchError) {
|
|
494
|
+
console.error(` Error Code: ${contentError.code || "N/A"}`);
|
|
495
|
+
console.error(` Message: ${contentError.message}`);
|
|
496
|
+
if (contentError.statusCode) {
|
|
497
|
+
console.error(` Status Code: ${contentError.statusCode}`);
|
|
498
|
+
}
|
|
499
|
+
if (contentError.originalError) {
|
|
500
|
+
console.error(` Original Error: ${contentError.originalError.name} - ${contentError.originalError.message}`);
|
|
501
|
+
}
|
|
502
|
+
// Example of specific handling:
|
|
503
|
+
if (contentError.code === "ERR_PLAYWRIGHT_OPERATION") {
|
|
504
|
+
console.error(
|
|
505
|
+
" Hint: This was a Playwright operation failure (HybridEngine's browser mode). Check Playwright logs or originalError."
|
|
506
|
+
);
|
|
507
|
+
}
|
|
508
|
+
} else if (contentError instanceof Error) {
|
|
509
|
+
console.error(` Generic Error: ${contentError.message}`);
|
|
510
|
+
} else {
|
|
511
|
+
console.error(` Unknown error occurred: ${String(contentError)}`);
|
|
512
|
+
}
|
|
368
513
|
}
|
|
369
514
|
}
|
|
370
515
|
}
|
|
371
516
|
|
|
372
517
|
async function runExamples() {
|
|
373
|
-
await fetchWithHandling("https://nonexistentdomain.example.com"); // Likely DNS or navigation error
|
|
374
|
-
await fetchWithHandling("https://example.com/
|
|
518
|
+
await fetchWithHandling("https://nonexistentdomain.example.com"); // Likely DNS or navigation error
|
|
519
|
+
await fetchWithHandling("https://example.com/document.pdf"); // PDF content - fetchHTML will fail, fetchContent will succeed
|
|
520
|
+
await fetchWithHandling("https://example.com/api/data.json"); // JSON content - fetchHTML will fail, fetchContent will succeed
|
|
375
521
|
await engine.cleanup(); // Important for HybridEngine
|
|
376
522
|
}
|
|
377
523
|
|
package/dist/FetchEngine.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { HTMLFetchResult, BrowserMetrics, FetchEngineOptions } from "./types.js";
|
|
1
|
+
import type { HTMLFetchResult, ContentFetchResult, ContentFetchOptions, BrowserMetrics, FetchEngineOptions } from "./types.js";
|
|
2
2
|
import type { IEngine } from "./IEngine.js";
|
|
3
3
|
import { FetchError } from "./errors.js";
|
|
4
4
|
/**
|
|
@@ -31,6 +31,16 @@ export declare class FetchEngine implements IEngine {
|
|
|
31
31
|
* @throws {Error} If the content type is not HTML or for other network errors.
|
|
32
32
|
*/
|
|
33
33
|
fetchHTML(url: string, options?: FetchEngineOptions): Promise<HTMLFetchResult>;
|
|
34
|
+
/**
|
|
35
|
+
* Fetches raw content from the specified URL (mimics standard fetch API).
|
|
36
|
+
*
|
|
37
|
+
* @param url The URL to fetch.
|
|
38
|
+
* @param options Optional fetch options.
|
|
39
|
+
* @returns A Promise resolving to a ContentFetchResult object.
|
|
40
|
+
* @throws {FetchEngineHttpError} If the HTTP response status is not ok (e.g., 404, 500).
|
|
41
|
+
* @throws {Error} For network errors or other fetch failures.
|
|
42
|
+
*/
|
|
43
|
+
fetchContent(url: string, options?: ContentFetchOptions): Promise<ContentFetchResult>;
|
|
34
44
|
/**
|
|
35
45
|
* Cleans up resources used by the engine.
|
|
36
46
|
* For FetchEngine, this is a no-op as it doesn't manage persistent resources.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FetchEngine.d.ts","sourceRoot":"","sources":["../src/FetchEngine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"FetchEngine.d.ts","sourceRoot":"","sources":["../src/FetchEngine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,EACd,kBAAkB,EACnB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAG5C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,UAAU;aAGhC,UAAU,EAAE,MAAM;gBADlC,OAAO,EAAE,MAAM,EACC,UAAU,EAAE,MAAM;CAKrC;AAED;;;;;GAKG;AACH,qBAAa,WAAY,YAAW,OAAO;IACzC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA+B;IAEvD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAGrC;IAEF;;;OAGG;gBACS,OAAO,GAAE,kBAAuB;IAI5C;;;;;;;OAOG;IACG,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,eAAe,CAAC;IA+EpF;;;;;;;;OAQG;IACG,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA8E3F;;;;OAIG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAI9B;;;;OAIG;IACH,UAAU,IAAI,cAAc,EAAE;CAG/B"}
|
package/dist/FetchEngine.js
CHANGED
|
@@ -105,6 +105,79 @@ export class FetchEngine {
|
|
|
105
105
|
throw new FetchError(`Fetch failed: ${message}`, "ERR_FETCH_FAILED", error instanceof Error ? error : undefined);
|
|
106
106
|
}
|
|
107
107
|
}
|
|
108
|
+
/**
|
|
109
|
+
* Fetches raw content from the specified URL (mimics standard fetch API).
|
|
110
|
+
*
|
|
111
|
+
* @param url The URL to fetch.
|
|
112
|
+
* @param options Optional fetch options.
|
|
113
|
+
* @returns A Promise resolving to a ContentFetchResult object.
|
|
114
|
+
* @throws {FetchEngineHttpError} If the HTTP response status is not ok (e.g., 404, 500).
|
|
115
|
+
* @throws {Error} For network errors or other fetch failures.
|
|
116
|
+
*/
|
|
117
|
+
async fetchContent(url, options) {
|
|
118
|
+
let response;
|
|
119
|
+
try {
|
|
120
|
+
const baseHeaders = {
|
|
121
|
+
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36",
|
|
122
|
+
Accept: "*/*", // Accept any content type for raw content fetching
|
|
123
|
+
};
|
|
124
|
+
// Merge headers with the same precedence as fetchHTML
|
|
125
|
+
const constructorHeaders = this.options.headers || {};
|
|
126
|
+
const callSpecificHeaders = options?.headers || {};
|
|
127
|
+
const finalHeaders = {
|
|
128
|
+
...baseHeaders,
|
|
129
|
+
...constructorHeaders,
|
|
130
|
+
...callSpecificHeaders,
|
|
131
|
+
};
|
|
132
|
+
response = await fetch(url, {
|
|
133
|
+
redirect: "follow",
|
|
134
|
+
headers: finalHeaders,
|
|
135
|
+
});
|
|
136
|
+
if (!response.ok) {
|
|
137
|
+
throw new FetchEngineHttpError(`HTTP error! status: ${response.status}`, response.status);
|
|
138
|
+
}
|
|
139
|
+
const contentTypeHeader = response.headers.get("content-type") || "application/octet-stream";
|
|
140
|
+
// Determine if content is text-based or binary
|
|
141
|
+
const isTextBased = contentTypeHeader.startsWith("text/") ||
|
|
142
|
+
contentTypeHeader.includes("json") ||
|
|
143
|
+
contentTypeHeader.includes("xml") ||
|
|
144
|
+
contentTypeHeader.includes("javascript") ||
|
|
145
|
+
contentTypeHeader.includes("html") ||
|
|
146
|
+
contentTypeHeader.includes("css");
|
|
147
|
+
let content;
|
|
148
|
+
if (isTextBased) {
|
|
149
|
+
content = await response.text();
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
const arrayBuffer = await response.arrayBuffer();
|
|
153
|
+
content = Buffer.from(arrayBuffer);
|
|
154
|
+
}
|
|
155
|
+
// Extract title only if content is HTML
|
|
156
|
+
let title = null;
|
|
157
|
+
if (typeof content === "string" && contentTypeHeader.includes("html")) {
|
|
158
|
+
const titleMatch = content.match(/<title[^>]*>([^<]+)<\/title>/i);
|
|
159
|
+
title = titleMatch ? titleMatch[1].trim() : null;
|
|
160
|
+
}
|
|
161
|
+
return {
|
|
162
|
+
content,
|
|
163
|
+
contentType: contentTypeHeader,
|
|
164
|
+
title,
|
|
165
|
+
url: response.url, // Use the final URL after redirects
|
|
166
|
+
isFromCache: false,
|
|
167
|
+
statusCode: response.status,
|
|
168
|
+
error: undefined,
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
catch (error) {
|
|
172
|
+
// Re-throw specific known errors directly
|
|
173
|
+
if (error instanceof FetchEngineHttpError) {
|
|
174
|
+
throw error;
|
|
175
|
+
}
|
|
176
|
+
// Wrap other/unexpected errors
|
|
177
|
+
const message = error instanceof Error ? error.message : "Unknown fetch error";
|
|
178
|
+
throw new FetchError(`Content fetch failed: ${message}`, "ERR_FETCH_FAILED", error instanceof Error ? error : undefined);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
108
181
|
/**
|
|
109
182
|
* Cleans up resources used by the engine.
|
|
110
183
|
* For FetchEngine, this is a no-op as it doesn't manage persistent resources.
|
package/dist/FetchEngine.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FetchEngine.js","sourceRoot":"","sources":["../src/FetchEngine.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"FetchEngine.js","sourceRoot":"","sources":["../src/FetchEngine.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC,CAAC,uBAAuB;AAC1F,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC,CAAC,yBAAyB;AAEnE;;GAEG;AACH,MAAM,OAAO,oBAAqB,SAAQ,UAAU;IAGhC;IAFlB,YACE,OAAe,EACC,UAAkB;QAElC,KAAK,CAAC,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;QAFxC,eAAU,GAAV,UAAU,CAAQ;QAGlC,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;IACrC,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,OAAO,WAAW;IACL,OAAO,CAA+B;IAE/C,MAAM,CAAU,eAAe,GAAiC;QACtE,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,EAAE;KACZ,CAAC;IAEF;;;OAGG;IACH,YAAY,UAA8B,EAAE;QAC1C,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,WAAW,CAAC,eAAe,EAAE,GAAG,OAAO,EAAE,CAAC;IAChE,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,SAAS,CAAC,GAAW,EAAE,OAA4B;QACvD,MAAM,gBAAgB,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC,uCAAuC;QACjG,IAAI,QAAkB,CAAC;QACvB,IAAI,CAAC;YACH,MAAM,WAAW,GAAG;gBAClB,YAAY,EACV,iHAAiH;gBACnH,MAAM,EAAE,kGAAkG;gBAC1G,iBAAiB,EAAE,gBAAgB;aACpC,CAAC;YAEF,6DAA6D;YAC7D,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;YAEtD,sEAAsE;YACtE,0GAA0G;YAC1G,MAAM,mBAAmB,GAAG,OAAO,EAAE,OAAO,IAAI,EAAE,CAAC;YAEnD,MAAM,YAAY,GAAG;gBACnB,GAAG,WAAW;gBACd,GAAG,kBAAkB;gBACrB,GAAG,mBAAmB,EAAE,sFAAsF;aAC/G,CAAC;YAEF,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;gBAC1B,QAAQ,EAAE,QAAQ;gBAClB,OAAO,EAAE,YAAY;aACtB,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,IAAI,oBAAoB,CAAC,uBAAuB,QAAQ,CAAC,MAAM,EAAE,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC5F,CAAC;YAED,MAAM,iBAAiB,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YAC/D,IAAI,CAAC,iBAAiB,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;gBACnE,MAAM,IAAI,UAAU,CAAC,+BAA+B,EAAE,sBAAsB,CAAC,CAAC;YAChF,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnC,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;YAC/D,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YAEvD,IAAI,YAAY,GAAG,IAAI,CAAC;YACxB,IAAI,gBAAgB,GAAwB,MAAM,CAAC;YAEnD,IAAI,gBAAgB,CAAC,QAAQ,EAAE,CAAC;gBAC9B,IAAI,CAAC;oBACH,MAAM,SAAS,GAAG,IAAI,iBAAiB,EAAE,CAAC;oBAC1C,YAAY,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;oBACvC,gBAAgB,GAAG,UAAU,CAAC;gBAChC,CAAC;gBAAC,OAAO,eAAoB,EAAE,CAAC;oBAC9B,OAAO,CAAC,KAAK,CAAC,kCAAkC,GAAG,iBAAiB,EAAE,eAAe,CAAC,CAAC;oBACvF,gDAAgD;gBAClD,CAAC;YACH,CAAC;YAED,OAAO;gBACL,OAAO,EAAE,YAAY;gBACrB,WAAW,EAAE,gBAAgB;gBAC7B,KAAK,EAAE,KAAK;gBACZ,GAAG,EAAE,QAAQ,CAAC,GAAG,EAAE,oCAAoC;gBACvD,WAAW,EAAE,KAAK;gBAClB,UAAU,EAAE,QAAQ,CAAC,MAAM;gBAC3B,KAAK,EAAE,SAAS;aACjB,CAAC;QACJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,0CAA0C;YAC1C,IACE,KAAK,YAAY,oBAAoB;gBACrC,CAAC,KAAK,YAAY,UAAU,IAAI,KAAK,CAAC,IAAI,KAAK,sBAAsB,CAAC,EACtE,CAAC;gBACD,MAAM,KAAK,CAAC;YACd,CAAC;YACD,+BAA+B;YAC/B,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,qBAAqB,CAAC;YAC/E,MAAM,IAAI,UAAU,CAAC,iBAAiB,OAAO,EAAE,EAAE,kBAAkB,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACnH,CAAC;IACH,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,YAAY,CAAC,GAAW,EAAE,OAA6B;QAC3D,IAAI,QAAkB,CAAC;QACvB,IAAI,CAAC;YACH,MAAM,WAAW,GAAG;gBAClB,YAAY,EACV,iHAAiH;gBACnH,MAAM,EAAE,KAAK,EAAE,mDAAmD;aACnE,CAAC;YAEF,sDAAsD;YACtD,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;YACtD,MAAM,mBAAmB,GAAG,OAAO,EAAE,OAAO,IAAI,EAAE,CAAC;YAEnD,MAAM,YAAY,GAAG;gBACnB,GAAG,WAAW;gBACd,GAAG,kBAAkB;gBACrB,GAAG,mBAAmB;aACvB,CAAC;YAEF,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;gBAC1B,QAAQ,EAAE,QAAQ;gBAClB,OAAO,EAAE,YAAY;aACtB,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,IAAI,oBAAoB,CAAC,uBAAuB,QAAQ,CAAC,MAAM,EAAE,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC5F,CAAC;YAED,MAAM,iBAAiB,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,0BAA0B,CAAC;YAE7F,+CAA+C;YAC/C,MAAM,WAAW,GACf,iBAAiB,CAAC,UAAU,CAAC,OAAO,CAAC;gBACrC,iBAAiB,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAClC,iBAAiB,CAAC,QAAQ,CAAC,KAAK,CAAC;gBACjC,iBAAiB,CAAC,QAAQ,CAAC,YAAY,CAAC;gBACxC,iBAAiB,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAClC,iBAAiB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAEpC,IAAI,OAAwB,CAAC;YAC7B,IAAI,WAAW,EAAE,CAAC;gBAChB,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YAClC,CAAC;iBAAM,CAAC;gBACN,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC;gBACjD,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACrC,CAAC;YAED,wCAAwC;YACxC,IAAI,KAAK,GAAkB,IAAI,CAAC;YAChC,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,iBAAiB,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBACtE,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;gBAClE,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YACnD,CAAC;YAED,OAAO;gBACL,OAAO;gBACP,WAAW,EAAE,iBAAiB;gBAC9B,KAAK;gBACL,GAAG,EAAE,QAAQ,CAAC,GAAG,EAAE,oCAAoC;gBACvD,WAAW,EAAE,KAAK;gBAClB,UAAU,EAAE,QAAQ,CAAC,MAAM;gBAC3B,KAAK,EAAE,SAAS;aACjB,CAAC;QACJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,0CAA0C;YAC1C,IAAI,KAAK,YAAY,oBAAoB,EAAE,CAAC;gBAC1C,MAAM,KAAK,CAAC;YACd,CAAC;YACD,+BAA+B;YAC/B,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,qBAAqB,CAAC;YAC/E,MAAM,IAAI,UAAU,CAClB,yBAAyB,OAAO,EAAE,EAClC,kBAAkB,EAClB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAC3C,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,OAAO;QACX,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAED;;;;OAIG;IACH,UAAU;QACR,OAAO,EAAE,CAAC;IACZ,CAAC"}
|
package/dist/HybridEngine.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { IEngine } from "./IEngine.js";
|
|
2
|
-
import type { HTMLFetchResult, PlaywrightEngineConfig, FetchOptions, BrowserMetrics } from "./types.js";
|
|
2
|
+
import type { HTMLFetchResult, ContentFetchResult, ContentFetchOptions, PlaywrightEngineConfig, FetchOptions, BrowserMetrics } from "./types.js";
|
|
3
3
|
/**
|
|
4
4
|
* HybridEngine - Tries FetchEngine first, falls back to PlaywrightEngine on failure.
|
|
5
5
|
*/
|
|
@@ -11,6 +11,17 @@ export declare class HybridEngine implements IEngine {
|
|
|
11
11
|
constructor(config?: PlaywrightEngineConfig);
|
|
12
12
|
private _isSpaShell;
|
|
13
13
|
fetchHTML(url: string, options?: FetchOptions): Promise<HTMLFetchResult>;
|
|
14
|
+
/**
|
|
15
|
+
* Fetches raw content from the specified URL using the hybrid approach.
|
|
16
|
+
* Tries FetchEngine first, falls back to PlaywrightEngine on failure.
|
|
17
|
+
* Mimics standard fetch API behavior.
|
|
18
|
+
*
|
|
19
|
+
* @param url The URL to fetch content from.
|
|
20
|
+
* @param options Optional fetch options.
|
|
21
|
+
* @returns A Promise resolving to a ContentFetchResult object.
|
|
22
|
+
* @throws {FetchError} If both engines fail to fetch the content.
|
|
23
|
+
*/
|
|
24
|
+
fetchContent(url: string, options?: ContentFetchOptions): Promise<ContentFetchResult>;
|
|
14
25
|
/**
|
|
15
26
|
* Delegates getMetrics to the PlaywrightEngine.
|
|
16
27
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HybridEngine.d.ts","sourceRoot":"","sources":["../src/HybridEngine.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"HybridEngine.d.ts","sourceRoot":"","sources":["../src/HybridEngine.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EACV,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,sBAAsB,EACtB,YAAY,EACZ,cAAc,EACf,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,qBAAa,YAAa,YAAW,OAAO;IAC1C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAmB;IACpD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAyB;IAChD,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAsB;gBAEjD,MAAM,GAAE,sBAA2B;IAU/C,OAAO,CAAC,WAAW;IAkBb,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,eAAe,CAAC;IAiFlF;;;;;;;;;OASG;IACG,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAqC/F;;OAEG;IACH,UAAU,IAAI,cAAc,EAAE;IAI9B;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAM/B"}
|
package/dist/HybridEngine.js
CHANGED
|
@@ -100,6 +100,46 @@ export class HybridEngine {
|
|
|
100
100
|
}
|
|
101
101
|
}
|
|
102
102
|
}
|
|
103
|
+
/**
|
|
104
|
+
* Fetches raw content from the specified URL using the hybrid approach.
|
|
105
|
+
* Tries FetchEngine first, falls back to PlaywrightEngine on failure.
|
|
106
|
+
* Mimics standard fetch API behavior.
|
|
107
|
+
*
|
|
108
|
+
* @param url The URL to fetch content from.
|
|
109
|
+
* @param options Optional fetch options.
|
|
110
|
+
* @returns A Promise resolving to a ContentFetchResult object.
|
|
111
|
+
* @throws {FetchError} If both engines fail to fetch the content.
|
|
112
|
+
*/
|
|
113
|
+
async fetchContent(url, options = {}) {
|
|
114
|
+
// Check playwrightOnlyPatterns first
|
|
115
|
+
for (const pattern of this.playwrightOnlyPatterns) {
|
|
116
|
+
if (typeof pattern === "string" && url.includes(pattern)) {
|
|
117
|
+
console.warn(`HybridEngine: URL ${url} matches string pattern "${pattern}". Using PlaywrightEngine directly for content fetch.`);
|
|
118
|
+
return this.playwrightEngine.fetchContent(url, options);
|
|
119
|
+
}
|
|
120
|
+
else if (pattern instanceof RegExp && pattern.test(url)) {
|
|
121
|
+
console.warn(`HybridEngine: URL ${url} matches regex pattern "${pattern.toString()}". Using PlaywrightEngine directly for content fetch.`);
|
|
122
|
+
return this.playwrightEngine.fetchContent(url, options);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
try {
|
|
126
|
+
// Try FetchEngine first
|
|
127
|
+
const fetchResult = await this.fetchEngine.fetchContent(url, options);
|
|
128
|
+
return fetchResult;
|
|
129
|
+
}
|
|
130
|
+
catch (fetchError) {
|
|
131
|
+
console.warn(`HybridEngine: FetchEngine failed for content fetch ${url}: ${fetchError.message}. Falling back to PlaywrightEngine.`);
|
|
132
|
+
try {
|
|
133
|
+
// Fallback to PlaywrightEngine
|
|
134
|
+
const playwrightResult = await this.playwrightEngine.fetchContent(url, options);
|
|
135
|
+
return playwrightResult;
|
|
136
|
+
}
|
|
137
|
+
catch (playwrightError) {
|
|
138
|
+
console.error(`HybridEngine: PlaywrightEngine fallback also failed for content fetch ${url}: ${playwrightError.message}`);
|
|
139
|
+
throw playwrightError; // Throw the Playwright error as it's the last one encountered
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
103
143
|
/**
|
|
104
144
|
* Delegates getMetrics to the PlaywrightEngine.
|
|
105
145
|
*/
|
package/dist/HybridEngine.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HybridEngine.js","sourceRoot":"","sources":["../src/HybridEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"HybridEngine.js","sourceRoot":"","sources":["../src/HybridEngine.ts"],"names":[],"mappings":"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"}
|
package/dist/IEngine.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { HTMLFetchResult, BrowserMetrics } from "./types.js";
|
|
1
|
+
import type { HTMLFetchResult, ContentFetchResult, ContentFetchOptions, BrowserMetrics } from "./types.js";
|
|
2
2
|
/**
|
|
3
3
|
* Interface for browser engines that can fetch HTML content from URLs
|
|
4
4
|
*/
|
|
@@ -9,6 +9,13 @@ export interface IEngine {
|
|
|
9
9
|
* @returns A promise that resolves to an HTMLFetchResult
|
|
10
10
|
*/
|
|
11
11
|
fetchHTML(url: string): Promise<HTMLFetchResult>;
|
|
12
|
+
/**
|
|
13
|
+
* Fetches raw content from a URL (mimics standard fetch API)
|
|
14
|
+
* @param url The URL to fetch
|
|
15
|
+
* @param options Optional fetch options
|
|
16
|
+
* @returns A promise that resolves to a ContentFetchResult
|
|
17
|
+
*/
|
|
18
|
+
fetchContent(url: string, options?: ContentFetchOptions): Promise<ContentFetchResult>;
|
|
12
19
|
/**
|
|
13
20
|
* Cleans up resources used by the engine
|
|
14
21
|
*/
|
package/dist/IEngine.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IEngine.d.ts","sourceRoot":"","sources":["../src/IEngine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"IEngine.d.ts","sourceRoot":"","sources":["../src/IEngine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE3G;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB;;;;OAIG;IACH,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAEjD;;;;;OAKG;IACH,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAEtF;;OAEG;IACH,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzB;;;OAGG;IACH,UAAU,IAAI,cAAc,EAAE,CAAC;CAChC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { HTMLFetchResult, BrowserMetrics, PlaywrightEngineConfig, FetchOptions } from "./types.js";
|
|
1
|
+
import type { HTMLFetchResult, ContentFetchResult, ContentFetchOptions, BrowserMetrics, PlaywrightEngineConfig, FetchOptions } from "./types.js";
|
|
2
2
|
import type { IEngine } from "./IEngine.js";
|
|
3
3
|
/**
|
|
4
4
|
* PlaywrightEngine - Fetches HTML using a managed pool of headless Playwright browser instances.
|
|
@@ -115,5 +115,35 @@ export declare class PlaywrightEngine implements IEngine {
|
|
|
115
115
|
*/
|
|
116
116
|
getMetrics(): BrowserMetrics[];
|
|
117
117
|
private shouldUseHeadedMode;
|
|
118
|
+
/**
|
|
119
|
+
* Fetches raw content from the specified URL using Playwright with HTTP fallback.
|
|
120
|
+
* Mimics standard fetch API behavior.
|
|
121
|
+
*
|
|
122
|
+
* @param url The URL to fetch content from.
|
|
123
|
+
* @param options Optional fetch options.
|
|
124
|
+
* @returns A Promise resolving to a ContentFetchResult object.
|
|
125
|
+
* @throws {FetchError} If the fetch operation fails after all retries.
|
|
126
|
+
*/
|
|
127
|
+
fetchContent(url: string, options?: ContentFetchOptions): Promise<ContentFetchResult>;
|
|
128
|
+
/**
|
|
129
|
+
* Check cache for content fetch results.
|
|
130
|
+
*/
|
|
131
|
+
private checkContentCache;
|
|
132
|
+
/**
|
|
133
|
+
* Add content fetch result to cache.
|
|
134
|
+
*/
|
|
135
|
+
private addContentToCache;
|
|
136
|
+
/**
|
|
137
|
+
* Recursive fetch implementation with retry logic for content fetching.
|
|
138
|
+
*/
|
|
139
|
+
private _fetchContentRecursive;
|
|
140
|
+
/**
|
|
141
|
+
* HTTP fallback for content fetching.
|
|
142
|
+
*/
|
|
143
|
+
private _attemptContentHttpFallback;
|
|
144
|
+
/**
|
|
145
|
+
* Fetch content using Playwright browser.
|
|
146
|
+
*/
|
|
147
|
+
private fetchContentWithPlaywright;
|
|
118
148
|
}
|
|
119
149
|
//# sourceMappingURL=PlaywrightEngine.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlaywrightEngine.d.ts","sourceRoot":"","sources":["../src/PlaywrightEngine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"PlaywrightEngine.d.ts","sourceRoot":"","sources":["../src/PlaywrightEngine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,EACd,sBAAsB,EACtB,YAAY,EACb,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAyC5C;;;;;;GAMG;AACH,qBAAa,gBAAiB,YAAW,OAAO;IAC9C,OAAO,CAAC,WAAW,CAAsC;IACzD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAsC;IAC5D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiC;IAGxD,OAAO,CAAC,uBAAuB,CAAkB;IACjD,OAAO,CAAC,iBAAiB,CAAkB;IAC3C,OAAO,CAAC,mBAAmB,CAA0B;IAGrD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAuBpC;IAEF;;;;;OAKG;gBACS,MAAM,GAAE,sBAA2B;IAM/C;;OAEG;YACW,qBAAqB;IAwCnC;;;OAGG;YACW,yBAAyB;IAiEvC,OAAO,CAAC,UAAU;IAalB;;OAEG;YACW,WAAW;IAazB;;OAEG;YACW,qBAAqB;IAwCnC;;OAEG;IACH,OAAO,CAAC,UAAU;IAUlB;;;;;;;;;OASG;IACG,SAAS,CACb,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,YAAY,GAAG;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAA;KAAO,GACrE,OAAO,CAAC,eAAe,CAAC;IAoB3B;;;;;;;OAOG;IACH,OAAO,CAAC,iBAAiB;IAoDzB;;;;;;;OAOG;YACW,oBAAoB;IAkClC;;;;;;;;OAQG;YACW,6BAA6B;IAmC3C;;;;;;;OAOG;YACW,eAAe;IAkH7B;;;OAGG;YACW,mBAAmB;YA2KnB,kBAAkB;IAyChC;;;;;OAKG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAoB9B;;;OAGG;IACH,UAAU,IAAI,cAAc,EAAE;IAQ9B,OAAO,CAAC,mBAAmB;IAU3B;;;;;;;;OAQG;IACG,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA0C/F;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAkBzB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAoBzB;;OAEG;YACW,sBAAsB;IAwDpC;;OAEG;YACW,2BAA2B;IAuDzC;;OAEG;YACW,0BAA0B;CAmFzC"}
|
package/dist/PlaywrightEngine.js
CHANGED
|
@@ -678,5 +678,238 @@ export class PlaywrightEngine {
|
|
|
678
678
|
return false; // Invalid URL
|
|
679
679
|
}
|
|
680
680
|
}
|
|
681
|
+
/**
|
|
682
|
+
* Fetches raw content from the specified URL using Playwright with HTTP fallback.
|
|
683
|
+
* Mimics standard fetch API behavior.
|
|
684
|
+
*
|
|
685
|
+
* @param url The URL to fetch content from.
|
|
686
|
+
* @param options Optional fetch options.
|
|
687
|
+
* @returns A Promise resolving to a ContentFetchResult object.
|
|
688
|
+
* @throws {FetchError} If the fetch operation fails after all retries.
|
|
689
|
+
*/
|
|
690
|
+
async fetchContent(url, options = {}) {
|
|
691
|
+
// Build current config by merging defaults with per-request options
|
|
692
|
+
const currentConfig = {
|
|
693
|
+
// From engine defaults
|
|
694
|
+
retryDelay: this.config.retryDelay,
|
|
695
|
+
maxRetries: this.config.maxRetries,
|
|
696
|
+
useHttpFallback: this.config.useHttpFallback,
|
|
697
|
+
useHeadedModeFallback: this.config.useHeadedModeFallback,
|
|
698
|
+
useHeadedMode: this.config.useHeadedMode,
|
|
699
|
+
cacheTTL: this.config.cacheTTL,
|
|
700
|
+
// From per-request options
|
|
701
|
+
fastMode: options.fastMode !== undefined ? options.fastMode : this.config.defaultFastMode,
|
|
702
|
+
headers: options.headers || this.config.headers || {},
|
|
703
|
+
};
|
|
704
|
+
// Check cache first
|
|
705
|
+
const cacheKey = `content_${url}`;
|
|
706
|
+
const cachedResult = this.checkContentCache(cacheKey);
|
|
707
|
+
if (cachedResult) {
|
|
708
|
+
return cachedResult;
|
|
709
|
+
}
|
|
710
|
+
// Start recursive fetch with retry logic
|
|
711
|
+
const result = await this._fetchContentRecursive(url, currentConfig, 0);
|
|
712
|
+
// Cache successful result
|
|
713
|
+
if (result && !result.error) {
|
|
714
|
+
this.addContentToCache(cacheKey, result);
|
|
715
|
+
}
|
|
716
|
+
return result;
|
|
717
|
+
}
|
|
718
|
+
/**
|
|
719
|
+
* Check cache for content fetch results.
|
|
720
|
+
*/
|
|
721
|
+
checkContentCache(cacheKey) {
|
|
722
|
+
const cacheEntry = this.cache.get(cacheKey);
|
|
723
|
+
if (cacheEntry && Date.now() - cacheEntry.timestamp < this.config.cacheTTL) {
|
|
724
|
+
// Need to convert HTMLFetchResult to ContentFetchResult if cached
|
|
725
|
+
const htmlResult = cacheEntry.result;
|
|
726
|
+
return {
|
|
727
|
+
content: Buffer.isBuffer(htmlResult.content) ? htmlResult.content : htmlResult.content,
|
|
728
|
+
contentType: htmlResult.contentType === "html" ? "text/html" : htmlResult.contentType,
|
|
729
|
+
title: htmlResult.title,
|
|
730
|
+
url: htmlResult.url,
|
|
731
|
+
isFromCache: true,
|
|
732
|
+
statusCode: htmlResult.statusCode,
|
|
733
|
+
error: htmlResult.error,
|
|
734
|
+
};
|
|
735
|
+
}
|
|
736
|
+
return null;
|
|
737
|
+
}
|
|
738
|
+
/**
|
|
739
|
+
* Add content fetch result to cache.
|
|
740
|
+
*/
|
|
741
|
+
addContentToCache(cacheKey, result) {
|
|
742
|
+
if (this.config.cacheTTL <= 0)
|
|
743
|
+
return; // Caching disabled
|
|
744
|
+
// Convert to HTMLFetchResult format for storage
|
|
745
|
+
const htmlResult = {
|
|
746
|
+
content: typeof result.content === "string" ? result.content : result.content.toString(),
|
|
747
|
+
contentType: result.contentType.includes("html") ? "html" : "html", // Store as html for compatibility
|
|
748
|
+
title: result.title,
|
|
749
|
+
url: result.url,
|
|
750
|
+
isFromCache: result.isFromCache,
|
|
751
|
+
statusCode: result.statusCode,
|
|
752
|
+
error: result.error,
|
|
753
|
+
};
|
|
754
|
+
this.cache.set(cacheKey, {
|
|
755
|
+
result: htmlResult,
|
|
756
|
+
timestamp: Date.now(),
|
|
757
|
+
});
|
|
758
|
+
}
|
|
759
|
+
/**
|
|
760
|
+
* Recursive fetch implementation with retry logic for content fetching.
|
|
761
|
+
*/
|
|
762
|
+
async _fetchContentRecursive(url, currentConfig, retryAttempt) {
|
|
763
|
+
try {
|
|
764
|
+
// Try HTTP fallback first if enabled
|
|
765
|
+
if (currentConfig.useHttpFallback) {
|
|
766
|
+
try {
|
|
767
|
+
const httpResult = await this._attemptContentHttpFallback(url, currentConfig);
|
|
768
|
+
if (httpResult) {
|
|
769
|
+
return httpResult;
|
|
770
|
+
}
|
|
771
|
+
}
|
|
772
|
+
catch (httpError) {
|
|
773
|
+
// Log but don't throw - will try Playwright next
|
|
774
|
+
console.warn(`HTTP fallback failed for ${url}, trying Playwright:`, httpError);
|
|
775
|
+
}
|
|
776
|
+
}
|
|
777
|
+
// Initialize browser pool
|
|
778
|
+
const useHeadedMode = currentConfig.useHeadedMode || this.shouldUseHeadedMode(url);
|
|
779
|
+
await this._ensureBrowserPoolInitialized(useHeadedMode, currentConfig);
|
|
780
|
+
if (!this.browserPool) {
|
|
781
|
+
throw new FetchError("Browser pool initialization failed", "ERR_BROWSER_POOL_EXHAUSTED");
|
|
782
|
+
}
|
|
783
|
+
// Use Playwright to fetch content
|
|
784
|
+
return await this.fetchContentWithPlaywright(url, this.browserPool, currentConfig.fastMode, currentConfig.headers);
|
|
785
|
+
}
|
|
786
|
+
catch (error) {
|
|
787
|
+
// Handle retry logic
|
|
788
|
+
if (retryAttempt < currentConfig.maxRetries) {
|
|
789
|
+
console.warn(`Content fetch attempt ${retryAttempt + 1} failed for ${url}, retrying...`);
|
|
790
|
+
await delay(currentConfig.retryDelay);
|
|
791
|
+
return this._fetchContentRecursive(url, currentConfig, retryAttempt + 1);
|
|
792
|
+
}
|
|
793
|
+
// All retries exhausted
|
|
794
|
+
throw error;
|
|
795
|
+
}
|
|
796
|
+
}
|
|
797
|
+
/**
|
|
798
|
+
* HTTP fallback for content fetching.
|
|
799
|
+
*/
|
|
800
|
+
async _attemptContentHttpFallback(url, currentConfig) {
|
|
801
|
+
if (!currentConfig.useHttpFallback)
|
|
802
|
+
return null;
|
|
803
|
+
try {
|
|
804
|
+
const response = await axios.get(url, {
|
|
805
|
+
headers: { ...COMMON_HEADERS, ...currentConfig.headers },
|
|
806
|
+
maxRedirects: MAX_REDIRECTS,
|
|
807
|
+
timeout: DEFAULT_HTTP_TIMEOUT,
|
|
808
|
+
responseType: "arraybuffer", // Get raw binary data
|
|
809
|
+
decompress: true,
|
|
810
|
+
});
|
|
811
|
+
const contentType = response.headers["content-type"] || "application/octet-stream";
|
|
812
|
+
// Determine if content is text-based
|
|
813
|
+
const isTextBased = contentType.startsWith("text/") ||
|
|
814
|
+
contentType.includes("json") ||
|
|
815
|
+
contentType.includes("xml") ||
|
|
816
|
+
contentType.includes("javascript") ||
|
|
817
|
+
contentType.includes("html") ||
|
|
818
|
+
contentType.includes("css");
|
|
819
|
+
let content;
|
|
820
|
+
if (isTextBased) {
|
|
821
|
+
content = response.data.toString("utf-8");
|
|
822
|
+
}
|
|
823
|
+
else {
|
|
824
|
+
content = Buffer.from(response.data);
|
|
825
|
+
}
|
|
826
|
+
// Extract title only if content is HTML
|
|
827
|
+
let title = null;
|
|
828
|
+
if (typeof content === "string" && contentType.includes("html")) {
|
|
829
|
+
const titleMatch = content.match(REGEX_TITLE_TAG);
|
|
830
|
+
title = titleMatch ? titleMatch[1].trim() : null;
|
|
831
|
+
}
|
|
832
|
+
return {
|
|
833
|
+
content,
|
|
834
|
+
contentType,
|
|
835
|
+
title,
|
|
836
|
+
url: response.request?.res?.responseUrl || response.config.url || url,
|
|
837
|
+
isFromCache: false,
|
|
838
|
+
statusCode: response.status,
|
|
839
|
+
error: undefined,
|
|
840
|
+
};
|
|
841
|
+
}
|
|
842
|
+
catch (error) {
|
|
843
|
+
// Let caller handle fallback to Playwright
|
|
844
|
+
throw new FetchError(`HTTP content fetch failed: ${error.message}`, "ERR_HTTP_FALLBACK", error);
|
|
845
|
+
}
|
|
846
|
+
}
|
|
847
|
+
/**
|
|
848
|
+
* Fetch content using Playwright browser.
|
|
849
|
+
*/
|
|
850
|
+
async fetchContentWithPlaywright(url, pool, fastMode, headers) {
|
|
851
|
+
let page = null;
|
|
852
|
+
try {
|
|
853
|
+
page = await pool.acquirePage();
|
|
854
|
+
// Set headers if provided
|
|
855
|
+
if (headers && Object.keys(headers).length > 0) {
|
|
856
|
+
await page.setExtraHTTPHeaders(headers);
|
|
857
|
+
}
|
|
858
|
+
// Apply resource blocking for fast mode
|
|
859
|
+
if (fastMode) {
|
|
860
|
+
await this.applyBlockingRules(page, fastMode);
|
|
861
|
+
}
|
|
862
|
+
// Navigate to the page
|
|
863
|
+
const response = await page.goto(url, {
|
|
864
|
+
waitUntil: "domcontentloaded",
|
|
865
|
+
timeout: 30000,
|
|
866
|
+
});
|
|
867
|
+
if (!response) {
|
|
868
|
+
throw new FetchError(`Failed to get response for ${url}`, "ERR_NAVIGATION");
|
|
869
|
+
}
|
|
870
|
+
if (!response.ok()) {
|
|
871
|
+
throw new FetchError(`HTTP error! status: ${response.status()}`, "ERR_HTTP_ERROR", undefined, response.status());
|
|
872
|
+
}
|
|
873
|
+
const contentType = response.headers()["content-type"] || "application/octet-stream";
|
|
874
|
+
const title = await page.title();
|
|
875
|
+
const finalUrl = page.url();
|
|
876
|
+
const status = response.status();
|
|
877
|
+
// Get raw content based on content type
|
|
878
|
+
let content;
|
|
879
|
+
const isTextBased = contentType.startsWith("text/") ||
|
|
880
|
+
contentType.includes("json") ||
|
|
881
|
+
contentType.includes("xml") ||
|
|
882
|
+
contentType.includes("javascript") ||
|
|
883
|
+
contentType.includes("html") ||
|
|
884
|
+
contentType.includes("css");
|
|
885
|
+
if (isTextBased) {
|
|
886
|
+
content = await response.text();
|
|
887
|
+
}
|
|
888
|
+
else {
|
|
889
|
+
const bodyBuffer = await response.body();
|
|
890
|
+
content = Buffer.from(bodyBuffer);
|
|
891
|
+
}
|
|
892
|
+
// Extract title only if content is HTML
|
|
893
|
+
let extractedTitle = title || null;
|
|
894
|
+
if (typeof content === "string" && contentType.includes("html") && !extractedTitle) {
|
|
895
|
+
const titleMatch = content.match(/<title[^>]*>([^<]+)<\/title>/i);
|
|
896
|
+
extractedTitle = titleMatch ? titleMatch[1].trim() : null;
|
|
897
|
+
}
|
|
898
|
+
return {
|
|
899
|
+
content,
|
|
900
|
+
contentType,
|
|
901
|
+
title: extractedTitle,
|
|
902
|
+
url: finalUrl,
|
|
903
|
+
isFromCache: false,
|
|
904
|
+
statusCode: status,
|
|
905
|
+
error: undefined,
|
|
906
|
+
};
|
|
907
|
+
}
|
|
908
|
+
finally {
|
|
909
|
+
if (page) {
|
|
910
|
+
await pool.releasePage(page);
|
|
911
|
+
}
|
|
912
|
+
}
|
|
913
|
+
}
|
|
681
914
|
}
|
|
682
915
|
//# sourceMappingURL=PlaywrightEngine.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlaywrightEngine.js","sourceRoot":"","sources":["../src/PlaywrightEngine.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,MAAM,MAAM,SAAS,CAAC;AAE7B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC,CAAC,oBAAoB;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC,CAAC,uBAAuB;AAC1F,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,qBAAqB,EACrB,cAAc,EACd,aAAa,EACb,eAAe,EACf,gCAAgC,EAChC,wBAAwB,EACxB,6BAA6B,EAC7B,6BAA6B,EAC7B,sCAAsC,EACtC,gCAAgC,EAChC,uCAAuC,GACxC,MAAM,gBAAgB,CAAC,CAAC,iBAAiB;AAE1C,SAAS,KAAK,CAAC,IAAY;IACzB,oBAAoB;IACpB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;AAC7D,CAAC;AAeD;;;;;;GAMG;AACH,MAAM,OAAO,gBAAgB;IACnB,WAAW,GAAiC,IAAI,CAAC;IACxC,KAAK,CAAS;IACd,KAAK,GAA4B,IAAI,GAAG,EAAE,CAAC;IAC3C,MAAM,CAAiC;IAExD,+BAA+B;IACvB,uBAAuB,GAAY,KAAK,CAAC;IACzC,iBAAiB,GAAY,KAAK,CAAC,CAAC,2BAA2B;IAC/D,mBAAmB,GAAgB,IAAI,GAAG,EAAE,CAAC,CAAC,wCAAwC;IAE9F,iEAAiE;IACzD,MAAM,CAAU,cAAc,GAAmC;QACvE,OAAO,EAAE,EAAE,EAAE,4BAA4B;QACzC,eAAe,EAAE,CAAC;QAClB,UAAU,EAAE,CAAC;QACb,UAAU,EAAE,IAAI;QAChB,QAAQ,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI;QACxB,eAAe,EAAE,IAAI;QACrB,qBAAqB,EAAE,KAAK;QAC5B,eAAe,EAAE,IAAI;QACrB,qBAAqB,EAAE,IAAI;QAC3B,WAAW,EAAE,CAAC;QACd,kBAAkB,EAAE,CAAC;QACrB,aAAa,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI;QAC7B,mBAAmB,EAAE,EAAE,GAAG,IAAI;QAC9B,kBAAkB,EAAE,EAAE;QACtB,wBAAwB,EAAE,EAAE;QAC5B,KAAK,EAAE,SAAS;QAChB,aAAa,EAAE,KAAK;QACpB,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE,KAAK;QACd,gBAAgB,EAAE,CAAC;QACnB,sBAAsB,EAAE,EAAE;QAC1B,uBAAuB,EAAE,SAAS;KACnC,CAAC;IAEF;;;;;OAKG;IACH,YAAY,SAAiC,EAAE;QAC7C,sCAAsC;QACtC,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,gBAAgB,CAAC,cAAc,EAAE,GAAG,MAAM,EAAE,CAAC;QAChE,IAAI,CAAC,KAAK,GAAG,IAAI,MAAM,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC;IACxE,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,qBAAqB,CAAC,gBAAyB,KAAK;QAChE,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,iBAAiB,KAAK,aAAa,EAAE,CAAC;YACjE,OAAO;QACT,CAAC;QACD,IAAI,IAAI,CAAC,uBAAuB,EAAE,CAAC;YACjC,OAAO,IAAI,CAAC,uBAAuB,EAAE,CAAC;gBACpC,MAAM,KAAK,CAAC,cAAc,CAAC,CAAC;YAC9B,CAAC;YACD,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,iBAAiB,KAAK,aAAa,EAAE,CAAC;gBACjE,OAAO;YACT,CAAC;QACH,CAAC;QACD,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;QACpC,IAAI,CAAC;YACH,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,iBAAiB,KAAK,aAAa,EAAE,CAAC;gBACjE,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;gBACjC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YAC1B,CAAC;YACD,IAAI,CAAC,iBAAiB,GAAG,aAAa,CAAC;YACvC,IAAI,CAAC,WAAW,GAAG,IAAI,qBAAqB,CAAC;gBAC3C,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW;gBACpC,kBAAkB,EAAE,IAAI,CAAC,MAAM,CAAC,kBAAkB;gBAClD,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa;gBACxC,mBAAmB,EAAE,IAAI,CAAC,MAAM,CAAC,mBAAmB;gBACpD,aAAa,EAAE,aAAa;gBAC5B,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,kBAAkB;gBAC9C,oBAAoB,EAAE,IAAI,CAAC,MAAM,CAAC,wBAAwB;gBAC1D,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;gBACxB,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,uBAAuB;aACnD,CAAC,CAAC;YACH,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;QACtC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YACxB,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;YAC/B,MAAM,KAAK,CAAC;QACd,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC;QACvC,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,yBAAyB,CAAC,GAAW,EAAE,UAAkC,EAAE;QACvF,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE;gBACpC,OAAO,EAAE,EAAE,GAAG,cAAc,EAAE,GAAG,OAAO,EAAE,EAAE,6CAA6C;gBACzF,YAAY,EAAE,aAAa;gBAC3B,OAAO,EAAE,oBAAoB;gBAC7B,YAAY,EAAE,MAAM;gBACpB,oCAAoC;gBACpC,UAAU,EAAE,IAAI;aACjB,CAAC,CAAC;YAEH,uEAAuE;YACvE,2DAA2D;YAC3D,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;YACxD,IAAI,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACnD,kEAAkE;YAClE,IAAI,CAAC,KAAK,IAAI,gCAAgC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBACnE,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,wBAAwB,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YACrE,CAAC;YAED,kCAAkC;YAClC,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YAC9C,MAAM,gBAAgB,GAAG,6BAA6B,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAEvE,IAAI,gBAAgB,EAAE,CAAC;gBACrB,yDAAyD;gBACzD,MAAM,IAAI,UAAU,CAAC,2CAA2C,EAAE,oBAAoB,CAAC,CAAC;YAC1F,CAAC;YAED,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC;YACnC,IAAI,YAAY,GAAG,YAAY,CAAC;YAChC,IAAI,gBAAgB,GAAwB,MAAM,CAAC;YAEnD,sEAAsE;YACtE,8EAA8E;YAC9E,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACzB,IAAI,CAAC;oBACH,MAAM,SAAS,GAAG,IAAI,iBAAiB,EAAE,CAAC;oBAC1C,YAAY,GAAG,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;oBAC/C,gBAAgB,GAAG,UAAU,CAAC;gBAChC,CAAC;gBAAC,OAAO,eAAe,EAAE,CAAC;oBACzB,OAAO,CAAC,KAAK,CAAC,kCAAkC,GAAG,mBAAmB,EAAE,eAAe,CAAC,CAAC;oBACzF,gDAAgD;gBAClD,CAAC;YACH,CAAC;YAED,OAAO;gBACL,OAAO,EAAE,YAAY;gBACrB,WAAW,EAAE,gBAAgB;gBAC7B,KAAK,EAAE,KAAK,EAAE,wCAAwC;gBACtD,GAAG,EAAE,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE,WAAW,IAAI,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG;gBACrE,WAAW,EAAE,KAAK;gBAClB,UAAU,EAAE,QAAQ,CAAC,MAAM;gBAC3B,KAAK,EAAE,SAAS;aACjB,CAAC;QACJ,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,IAAI,CAAC,CAAC,KAAK,YAAY,UAAU,CAAC,EAAE,CAAC;gBACnC,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACvE,MAAM,KAAK,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;gBACzD,MAAM,IAAI,UAAU,CAAC,yBAAyB,OAAO,EAAE,EAAE,0BAA0B,EAAE,KAAK,CAAC,CAAC;YAC9F,CAAC;YACD,MAAM,KAAK,CAAC,CAAC,8CAA8C;QAC7D,CAAC;IACH,CAAC;IAEO,UAAU,CAAC,GAAW;QAC5B,sEAAsE;QACtE,+FAA+F;QAC/F,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,MAAM,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACnE,OAAO,MAAM,CAAC,MAAM,CAAC;QACvB,CAAC;QACD,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,WAAW,CAAC,IAAiB;QACzC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE;YAAE,OAAO,KAAK,CAAC;QAC3C,IAAI,CAAC;YACH,0BAA0B;YAC1B,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE;gBAAE,OAAO,KAAK,CAAC;YAC3D,qEAAqE;YACrE,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,qBAAqB,EAAE,CAAC,CAAC;YACjE,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,qBAAqB,CAAC,IAAU;QAC5C,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAAE,OAAO;QAE5C,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YACrC,IAAI,CAAC,QAAQ;gBAAE,OAAO;YAEtB,yBAAyB;YACzB,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;YAC3G,MAAM,KAAK,CAAC,6BAA6B,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,sCAAsC,CAAC,CAAC;YACpG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CACnB,IAAI,CAAC,MAAM,EAAE,GAAG,QAAQ,CAAC,KAAK,EAC9B,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,EAC3D,EAAE,KAAK,EAAE,EAAE,EAAE,CACd,CAAC;YACF,MAAM,KAAK,CAAC,gCAAgC,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,uCAAuC,CAAC,CAAC;YAExG,gBAAgB;YAChB,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;YAC7F,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,YAAY,CAAC,CAAC;YAC1E,MAAM,KAAK,CAAC,gCAAgC,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,uCAAuC,CAAC,CAAC;YAExG,0CAA0C;YAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC3B,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;oBAAE,MAAM;gBAC3C,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,QAAQ,CAAC,MAAM,EAAE;oBACrF,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;iBACzC,CAAC,CAAC;gBACH,MAAM,KAAK,CAAC,6BAA6B,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,sCAAsC,GAAG,CAAC,CAAC,CAAC,CAAC;YAChH,CAAC;QACH,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,8FAA8F;YAC9F,OAAO,CAAC,KAAK,CACX,8CAA8C,IAAI,CAAC,GAAG,EAAE,KAAK,OAAO,EAAE,EACtE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CACvC,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACK,UAAU,CAAC,GAAW,EAAE,MAAuB;QACrD,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC;YAAE,OAAO,CAAC,yCAAyC;QAEhF,MAAM,KAAK,GAAe;YACxB,MAAM,EAAE,EAAE,GAAG,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,iBAAiB;YAC3D,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,SAAS,CACb,GAAW,EACX,UAAoE,EAAE,CAAC,4BAA4B;;QAEnG,MAAM,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;QACrD,MAAM,sBAAsB,GAAG,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;QACrD,MAAM,gBAAgB,GAAG,EAAE,GAAG,kBAAkB,EAAE,GAAG,sBAAsB,EAAE,CAAC;QAE9E,MAAM,WAAW,GAAG;YAClB,GAAG,IAAI,CAAC,MAAM,EAAE,mEAAmE;YACnF,QAAQ,EAAE,OAAO,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ;YAClF,QAAQ,EAAE,OAAO,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ;YACzF,OAAO,EAAE,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO;YAC9E,OAAO,EAAE,gBAAgB,EAAE,qEAAqE;YAChG,4EAA4E;YAC5E,sEAAsE;YACtE,oFAAoF;SACrF,CAAC;QACF,8DAA8D;QAC9D,gHAAgH;QAChH,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,WAAkB,EAAE,CAAC,CAAC,CAAC,CAAC,gDAAgD;IAC3G,CAAC;IAED;;;;;;;OAOG;IACK,iBAAiB,CACvB,GAAW,EACX,aAWC;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAC1C,IAAI,YAAY,EAAE,CAAC;YACjB,uEAAuE;YACvE,MAAM,aAAa,GAAG,aAAa,CAAC,QAAQ,CAAC;YAC7C,MAAM,UAAU,GACd,YAAY,CAAC,WAAW,KAAK,UAAU;gBACvC,CAAC,OAAO,YAAY,CAAC,OAAO,KAAK,QAAQ;oBACvC,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;YAE5F,IAAI,aAAa,IAAI,CAAC,UAAU,EAAE,CAAC;gBACjC,sCAAsC;gBACtC,IAAI,CAAC;oBACH,MAAM,SAAS,GAAG,IAAI,iBAAiB,EAAE,CAAC;oBAC1C,2DAA2D;oBAC3D,MAAM,gBAAgB,GAAG,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;oBACjE,OAAO;wBACL,GAAG,YAAY;wBACf,OAAO,EAAE,gBAAgB;wBACzB,WAAW,EAAE,UAAU;qBACxB,CAAC;gBACJ,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,OAAO,CAAC,KAAK,CAAC,iDAAiD,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC;oBAC1E,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,yCAAyC;oBACjE,OAAO,IAAI,CAAC,CAAC,mBAAmB;gBAClC,CAAC;YACH,CAAC;iBAAM,IAAI,CAAC,aAAa,IAAI,UAAU,EAAE,CAAC;gBACxC,sCAAsC;gBACtC,OAAO,CAAC,IAAI,CAAC,qBAAqB,GAAG,oDAAoD,CAAC,CAAC;gBAC3F,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACvB,OAAO,IAAI,CAAC,CAAC,mBAAmB;YAClC,CAAC;YACD,4CAA4C;YAC5C,OAAO,YAAY,CAAC;QACtB,CAAC;QACD,OAAO,IAAI,CAAC,CAAC,aAAa;IAC5B,CAAC;IAED;;;;;;;OAOG;IACK,KAAK,CAAC,oBAAoB,CAChC,GAAW,EACX,aAOC;QAED,IAAI,CAAC,aAAa,CAAC,eAAe,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,yBAAyB,CAAC,GAAG,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;YACpG,yDAAyD;YACzD,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;YACjC,OAAO,UAAU,CAAC;QACpB,CAAC;QAAC,OAAO,SAAc,EAAE,CAAC;YACxB,IAAI,SAAS,YAAY,UAAU,IAAI,SAAS,CAAC,IAAI,KAAK,oBAAoB,EAAE,CAAC;gBAC/E,gGAAgG;gBAChG,OAAO,CAAC,IAAI,CAAC,qBAAqB,GAAG,4DAA4D,CAAC,CAAC;gBACnG,OAAO,IAAI,CAAC;YACd,CAAC;iBAAM,CAAC;gBACN,oFAAoF;gBACpF,6CAA6C;gBAC7C,OAAO,CAAC,IAAI,CAAC,qBAAqB,GAAG,YAAY,SAAS,CAAC,OAAO,+BAA+B,CAAC,CAAC;gBACnG,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;;;;;OAQG;IACK,KAAK,CAAC,6BAA6B,CACzC,aAAsB,EACtB,aAA+C;QAE/C,8EAA8E;QAC9E,mFAAmF;QACnF,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,iBAAiB,KAAK,aAAa,EAAE,CAAC;YACjE,OAAO,CAAC,iDAAiD;QAC3D,CAAC;QAED,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,qBAAqB,CAAC,aAAa,CAAC,CAAC;QAClD,CAAC;QAAC,OAAO,SAAS,EAAE,CAAC;YACnB,wFAAwF;YACxF,OAAO,CAAC,IAAI,CACV,2EAA4E,SAAmB,CAAC,OAAO,EAAE,CAC1G,CAAC;YACF,MAAM,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;YACtC,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,qBAAqB,CAAC,aAAa,CAAC,CAAC;YAClD,CAAC;YAAC,OAAO,eAAe,EAAE,CAAC;gBACzB,MAAM,IAAI,UAAU,CAClB,2CAA4C,eAAyB,CAAC,OAAO,EAAE,EAC/E,sBAAsB,EACtB,eAAwB,CACzB,CAAC;YACJ,CAAC;QACH,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,mEAAmE;YACnE,MAAM,IAAI,UAAU,CAAC,wDAAwD,EAAE,sBAAsB,CAAC,CAAC;QACzG,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACK,KAAK,CAAC,eAAe,CAC3B,GAAW,EACX,aAWC,EACD,YAAoB;QAEpB,MAAM,SAAS,GAAG,aAAa,CAAC,OAAO,CAAC;QAExC,kDAAkD;QAClD,IAAI,YAAY,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;YAChE,IAAI,YAAY,EAAE,CAAC;gBACjB,OAAO,YAAY,CAAC;YACtB,CAAC;QACH,CAAC;QAED,qEAAqE;QACrE,IAAI,YAAY,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACrC,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;YAC3E,IAAI,cAAc,EAAE,CAAC;gBACnB,OAAO,cAAc,CAAC;YACxB,CAAC;QACH,CAAC;QAED,8CAA8C;QAC9C,IAAI,CAAC;YACH,MAAM,aAAa,GACjB,CAAC,aAAa,CAAC,qBAAqB,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC7F,aAAa,CAAC,aAAa,CAAC;YAE9B,MAAM,IAAI,CAAC,6BAA6B,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;YAEvE,iFAAiF;YACjF,2DAA2D;YAC3D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CACvC,IAAI,CAAC,mBAAmB,CACtB,GAAG,EACH,IAAI,CAAC,WAAY,EACjB,aAAa,CAAC,QAAQ,EAAE,oCAAoC;YAC5D,aAAa,CAAC,QAAQ,EACtB,SAAS,EACT,aAAa,CAAC,gBAAgB,EAC9B,aAAa,CAAC,OAAO,CAAC,yBAAyB;aAChD,CACF,CAAC;YAEF,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,wEAAwE;gBACxE,MAAM,IAAI,UAAU,CAAC,iDAAiD,EAAE,qBAAqB,CAAC,CAAC;YACjG,CAAC;YAED,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,qCAAqC;YACnE,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,eAAe;YACf,iHAAiH;YACjH,IAAI,aAAa,CAAC,QAAQ,IAAI,YAAY,KAAK,CAAC,EAAE,CAAC;gBACjD,OAAO,CAAC,IAAI,CAAC,8BAA8B,GAAG,oCAAoC,CAAC,CAAC;gBACpF,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,EAAE,GAAG,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,kDAAkD;YAChI,CAAC;YAED,8BAA8B;YAC9B,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5E,IAAI,YAAY,GAAG,aAAa,CAAC,UAAU,EAAE,CAAC;gBAC5C,OAAO,CAAC,IAAI,CACV,iBAAiB,YAAY,GAAG,CAAC,QAAQ,GAAG,2CAA2C,YAAY,EAAE,CACtG,CAAC;gBACF,MAAM,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;gBACtC,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,aAAa,EAAE,YAAY,GAAG,CAAC,CAAC,CAAC;YACpE,CAAC;YAED,0GAA0G;YAC1G,uCAAuC;YACvC,yFAAyF;YACzF,IAAI,CAAC,aAAa,CAAC,aAAa,IAAI,aAAa,CAAC,qBAAqB,EAAE,CAAC;gBACxE,OAAO,CAAC,IAAI,CACV,6BAA6B,GAAG,cAAc,YAAY,IAAI,aAAa,CAAC,UAAU,4CAA4C,CACnI,CAAC;gBACF,oFAAoF;gBACpF,yFAAyF;gBACzF,MAAM,YAAY,GAAG;oBACnB,GAAG,aAAa;oBAChB,aAAa,EAAE,IAAI;oBACnB,YAAY,EAAE,CAAC,EAAE,yBAAyB;oBAC1C,UAAU,EAAE,CAAC,EAAE,qCAAqC;iBACrD,CAAC;gBACF,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC;YACpD,CAAC;YAED,6DAA6D;YAC7D,MAAM,oBAAoB,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;YACxE,MAAM,UAAU,GACd,KAAK,YAAY,UAAU;gBACzB,CAAC,CAAC,KAAK;gBACP,CAAC,CAAC,IAAI,UAAU,CAAC,iBAAiB,YAAY,EAAE,EAAE,kBAAkB,EAAE,oBAAoB,CAAC,CAAC;YAEhG,MAAM,IAAI,UAAU,CAClB,oBAAoB,GAAG,UAAU,aAAa,CAAC,UAAU,4CAA4C,UAAU,CAAC,OAAO,EAAE,EACzH,UAAU,CAAC,IAAI,IAAI,yBAAyB,EAC5C,UAAU,CAAC,aAAa,IAAI,oBAAoB,CACjD,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,mBAAmB,CAC/B,GAAW,EACX,IAA2B,EAC3B,QAAiB,EAAE,mCAAmC;IACtD,iBAA0B,EAC1B,SAAkB,EAAE,4BAA4B;IAChD,gBAAwB,EAAE,mCAAmC;IAC7D,OAAgC,CAAC,0BAA0B;;QAE3D,IAAI,IAAI,GAAgB,IAAI,CAAC;QAC7B,IAAI,CAAC;YACH,IAAI,CAAC;gBACH,IAAI,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;YAClC,CAAC;YAAC,OAAO,YAAiB,EAAE,CAAC;gBAC3B,IAAI,YAAY,YAAY,UAAU;oBAAE,MAAM,YAAY,CAAC;gBAC3D,MAAM,IAAI,UAAU,CAClB,uCAAuC,YAAY,CAAC,OAAO,EAAE,EAC7D,0BAA0B,EAAE,wCAAwC;gBACpE,YAAY,CACb,CAAC;YACJ,CAAC;YAED,8EAA8E;YAC9E,MAAM,cAAc,GAAG,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC;YACpD,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;YAEpD,2CAA2C;YAC3C,IAAI,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC/C,MAAM,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;YAC1C,CAAC;YAED,oGAAoG;YACpG,4EAA4E;YAC5E,oGAAoG;YACpG,IAAI;YAEJ,IAAI,QAAQ,GAA8B,IAAI,CAAC;YAC/C,IAAI,CAAC;gBACH,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;oBAC9B,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,kBAAkB,EAAE,gCAAgC;oBAC3F,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,8BAA8B;iBACnE,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,eAAoB,EAAE,CAAC;gBAC9B,MAAM,IAAI,UAAU,CAClB,iCAAiC,eAAe,CAAC,OAAO,EAAE,EAC1D,gBAAgB,EAChB,eAAe,CAChB,CAAC;YACJ,CAAC;YAED,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,MAAM,IAAI,UAAU,CAAC,kDAAkD,EAAE,iBAAiB,CAAC,CAAC;YAC9F,CAAC;YAED,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC;gBACnB,uFAAuF;gBACvF,2DAA2D;gBAC3D,6CAA6C;gBAC7C,MAAM,IAAI,UAAU,CAClB,+BAA+B,QAAQ,CAAC,MAAM,EAAE,EAAE,EAClD,gBAAgB,EAChB,SAAS,EACT,QAAQ,CAAC,MAAM,EAAE,CAClB,CAAC;YACJ,CAAC;YAED,MAAM,uBAAuB,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC,cAAc,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;YACxF,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;YACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC5B,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;YAEjC,2BAA2B;YAC3B,IAAI,SAAS,IAAI,gBAAgB,GAAG,CAAC,EAAE,CAAC;gBACtC,MAAM,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC;YAC9C,CAAC;YAED,wDAAwD;YACxD,IAAI,IAAI,CAAC,MAAM,CAAC,qBAAqB,IAAI,CAAC,cAAc,EAAE,CAAC;gBACzD,iDAAiD;gBACjD,MAAM,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;YACzC,CAAC;YAED,IAAI,YAAoB,CAAC;YACzB,IAAI,gBAAqC,CAAC;YAE1C,MAAM,sCAAsC,GAAG;gBAC7C,WAAW;gBACX,uBAAuB;gBACvB,iBAAiB;gBACjB,UAAU;gBACV,YAAY;gBACZ,kBAAkB;gBAClB,iBAAiB;gBACjB,wBAAwB;gBACxB,sBAAsB;gBACtB,qBAAqB;gBACrB,uCAAuC;aACxC,CAAC;YAEF,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACvB,uBAAuB;gBACvB,MAAM,gBAAgB,GAAG,sCAAsC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAC9E,uBAAuB,CAAC,UAAU,CAAC,MAAM,CAAC,CAC3C,CAAC;gBAEF,IAAI,gBAAgB,EAAE,CAAC;oBACrB,YAAY,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;oBACrC,0EAA0E;oBAC1E,gEAAgE;oBAChE,gBAAgB,GAAG,MAAM,CAAC;gBAC5B,CAAC;qBAAM,IAAI,uBAAuB,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;oBACvD,+EAA+E;oBAC/E,OAAO,CAAC,IAAI,CACV,iEAAiE,uBAAuB,2FAA2F,CACpL,CAAC;oBACF,YAAY,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;oBACrC,gBAAgB,GAAG,MAAM,CAAC;gBAC5B,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,UAAU,CAClB,wDAAwD,uBAAuB,IAAI,SAAS,EAAE,EAC9F,kCAAkC,CACnC,CAAC;gBACJ,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,sBAAsB;gBACtB,IACE,uBAAuB,CAAC,UAAU,CAAC,WAAW,CAAC;oBAC/C,uBAAuB,CAAC,UAAU,CAAC,uBAAuB,CAAC,EAC3D,CAAC;oBACD,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,qBAAqB,EAAE,CAAC;wBACnD,IAAI,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;4BACjC,yCAAyC;4BACzC,MAAM,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;wBACzC,CAAC;oBACH,CAAC;oBACD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,4DAA4D;oBAC/F,IAAI,CAAC;wBACH,MAAM,SAAS,GAAG,IAAI,iBAAiB,EAAE,CAAC;wBAC1C,YAAY,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;wBACvC,gBAAgB,GAAG,UAAU,CAAC;oBAChC,CAAC;oBAAC,OAAO,eAAoB,EAAE,CAAC;wBAC9B,OAAO,CAAC,KAAK,CAAC,kCAAkC,GAAG,gBAAgB,EAAE,eAAe,CAAC,CAAC;wBACtF,gDAAgD;wBAChD,YAAY,GAAG,IAAI,CAAC;wBACpB,gBAAgB,GAAG,MAAM,CAAC;oBAC5B,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,sCAAsC;oBACtC,MAAM,IAAI,UAAU,CAClB,yCAAyC,uBAAuB,IAAI,SAAS,gBAAgB,EAC7F,kCAAkC,CACnC,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,OAAO;gBACL,OAAO,EAAE,YAAY;gBACrB,WAAW,EAAE,gBAAgB;gBAC7B,KAAK,EAAE,KAAK,IAAI,IAAI;gBACpB,GAAG,EAAE,QAAQ;gBACb,WAAW,EAAE,KAAK;gBAClB,UAAU,EAAE,MAAM;gBAClB,KAAK,EAAE,SAAS;aACjB,CAAC;QACJ,CAAC;gBAAS,CAAC;YACT,IAAI,IAAI,EAAE,CAAC;gBACT,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAAC,IAAU,EAAE,QAAiB;QAC5D,MAAM,gBAAgB,GAAG,QAAQ;YAC/B,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;YACvF,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,wBAAwB,CAAC;QACzC,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC;QAEtD,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7D,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,KAAY,EAAE,EAAE;oBACxC,mBAAmB;oBACnB,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,YAAY,EAAE,CAAC;oBACpD,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,CAAC;oBAEzC,yBAAyB;oBACzB,IAAI,gBAAgB,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;wBAC5C,OAAO,KAAK,CAAC,KAAK,EAAE,CAAC;oBACvB,CAAC;oBAED,0BAA0B;oBAC1B,IACE,cAAc,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAC9B,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAChF,EACD,CAAC;wBACD,OAAO,KAAK,CAAC,KAAK,EAAE,CAAC;oBACvB,CAAC;oBAED,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;gBAC1B,CAAC,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,YAAqB,EAAE,CAAC;gBAC/B,MAAM,OAAO,GAAG,YAAY,YAAY,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;gBAC5F,oFAAoF;gBACpF,uFAAuF;gBACvF,OAAO,CAAC,KAAK,CACX,8CAA8C,OAAO,EAAE,EACvD,YAAY,YAAY,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CACzD,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,OAAO;QACX,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,wBAAwB;YACnD,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,sBAAsB;YAE1C,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACrB,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;gBACjC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YAC1B,CAAC;YACD,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC,CAAC,kBAAkB;QACpD,CAAC;QAAC,OAAO,YAAqB,EAAE,CAAC;YAC/B,MAAM,OAAO,GAAG,YAAY,YAAY,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YAC5F,6FAA6F;YAC7F,OAAO,CAAC,IAAI,CACV,0CAA0C,OAAO,EAAE,EACnD,YAAY,YAAY,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CACzD,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,UAAU;QACR,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;QACvC,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,iEAAiE;IACzD,mBAAmB,CAAC,GAAW;QACrC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,qBAAqB;YAAE,OAAO,KAAK,CAAC;QACrD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC;YACrC,OAAO,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC9C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC,CAAC,cAAc;QAC9B,CAAC;IACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"PlaywrightEngine.js","sourceRoot":"","sources":["../src/PlaywrightEngine.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { IEngine } from "./IEngine.js";
|
|
2
2
|
import { FetchEngine } from "./FetchEngine.js";
|
|
3
|
-
import type { HTMLFetchResult, BrowserMetrics } from "./types.js";
|
|
4
|
-
export type { IEngine, HTMLFetchResult, BrowserMetrics };
|
|
3
|
+
import type { HTMLFetchResult, ContentFetchResult, ContentFetchOptions, BrowserMetrics } from "./types.js";
|
|
4
|
+
export type { IEngine, HTMLFetchResult, ContentFetchResult, ContentFetchOptions, BrowserMetrics };
|
|
5
5
|
export { FetchEngine };
|
|
6
6
|
export * from "./HybridEngine.js";
|
|
7
7
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE3G,YAAY,EAAE,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,cAAc,EAAE,CAAC;AAClG,OAAO,EAAE,WAAW,EAAE,CAAC;AACvB,cAAc,mBAAmB,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -18,6 +18,25 @@ export interface HTMLFetchResult {
|
|
|
18
18
|
/** Any error encountered during the fetch process. */
|
|
19
19
|
error: Error | undefined;
|
|
20
20
|
}
|
|
21
|
+
/**
|
|
22
|
+
* Defines the structure for the result of fetching raw content (mimics fetch API).
|
|
23
|
+
*/
|
|
24
|
+
export interface ContentFetchResult {
|
|
25
|
+
/** The fetched raw content as Buffer for binary data or string for text data. */
|
|
26
|
+
content: Buffer | string;
|
|
27
|
+
/** The MIME type of the content as returned by the server. */
|
|
28
|
+
contentType: string;
|
|
29
|
+
/** The extracted title of the page, if available and if content is HTML. */
|
|
30
|
+
title: string | null;
|
|
31
|
+
/** The final URL after any redirects. */
|
|
32
|
+
url: string;
|
|
33
|
+
/** Indicates if the result came from the cache. */
|
|
34
|
+
isFromCache: boolean;
|
|
35
|
+
/** The HTTP status code of the final response. */
|
|
36
|
+
statusCode: number | undefined;
|
|
37
|
+
/** Any error encountered during the fetch process. */
|
|
38
|
+
error: Error | undefined;
|
|
39
|
+
}
|
|
21
40
|
/**
|
|
22
41
|
* Metrics related to browser pool performance and status.
|
|
23
42
|
*/
|
|
@@ -191,6 +210,16 @@ export interface FetchOptions {
|
|
|
191
210
|
/** Optional headers to include in the request. */
|
|
192
211
|
headers?: Record<string, string>;
|
|
193
212
|
}
|
|
213
|
+
/**
|
|
214
|
+
* Options that can be passed per-request to engine.fetchContent().
|
|
215
|
+
* Mimics standard fetch behavior with minimal processing.
|
|
216
|
+
*/
|
|
217
|
+
export interface ContentFetchOptions {
|
|
218
|
+
/** Optional headers to include in the request. */
|
|
219
|
+
headers?: Record<string, string>;
|
|
220
|
+
/** Overrides the engine's defaultFastMode for this specific request. (Playwright/Hybrid only) */
|
|
221
|
+
fastMode?: boolean;
|
|
222
|
+
}
|
|
194
223
|
/**
|
|
195
224
|
* Configuration options specifically for the FetchEngine.
|
|
196
225
|
*/
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED