(params: {
monitor: MonitorRow;
check: MonitorCheckRow;
target: MonitorTarget;
})
| 449 | } |
| 450 | |
| 451 | async function runCrawlTarget(params: { |
| 452 | monitor: MonitorRow; |
| 453 | check: MonitorCheckRow; |
| 454 | target: MonitorTarget; |
| 455 | }): Promise<{ pages: PageResult[]; credits: number; targetResult: any }> { |
| 456 | if (params.target.type !== "crawl") { |
| 457 | return { pages: [], credits: 0, targetResult: null }; |
| 458 | } |
| 459 | |
| 460 | const crawlId = uuidv7(); |
| 461 | const body = crawlRequestSchema.parse({ |
| 462 | url: params.target.url, |
| 463 | ...(params.target.crawlOptions ?? {}), |
| 464 | scrapeOptions: withMonitorScrapeDefaults(params.target.scrapeOptions ?? {}), |
| 465 | origin: "monitor", |
| 466 | }) as CrawlRequest; |
| 467 | |
| 468 | await logRequest({ |
| 469 | id: crawlId, |
| 470 | kind: "crawl", |
| 471 | api_version: "v2", |
| 472 | team_id: params.monitor.team_id, |
| 473 | origin: "monitor", |
| 474 | integration: null, |
| 475 | target_hint: body.url, |
| 476 | zeroDataRetention: false, |
| 477 | api_key_id: null, |
| 478 | }); |
| 479 | |
| 480 | const crawlerOptions = { |
| 481 | ...body, |
| 482 | url: undefined, |
| 483 | scrapeOptions: undefined, |
| 484 | prompt: undefined, |
| 485 | }; |
| 486 | |
| 487 | const sc: StoredCrawl = { |
| 488 | originUrl: body.url, |
| 489 | crawlerOptions: toV0CrawlerOptions(crawlerOptions), |
| 490 | scrapeOptions: body.scrapeOptions, |
| 491 | internalOptions: { |
| 492 | disableSmartWaitCache: true, |
| 493 | teamId: params.monitor.team_id, |
| 494 | saveScrapeResultToGCS: !!config.GCS_FIRE_ENGINE_BUCKET_NAME, |
| 495 | zeroDataRetention: false, |
| 496 | bypassBilling: true, |
| 497 | }, |
| 498 | team_id: params.monitor.team_id, |
| 499 | createdAt: Date.now(), |
| 500 | maxConcurrency: body.maxConcurrency, |
| 501 | zeroDataRetention: false, |
| 502 | }; |
| 503 | |
| 504 | const crawler = crawlToCrawler(crawlId, sc, null); |
| 505 | try { |
| 506 | sc.robots = await crawler.getRobotsTxt( |
| 507 | body.scrapeOptions.skipTlsVerification, |
| 508 | ); |
nothing calls this directly
no test coverage detected
searching dependent graphs…