@iflow-mcp/jakeliume-webpeel 0.22.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/LICENSE +15 -0
- package/README.md +313 -0
- package/dist/cache.d.ts +30 -0
- package/dist/cache.js +139 -0
- package/dist/cli/commands/auth.d.ts +5 -0
- package/dist/cli/commands/auth.js +411 -0
- package/dist/cli/commands/doctor.d.ts +37 -0
- package/dist/cli/commands/doctor.js +371 -0
- package/dist/cli/commands/fetch.d.ts +6 -0
- package/dist/cli/commands/fetch.js +1345 -0
- package/dist/cli/commands/guide.d.ts +2 -0
- package/dist/cli/commands/guide.js +183 -0
- package/dist/cli/commands/interact.d.ts +5 -0
- package/dist/cli/commands/interact.js +840 -0
- package/dist/cli/commands/jobs.d.ts +5 -0
- package/dist/cli/commands/jobs.js +997 -0
- package/dist/cli/commands/monitor.d.ts +12 -0
- package/dist/cli/commands/monitor.js +197 -0
- package/dist/cli/commands/observe.d.ts +12 -0
- package/dist/cli/commands/observe.js +158 -0
- package/dist/cli/commands/screenshot.d.ts +5 -0
- package/dist/cli/commands/screenshot.js +282 -0
- package/dist/cli/commands/search.d.ts +5 -0
- package/dist/cli/commands/search.js +1021 -0
- package/dist/cli/commands/setup.d.ts +13 -0
- package/dist/cli/commands/setup.js +244 -0
- package/dist/cli/commands/skill.d.ts +15 -0
- package/dist/cli/commands/skill.js +195 -0
- package/dist/cli/utils.d.ts +84 -0
- package/dist/cli/utils.js +806 -0
- package/dist/cli-auth.d.ts +75 -0
- package/dist/cli-auth.js +369 -0
- package/dist/cli.d.ts +17 -0
- package/dist/cli.js +99 -0
- package/dist/core/actions.d.ts +69 -0
- package/dist/core/actions.js +495 -0
- package/dist/core/agent.d.ts +98 -0
- package/dist/core/agent.js +558 -0
- package/dist/core/answer.d.ts +42 -0
- package/dist/core/answer.js +395 -0
- package/dist/core/application-tracker.d.ts +84 -0
- package/dist/core/application-tracker.js +184 -0
- package/dist/core/apply.d.ts +162 -0
- package/dist/core/apply.js +816 -0
- package/dist/core/auth-detection.d.ts +35 -0
- package/dist/core/auth-detection.js +358 -0
- package/dist/core/auto-extract.d.ts +82 -0
- package/dist/core/auto-extract.js +604 -0
- package/dist/core/auto-interact.d.ts +23 -0
- package/dist/core/auto-interact.js +246 -0
- package/dist/core/bm25-filter.d.ts +66 -0
- package/dist/core/bm25-filter.js +288 -0
- package/dist/core/branding.d.ts +54 -0
- package/dist/core/branding.js +234 -0
- package/dist/core/browser-fetch.d.ts +323 -0
- package/dist/core/browser-fetch.js +1600 -0
- package/dist/core/browser-pool.d.ts +91 -0
- package/dist/core/browser-pool.js +550 -0
- package/dist/core/budget.d.ts +42 -0
- package/dist/core/budget.js +324 -0
- package/dist/core/business-intel.d.ts +47 -0
- package/dist/core/business-intel.js +279 -0
- package/dist/core/cache.d.ts +13 -0
- package/dist/core/cache.js +121 -0
- package/dist/core/cf-worker-proxy.d.ts +32 -0
- package/dist/core/cf-worker-proxy.js +87 -0
- package/dist/core/challenge-detection.d.ts +26 -0
- package/dist/core/challenge-detection.js +468 -0
- package/dist/core/change-tracking.d.ts +75 -0
- package/dist/core/change-tracking.js +276 -0
- package/dist/core/chunker.d.ts +46 -0
- package/dist/core/chunker.js +249 -0
- package/dist/core/chunking.d.ts +42 -0
- package/dist/core/chunking.js +181 -0
- package/dist/core/circuit-breaker.d.ts +44 -0
- package/dist/core/circuit-breaker.js +85 -0
- package/dist/core/content-pruner.d.ts +47 -0
- package/dist/core/content-pruner.js +425 -0
- package/dist/core/cookie-cache.d.ts +60 -0
- package/dist/core/cookie-cache.js +163 -0
- package/dist/core/crawl-checkpoint.d.ts +54 -0
- package/dist/core/crawl-checkpoint.js +104 -0
- package/dist/core/crawler.d.ts +84 -0
- package/dist/core/crawler.js +349 -0
- package/dist/core/cross-verify.d.ts +27 -0
- package/dist/core/cross-verify.js +93 -0
- package/dist/core/deep-fetch.d.ts +74 -0
- package/dist/core/deep-fetch.js +405 -0
- package/dist/core/deep-research.d.ts +141 -0
- package/dist/core/deep-research.js +972 -0
- package/dist/core/design-analysis.d.ts +70 -0
- package/dist/core/design-analysis.js +490 -0
- package/dist/core/design-compare.d.ts +38 -0
- package/dist/core/design-compare.js +264 -0
- package/dist/core/diff.d.ts +61 -0
- package/dist/core/diff.js +289 -0
- package/dist/core/dns-cache.d.ts +20 -0
- package/dist/core/dns-cache.js +198 -0
- package/dist/core/documents.d.ts +23 -0
- package/dist/core/documents.js +123 -0
- package/dist/core/domain-memory.d.ts +66 -0
- package/dist/core/domain-memory.js +163 -0
- package/dist/core/domain-verify.d.ts +40 -0
- package/dist/core/domain-verify.js +379 -0
- package/dist/core/engine-ranker.d.ts +112 -0
- package/dist/core/engine-ranker.js +395 -0
- package/dist/core/extract-inline.d.ts +38 -0
- package/dist/core/extract-inline.js +215 -0
- package/dist/core/extract-listings.d.ts +38 -0
- package/dist/core/extract-listings.js +461 -0
- package/dist/core/extract.d.ts +9 -0
- package/dist/core/extract.js +139 -0
- package/dist/core/fetch-cache.d.ts +57 -0
- package/dist/core/fetch-cache.js +95 -0
- package/dist/core/fetcher.d.ts +13 -0
- package/dist/core/fetcher.js +12 -0
- package/dist/core/google-cache.d.ts +29 -0
- package/dist/core/google-cache.js +180 -0
- package/dist/core/google-serp-parser.d.ts +82 -0
- package/dist/core/google-serp-parser.js +287 -0
- package/dist/core/hotel-search.d.ts +122 -0
- package/dist/core/hotel-search.js +382 -0
- package/dist/core/http-fetch.d.ts +72 -0
- package/dist/core/http-fetch.js +820 -0
- package/dist/core/human.d.ts +175 -0
- package/dist/core/human.js +680 -0
- package/dist/core/image-caption.d.ts +44 -0
- package/dist/core/image-caption.js +271 -0
- package/dist/core/jobs.d.ts +75 -0
- package/dist/core/jobs.js +634 -0
- package/dist/core/json-ld.d.ts +15 -0
- package/dist/core/json-ld.js +617 -0
- package/dist/core/language-detect.d.ts +18 -0
- package/dist/core/language-detect.js +135 -0
- package/dist/core/links.d.ts +10 -0
- package/dist/core/links.js +44 -0
- package/dist/core/llm-extract.d.ts +71 -0
- package/dist/core/llm-extract.js +507 -0
- package/dist/core/llm-provider.d.ts +100 -0
- package/dist/core/llm-provider.js +702 -0
- package/dist/core/local-search.d.ts +60 -0
- package/dist/core/local-search.js +308 -0
- package/dist/core/logger.d.ts +28 -0
- package/dist/core/logger.js +104 -0
- package/dist/core/map.d.ts +33 -0
- package/dist/core/map.js +127 -0
- package/dist/core/markdown.d.ts +92 -0
- package/dist/core/markdown.js +809 -0
- package/dist/core/metadata.d.ts +34 -0
- package/dist/core/metadata.js +422 -0
- package/dist/core/observe.d.ts +113 -0
- package/dist/core/observe.js +395 -0
- package/dist/core/ocr.d.ts +12 -0
- package/dist/core/ocr.js +33 -0
- package/dist/core/paginate.d.ts +31 -0
- package/dist/core/paginate.js +106 -0
- package/dist/core/pdf.d.ts +8 -0
- package/dist/core/pdf.js +25 -0
- package/dist/core/peel-tls.d.ts +25 -0
- package/dist/core/peel-tls.js +220 -0
- package/dist/core/pipeline.d.ts +132 -0
- package/dist/core/pipeline.js +1666 -0
- package/dist/core/profiles.d.ts +61 -0
- package/dist/core/profiles.js +350 -0
- package/dist/core/prompt-guard.d.ts +30 -0
- package/dist/core/prompt-guard.js +119 -0
- package/dist/core/proxy-config.d.ts +90 -0
- package/dist/core/proxy-config.js +172 -0
- package/dist/core/quick-answer.d.ts +53 -0
- package/dist/core/quick-answer.js +833 -0
- package/dist/core/rate-governor.d.ts +80 -0
- package/dist/core/rate-governor.js +238 -0
- package/dist/core/readability.d.ts +57 -0
- package/dist/core/readability.js +533 -0
- package/dist/core/research.d.ts +66 -0
- package/dist/core/research.js +270 -0
- package/dist/core/retry.d.ts +60 -0
- package/dist/core/retry.js +119 -0
- package/dist/core/safe-browsing.d.ts +30 -0
- package/dist/core/safe-browsing.js +206 -0
- package/dist/core/schema-extraction.d.ts +66 -0
- package/dist/core/schema-extraction.js +352 -0
- package/dist/core/schema-postprocess.d.ts +32 -0
- package/dist/core/schema-postprocess.js +469 -0
- package/dist/core/schema-templates.d.ts +19 -0
- package/dist/core/schema-templates.js +143 -0
- package/dist/core/screenshot.d.ts +224 -0
- package/dist/core/screenshot.js +207 -0
- package/dist/core/search-engines.d.ts +25 -0
- package/dist/core/search-engines.js +182 -0
- package/dist/core/search-provider.d.ts +243 -0
- package/dist/core/search-provider.js +1629 -0
- package/dist/core/searxng-provider.d.ts +35 -0
- package/dist/core/searxng-provider.js +105 -0
- package/dist/core/selective-evidence.d.ts +151 -0
- package/dist/core/selective-evidence.js +389 -0
- package/dist/core/site-search.d.ts +44 -0
- package/dist/core/site-search.js +252 -0
- package/dist/core/sitemap.d.ts +23 -0
- package/dist/core/sitemap.js +105 -0
- package/dist/core/source-credibility.d.ts +29 -0
- package/dist/core/source-credibility.js +584 -0
- package/dist/core/source-scoring.d.ts +166 -0
- package/dist/core/source-scoring.js +396 -0
- package/dist/core/stemmer.d.ts +38 -0
- package/dist/core/stemmer.js +509 -0
- package/dist/core/strategies.d.ts +104 -0
- package/dist/core/strategies.js +1044 -0
- package/dist/core/strategy-hooks.d.ts +145 -0
- package/dist/core/strategy-hooks.js +74 -0
- package/dist/core/structured-extract.d.ts +43 -0
- package/dist/core/structured-extract.js +550 -0
- package/dist/core/summarize.d.ts +17 -0
- package/dist/core/summarize.js +78 -0
- package/dist/core/synonyms.d.ts +42 -0
- package/dist/core/synonyms.js +184 -0
- package/dist/core/system-monitor.d.ts +61 -0
- package/dist/core/system-monitor.js +133 -0
- package/dist/core/table-format.d.ts +30 -0
- package/dist/core/table-format.js +146 -0
- package/dist/core/threat-feeds.d.ts +23 -0
- package/dist/core/threat-feeds.js +104 -0
- package/dist/core/timing.d.ts +21 -0
- package/dist/core/timing.js +33 -0
- package/dist/core/transcript-export.d.ts +47 -0
- package/dist/core/transcript-export.js +107 -0
- package/dist/core/user-agents.d.ts +82 -0
- package/dist/core/user-agents.js +239 -0
- package/dist/core/vertical-search.d.ts +54 -0
- package/dist/core/vertical-search.js +158 -0
- package/dist/core/watch-manager.d.ts +175 -0
- package/dist/core/watch-manager.js +416 -0
- package/dist/core/watch.d.ts +101 -0
- package/dist/core/watch.js +389 -0
- package/dist/core/youtube.d.ts +130 -0
- package/dist/core/youtube.js +1175 -0
- package/dist/ee/challenge-re-export.d.ts +1 -0
- package/dist/ee/challenge-re-export.js +1 -0
- package/dist/ee/challenge-solver.d.ts +72 -0
- package/dist/ee/challenge-solver.js +720 -0
- package/dist/ee/domain-extractors.d.ts +8 -0
- package/dist/ee/domain-extractors.js +8 -0
- package/dist/ee/domain-intel.d.ts +16 -0
- package/dist/ee/domain-intel.js +133 -0
- package/dist/ee/extractors/allrecipes.d.ts +2 -0
- package/dist/ee/extractors/allrecipes.js +120 -0
- package/dist/ee/extractors/amazon.d.ts +2 -0
- package/dist/ee/extractors/amazon.js +78 -0
- package/dist/ee/extractors/arxiv.d.ts +2 -0
- package/dist/ee/extractors/arxiv.js +137 -0
- package/dist/ee/extractors/bestbuy.d.ts +2 -0
- package/dist/ee/extractors/bestbuy.js +78 -0
- package/dist/ee/extractors/carscom.d.ts +2 -0
- package/dist/ee/extractors/carscom.js +121 -0
- package/dist/ee/extractors/coingecko.d.ts +2 -0
- package/dist/ee/extractors/coingecko.js +134 -0
- package/dist/ee/extractors/craigslist.d.ts +2 -0
- package/dist/ee/extractors/craigslist.js +92 -0
- package/dist/ee/extractors/devto.d.ts +2 -0
- package/dist/ee/extractors/devto.js +135 -0
- package/dist/ee/extractors/ebay.d.ts +2 -0
- package/dist/ee/extractors/ebay.js +90 -0
- package/dist/ee/extractors/espn.d.ts +2 -0
- package/dist/ee/extractors/espn.js +260 -0
- package/dist/ee/extractors/etsy.d.ts +2 -0
- package/dist/ee/extractors/etsy.js +52 -0
- package/dist/ee/extractors/facebook.d.ts +2 -0
- package/dist/ee/extractors/facebook.js +46 -0
- package/dist/ee/extractors/github.d.ts +2 -0
- package/dist/ee/extractors/github.js +196 -0
- package/dist/ee/extractors/google-flights.d.ts +2 -0
- package/dist/ee/extractors/google-flights.js +176 -0
- package/dist/ee/extractors/hackernews.d.ts +2 -0
- package/dist/ee/extractors/hackernews.js +147 -0
- package/dist/ee/extractors/imdb.d.ts +2 -0
- package/dist/ee/extractors/imdb.js +172 -0
- package/dist/ee/extractors/index.d.ts +26 -0
- package/dist/ee/extractors/index.js +247 -0
- package/dist/ee/extractors/instagram.d.ts +2 -0
- package/dist/ee/extractors/instagram.js +102 -0
- package/dist/ee/extractors/kalshi.d.ts +2 -0
- package/dist/ee/extractors/kalshi.js +121 -0
- package/dist/ee/extractors/kayak-cars.d.ts +2 -0
- package/dist/ee/extractors/kayak-cars.js +270 -0
- package/dist/ee/extractors/linkedin.d.ts +2 -0
- package/dist/ee/extractors/linkedin.js +113 -0
- package/dist/ee/extractors/medium.d.ts +2 -0
- package/dist/ee/extractors/medium.js +130 -0
- package/dist/ee/extractors/news.d.ts +4 -0
- package/dist/ee/extractors/news.js +173 -0
- package/dist/ee/extractors/npm.d.ts +2 -0
- package/dist/ee/extractors/npm.js +86 -0
- package/dist/ee/extractors/pdf.d.ts +2 -0
- package/dist/ee/extractors/pdf.js +108 -0
- package/dist/ee/extractors/pinterest.d.ts +2 -0
- package/dist/ee/extractors/pinterest.js +34 -0
- package/dist/ee/extractors/polymarket.d.ts +2 -0
- package/dist/ee/extractors/polymarket.js +358 -0
- package/dist/ee/extractors/producthunt.d.ts +2 -0
- package/dist/ee/extractors/producthunt.js +88 -0
- package/dist/ee/extractors/pubmed.d.ts +2 -0
- package/dist/ee/extractors/pubmed.js +162 -0
- package/dist/ee/extractors/pypi.d.ts +2 -0
- package/dist/ee/extractors/pypi.js +80 -0
- package/dist/ee/extractors/reddit.d.ts +2 -0
- package/dist/ee/extractors/reddit.js +438 -0
- package/dist/ee/extractors/redfin.d.ts +2 -0
- package/dist/ee/extractors/redfin.js +156 -0
- package/dist/ee/extractors/semanticscholar.d.ts +2 -0
- package/dist/ee/extractors/semanticscholar.js +131 -0
- package/dist/ee/extractors/shared.d.ts +12 -0
- package/dist/ee/extractors/shared.js +76 -0
- package/dist/ee/extractors/soundcloud.d.ts +2 -0
- package/dist/ee/extractors/soundcloud.js +34 -0
- package/dist/ee/extractors/sportsbetting.d.ts +2 -0
- package/dist/ee/extractors/sportsbetting.js +37 -0
- package/dist/ee/extractors/spotify.d.ts +2 -0
- package/dist/ee/extractors/spotify.js +34 -0
- package/dist/ee/extractors/stackoverflow.d.ts +2 -0
- package/dist/ee/extractors/stackoverflow.js +61 -0
- package/dist/ee/extractors/substack.d.ts +2 -0
- package/dist/ee/extractors/substack.js +115 -0
- package/dist/ee/extractors/substackroot.d.ts +2 -0
- package/dist/ee/extractors/substackroot.js +46 -0
- package/dist/ee/extractors/tiktok.d.ts +2 -0
- package/dist/ee/extractors/tiktok.js +29 -0
- package/dist/ee/extractors/tradingview.d.ts +2 -0
- package/dist/ee/extractors/tradingview.js +182 -0
- package/dist/ee/extractors/twitch.d.ts +2 -0
- package/dist/ee/extractors/twitch.js +36 -0
- package/dist/ee/extractors/twitter.d.ts +2 -0
- package/dist/ee/extractors/twitter.js +327 -0
- package/dist/ee/extractors/types.d.ts +14 -0
- package/dist/ee/extractors/types.js +1 -0
- package/dist/ee/extractors/walmart.d.ts +2 -0
- package/dist/ee/extractors/walmart.js +50 -0
- package/dist/ee/extractors/weather.d.ts +2 -0
- package/dist/ee/extractors/weather.js +133 -0
- package/dist/ee/extractors/wikipedia.d.ts +4 -0
- package/dist/ee/extractors/wikipedia.js +235 -0
- package/dist/ee/extractors/yelp.d.ts +2 -0
- package/dist/ee/extractors/yelp.js +216 -0
- package/dist/ee/extractors/youtube.d.ts +2 -0
- package/dist/ee/extractors/youtube.js +189 -0
- package/dist/ee/extractors/zillow.d.ts +54 -0
- package/dist/ee/extractors/zillow.js +247 -0
- package/dist/ee/extractors-re-export.d.ts +1 -0
- package/dist/ee/extractors-re-export.js +1 -0
- package/dist/ee/premium-hooks.d.ts +20 -0
- package/dist/ee/premium-hooks.js +50 -0
- package/dist/ee/spa-detection.d.ts +2 -0
- package/dist/ee/spa-detection.js +2 -0
- package/dist/ee/stability.d.ts +4 -0
- package/dist/ee/stability.js +29 -0
- package/dist/ee/swr-cache.d.ts +14 -0
- package/dist/ee/swr-cache.js +34 -0
- package/dist/index.d.ts +143 -0
- package/dist/index.js +291 -0
- package/dist/integrations/index.d.ts +2 -0
- package/dist/integrations/index.js +2 -0
- package/dist/integrations/langchain.d.ts +64 -0
- package/dist/integrations/langchain.js +115 -0
- package/dist/integrations/llamaindex.d.ts +50 -0
- package/dist/integrations/llamaindex.js +91 -0
- package/dist/mcp/handlers/act.d.ts +5 -0
- package/dist/mcp/handlers/act.js +34 -0
- package/dist/mcp/handlers/definitions.d.ts +6 -0
- package/dist/mcp/handlers/definitions.js +395 -0
- package/dist/mcp/handlers/extract.d.ts +7 -0
- package/dist/mcp/handlers/extract.js +135 -0
- package/dist/mcp/handlers/fetch.d.ts +6 -0
- package/dist/mcp/handlers/fetch.js +98 -0
- package/dist/mcp/handlers/find.d.ts +5 -0
- package/dist/mcp/handlers/find.js +137 -0
- package/dist/mcp/handlers/index.d.ts +13 -0
- package/dist/mcp/handlers/index.js +63 -0
- package/dist/mcp/handlers/legacy.d.ts +25 -0
- package/dist/mcp/handlers/legacy.js +450 -0
- package/dist/mcp/handlers/meta.d.ts +6 -0
- package/dist/mcp/handlers/meta.js +40 -0
- package/dist/mcp/handlers/monitor.d.ts +5 -0
- package/dist/mcp/handlers/monitor.js +41 -0
- package/dist/mcp/handlers/observe.d.ts +8 -0
- package/dist/mcp/handlers/observe.js +37 -0
- package/dist/mcp/handlers/read.d.ts +6 -0
- package/dist/mcp/handlers/read.js +78 -0
- package/dist/mcp/handlers/see.d.ts +5 -0
- package/dist/mcp/handlers/see.js +75 -0
- package/dist/mcp/handlers/types.d.ts +29 -0
- package/dist/mcp/handlers/types.js +28 -0
- package/dist/mcp/server.d.ts +7 -0
- package/dist/mcp/server.js +108 -0
- package/dist/mcp/smart-router.d.ts +23 -0
- package/dist/mcp/smart-router.js +178 -0
- package/dist/server/app.d.ts +14 -0
- package/dist/server/app.js +632 -0
- package/dist/server/auth-store.d.ts +28 -0
- package/dist/server/auth-store.js +88 -0
- package/dist/server/bull-queues.d.ts +60 -0
- package/dist/server/bull-queues.js +90 -0
- package/dist/server/email-service.d.ts +55 -0
- package/dist/server/email-service.js +291 -0
- package/dist/server/job-queue.d.ts +100 -0
- package/dist/server/job-queue.js +145 -0
- package/dist/server/logger.d.ts +10 -0
- package/dist/server/logger.js +37 -0
- package/dist/server/middleware/audit-log.d.ts +14 -0
- package/dist/server/middleware/audit-log.js +73 -0
- package/dist/server/middleware/auth.d.ts +35 -0
- package/dist/server/middleware/auth.js +225 -0
- package/dist/server/middleware/rate-limit.d.ts +50 -0
- package/dist/server/middleware/rate-limit.js +270 -0
- package/dist/server/middleware/scope-guard.d.ts +25 -0
- package/dist/server/middleware/scope-guard.js +45 -0
- package/dist/server/middleware/url-validator.d.ts +15 -0
- package/dist/server/middleware/url-validator.js +201 -0
- package/dist/server/openapi.yaml +6418 -0
- package/dist/server/pg-auth-store.d.ts +146 -0
- package/dist/server/pg-auth-store.js +576 -0
- package/dist/server/pg-job-queue.d.ts +59 -0
- package/dist/server/pg-job-queue.js +375 -0
- package/dist/server/routes/activity.d.ts +6 -0
- package/dist/server/routes/activity.js +79 -0
- package/dist/server/routes/admin-active.d.ts +7 -0
- package/dist/server/routes/admin-active.js +120 -0
- package/dist/server/routes/admin-stats.d.ts +7 -0
- package/dist/server/routes/admin-stats.js +176 -0
- package/dist/server/routes/agent.d.ts +24 -0
- package/dist/server/routes/agent.js +480 -0
- package/dist/server/routes/answer.d.ts +5 -0
- package/dist/server/routes/answer.js +125 -0
- package/dist/server/routes/ask.d.ts +28 -0
- package/dist/server/routes/ask.js +295 -0
- package/dist/server/routes/batch.d.ts +6 -0
- package/dist/server/routes/batch.js +493 -0
- package/dist/server/routes/cache-warm.d.ts +25 -0
- package/dist/server/routes/cache-warm.js +212 -0
- package/dist/server/routes/cli-usage.d.ts +6 -0
- package/dist/server/routes/cli-usage.js +127 -0
- package/dist/server/routes/compat.d.ts +23 -0
- package/dist/server/routes/compat.js +652 -0
- package/dist/server/routes/crawl.d.ts +13 -0
- package/dist/server/routes/crawl.js +287 -0
- package/dist/server/routes/deep-fetch.d.ts +8 -0
- package/dist/server/routes/deep-fetch.js +57 -0
- package/dist/server/routes/deep-research.d.ts +11 -0
- package/dist/server/routes/deep-research.js +232 -0
- package/dist/server/routes/demo.d.ts +24 -0
- package/dist/server/routes/demo.js +517 -0
- package/dist/server/routes/do.d.ts +8 -0
- package/dist/server/routes/do.js +72 -0
- package/dist/server/routes/extract.d.ts +14 -0
- package/dist/server/routes/extract.js +325 -0
- package/dist/server/routes/feed.d.ts +15 -0
- package/dist/server/routes/feed.js +311 -0
- package/dist/server/routes/fetch-queue.d.ts +13 -0
- package/dist/server/routes/fetch-queue.js +357 -0
- package/dist/server/routes/fetch.d.ts +7 -0
- package/dist/server/routes/fetch.js +1274 -0
- package/dist/server/routes/go.d.ts +14 -0
- package/dist/server/routes/go.js +81 -0
- package/dist/server/routes/health.d.ts +11 -0
- package/dist/server/routes/health.js +141 -0
- package/dist/server/routes/jobs.d.ts +7 -0
- package/dist/server/routes/jobs.js +574 -0
- package/dist/server/routes/map.d.ts +11 -0
- package/dist/server/routes/map.js +116 -0
- package/dist/server/routes/mcp.d.ts +14 -0
- package/dist/server/routes/mcp.js +197 -0
- package/dist/server/routes/metrics.d.ts +37 -0
- package/dist/server/routes/metrics.js +149 -0
- package/dist/server/routes/oauth.d.ts +9 -0
- package/dist/server/routes/oauth.js +396 -0
- package/dist/server/routes/playground.d.ts +17 -0
- package/dist/server/routes/playground.js +283 -0
- package/dist/server/routes/reader.d.ts +18 -0
- package/dist/server/routes/reader.js +192 -0
- package/dist/server/routes/research.d.ts +14 -0
- package/dist/server/routes/research.js +482 -0
- package/dist/server/routes/screenshot.d.ts +22 -0
- package/dist/server/routes/screenshot.js +820 -0
- package/dist/server/routes/search.d.ts +6 -0
- package/dist/server/routes/search.js +874 -0
- package/dist/server/routes/session.d.ts +17 -0
- package/dist/server/routes/session.js +548 -0
- package/dist/server/routes/share.d.ts +18 -0
- package/dist/server/routes/share.js +462 -0
- package/dist/server/routes/smart-search/handlers/cars.d.ts +2 -0
- package/dist/server/routes/smart-search/handlers/cars.js +102 -0
- package/dist/server/routes/smart-search/handlers/flights.d.ts +2 -0
- package/dist/server/routes/smart-search/handlers/flights.js +72 -0
- package/dist/server/routes/smart-search/handlers/general.d.ts +13 -0
- package/dist/server/routes/smart-search/handlers/general.js +717 -0
- package/dist/server/routes/smart-search/handlers/hotels.d.ts +2 -0
- package/dist/server/routes/smart-search/handlers/hotels.js +88 -0
- package/dist/server/routes/smart-search/handlers/products.d.ts +2 -0
- package/dist/server/routes/smart-search/handlers/products.js +1309 -0
- package/dist/server/routes/smart-search/handlers/rental.d.ts +2 -0
- package/dist/server/routes/smart-search/handlers/rental.js +154 -0
- package/dist/server/routes/smart-search/handlers/restaurants.d.ts +2 -0
- package/dist/server/routes/smart-search/handlers/restaurants.js +225 -0
- package/dist/server/routes/smart-search/handlers/transit-verdict.d.ts +41 -0
- package/dist/server/routes/smart-search/handlers/transit-verdict.js +224 -0
- package/dist/server/routes/smart-search/index.d.ts +19 -0
- package/dist/server/routes/smart-search/index.js +546 -0
- package/dist/server/routes/smart-search/intent.d.ts +3 -0
- package/dist/server/routes/smart-search/intent.js +264 -0
- package/dist/server/routes/smart-search/llm.d.ts +16 -0
- package/dist/server/routes/smart-search/llm.js +70 -0
- package/dist/server/routes/smart-search/sources/reddit.d.ts +18 -0
- package/dist/server/routes/smart-search/sources/reddit.js +34 -0
- package/dist/server/routes/smart-search/sources/yelp.d.ts +25 -0
- package/dist/server/routes/smart-search/sources/yelp.js +171 -0
- package/dist/server/routes/smart-search/sources/youtube.d.ts +8 -0
- package/dist/server/routes/smart-search/sources/youtube.js +9 -0
- package/dist/server/routes/smart-search/types.d.ts +81 -0
- package/dist/server/routes/smart-search/types.js +1 -0
- package/dist/server/routes/smart-search/utils.d.ts +20 -0
- package/dist/server/routes/smart-search/utils.js +146 -0
- package/dist/server/routes/stats.d.ts +6 -0
- package/dist/server/routes/stats.js +71 -0
- package/dist/server/routes/stripe.d.ts +15 -0
- package/dist/server/routes/stripe.js +296 -0
- package/dist/server/routes/transcript-export.d.ts +10 -0
- package/dist/server/routes/transcript-export.js +178 -0
- package/dist/server/routes/usage.d.ts +9 -0
- package/dist/server/routes/usage.js +279 -0
- package/dist/server/routes/users.d.ts +8 -0
- package/dist/server/routes/users.js +1867 -0
- package/dist/server/routes/watch.d.ts +15 -0
- package/dist/server/routes/watch.js +309 -0
- package/dist/server/routes/webhooks.d.ts +26 -0
- package/dist/server/routes/webhooks.js +170 -0
- package/dist/server/routes/youtube.d.ts +6 -0
- package/dist/server/routes/youtube.js +130 -0
- package/dist/server/sentry.d.ts +14 -0
- package/dist/server/sentry.js +104 -0
- package/dist/server/types.d.ts +15 -0
- package/dist/server/types.js +7 -0
- package/dist/server/utils/response.d.ts +44 -0
- package/dist/server/utils/response.js +69 -0
- package/dist/server/utils/sse.d.ts +22 -0
- package/dist/server/utils/sse.js +38 -0
- package/dist/types.d.ts +552 -0
- package/dist/types.js +39 -0
- package/llms.txt +105 -0
- package/package.json +189 -0
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Branding and design system extraction from web pages
|
|
3
|
+
* Extracts colors, fonts, typography, spacing, components, and CSS variables
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Extract branding and design system from a webpage
|
|
7
|
+
* This must run inside a Playwright browser context to access computed styles
|
|
8
|
+
*
|
|
9
|
+
* @param page - Playwright Page object
|
|
10
|
+
* @returns Complete branding profile
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```typescript
|
|
14
|
+
* const browser = await chromium.launch();
|
|
15
|
+
* const page = await browser.newPage();
|
|
16
|
+
* await page.goto('https://example.com');
|
|
17
|
+
* const branding = await extractBranding(page);
|
|
18
|
+
* console.log(branding.colors.primary);
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
export async function extractBranding(page) {
|
|
22
|
+
try {
|
|
23
|
+
// Run extraction in browser context to access computed styles
|
|
24
|
+
const extracted = await page.evaluate(() => {
|
|
25
|
+
const result = {
|
|
26
|
+
colorScheme: 'light',
|
|
27
|
+
colors: {},
|
|
28
|
+
fonts: [],
|
|
29
|
+
typography: {
|
|
30
|
+
fontFamilies: {},
|
|
31
|
+
fontSizes: {},
|
|
32
|
+
fontWeights: {},
|
|
33
|
+
lineHeights: {},
|
|
34
|
+
},
|
|
35
|
+
spacing: {},
|
|
36
|
+
components: {},
|
|
37
|
+
cssVariables: {},
|
|
38
|
+
};
|
|
39
|
+
// Helper to parse RGB/RGBA to hex
|
|
40
|
+
function rgbToHex(rgb) {
|
|
41
|
+
const match = rgb.match(/rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*[\d.]+)?\)/);
|
|
42
|
+
if (!match)
|
|
43
|
+
return rgb;
|
|
44
|
+
const [, r, g, b] = match;
|
|
45
|
+
return '#' + [r, g, b].map(x => parseInt(x).toString(16).padStart(2, '0')).join('');
|
|
46
|
+
}
|
|
47
|
+
// Extract all CSS variables from :root
|
|
48
|
+
const rootStyles = getComputedStyle(document.documentElement);
|
|
49
|
+
for (let i = 0; i < rootStyles.length; i++) {
|
|
50
|
+
const prop = rootStyles[i];
|
|
51
|
+
if (prop.startsWith('--')) {
|
|
52
|
+
const value = rootStyles.getPropertyValue(prop).trim();
|
|
53
|
+
result.cssVariables[prop] = value;
|
|
54
|
+
// Detect color variables
|
|
55
|
+
if (value.match(/^#[0-9a-f]{3,8}$/i) || value.match(/^rgba?\(/i) || value.match(/^hsla?\(/i)) {
|
|
56
|
+
const colorKey = prop.replace(/^--/, '').replace(/-/g, '_');
|
|
57
|
+
result.colors[colorKey] = value.startsWith('rgb') ? rgbToHex(value) : value;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
// Detect color scheme (light/dark)
|
|
62
|
+
const bgColor = rootStyles.backgroundColor || getComputedStyle(document.body).backgroundColor;
|
|
63
|
+
if (bgColor) {
|
|
64
|
+
const rgb = bgColor.match(/rgba?\((\d+),\s*(\d+),\s*(\d+)/);
|
|
65
|
+
if (rgb) {
|
|
66
|
+
const [, r, g, b] = rgb.map(Number);
|
|
67
|
+
const brightness = (r * 299 + g * 587 + b * 114) / 1000;
|
|
68
|
+
result.colorScheme = brightness < 128 ? 'dark' : 'light';
|
|
69
|
+
result.colors.background = rgbToHex(bgColor);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
// Extract text colors
|
|
73
|
+
const bodyStyles = getComputedStyle(document.body);
|
|
74
|
+
result.colors.textPrimary = rgbToHex(bodyStyles.color);
|
|
75
|
+
// Find headings for secondary text color
|
|
76
|
+
const heading = document.querySelector('h1, h2, h3, h4, h5, h6');
|
|
77
|
+
if (heading) {
|
|
78
|
+
const headingColor = getComputedStyle(heading).color;
|
|
79
|
+
if (headingColor !== bodyStyles.color) {
|
|
80
|
+
result.colors.textSecondary = rgbToHex(headingColor);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
// Try to detect primary/accent colors from buttons, links, etc.
|
|
84
|
+
const button = document.querySelector('button, .btn, [role="button"], a.button');
|
|
85
|
+
if (button) {
|
|
86
|
+
const btnStyles = getComputedStyle(button);
|
|
87
|
+
const btnBg = btnStyles.backgroundColor;
|
|
88
|
+
if (btnBg && !btnBg.includes('rgba(0, 0, 0, 0)')) {
|
|
89
|
+
result.colors.primary = rgbToHex(btnBg);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
const link = document.querySelector('a');
|
|
93
|
+
if (link) {
|
|
94
|
+
const linkColor = getComputedStyle(link).color;
|
|
95
|
+
if (!result.colors.primary && linkColor !== bodyStyles.color) {
|
|
96
|
+
result.colors.accent = rgbToHex(linkColor);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
// Extract fonts
|
|
100
|
+
const fontFamiliesSet = new Set();
|
|
101
|
+
const fontElements = [document.body, ...Array.from(document.querySelectorAll('h1, h2, h3, h4, h5, h6, p, button, input'))];
|
|
102
|
+
for (const el of fontElements) {
|
|
103
|
+
if (el) {
|
|
104
|
+
const styles = getComputedStyle(el);
|
|
105
|
+
const family = styles.fontFamily.split(',')[0].replace(/['"]/g, '').trim();
|
|
106
|
+
fontFamiliesSet.add(family);
|
|
107
|
+
const tagName = el.tagName.toLowerCase();
|
|
108
|
+
result.typography.fontFamilies[tagName] = family;
|
|
109
|
+
result.typography.fontSizes[tagName] = styles.fontSize;
|
|
110
|
+
result.typography.fontWeights[tagName] = parseInt(styles.fontWeight) || 400;
|
|
111
|
+
result.typography.lineHeights[tagName] = styles.lineHeight;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
// Build fonts array with sources
|
|
115
|
+
fontFamiliesSet.forEach(family => {
|
|
116
|
+
const fontObj = { family };
|
|
117
|
+
// Detect Google Fonts
|
|
118
|
+
const links = document.querySelectorAll('link[href*="fonts.googleapis.com"]');
|
|
119
|
+
for (const link of links) {
|
|
120
|
+
const href = link.getAttribute('href') || '';
|
|
121
|
+
if (href.includes(family.replace(/\s+/g, '+'))) {
|
|
122
|
+
fontObj.source = 'Google Fonts';
|
|
123
|
+
// Extract weights from URL
|
|
124
|
+
const weightMatch = href.match(/wght@([0-9;]+)/);
|
|
125
|
+
if (weightMatch) {
|
|
126
|
+
fontObj.weights = weightMatch[1].split(';').map(Number);
|
|
127
|
+
}
|
|
128
|
+
break;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
if (!fontObj.source) {
|
|
132
|
+
fontObj.source = 'system';
|
|
133
|
+
}
|
|
134
|
+
result.fonts.push(fontObj);
|
|
135
|
+
});
|
|
136
|
+
// Extract spacing values
|
|
137
|
+
const container = document.querySelector('main, .container, .wrapper, #content, [class*="container"]');
|
|
138
|
+
if (container) {
|
|
139
|
+
const containerStyles = getComputedStyle(container);
|
|
140
|
+
result.spacing.containerMaxWidth = containerStyles.maxWidth;
|
|
141
|
+
result.spacing.borderRadius = containerStyles.borderRadius;
|
|
142
|
+
// Try to detect base spacing unit
|
|
143
|
+
const padding = containerStyles.padding;
|
|
144
|
+
const paddingMatch = padding.match(/(\d+)px/);
|
|
145
|
+
if (paddingMatch) {
|
|
146
|
+
const px = parseInt(paddingMatch[1]);
|
|
147
|
+
// Common spacing systems use multiples of 4 or 8
|
|
148
|
+
if (px % 8 === 0)
|
|
149
|
+
result.spacing.baseUnit = 8;
|
|
150
|
+
else if (px % 4 === 0)
|
|
151
|
+
result.spacing.baseUnit = 4;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
// Extract common component patterns
|
|
155
|
+
const componentSelectors = {
|
|
156
|
+
button: 'button, .btn, [role="button"]',
|
|
157
|
+
input: 'input[type="text"], input[type="email"], textarea',
|
|
158
|
+
card: '.card, [class*="card"]',
|
|
159
|
+
nav: 'nav, .nav, .navigation',
|
|
160
|
+
header: 'header, .header',
|
|
161
|
+
footer: 'footer, .footer',
|
|
162
|
+
};
|
|
163
|
+
for (const [name, selector] of Object.entries(componentSelectors)) {
|
|
164
|
+
const el = document.querySelector(selector);
|
|
165
|
+
if (el) {
|
|
166
|
+
const styles = getComputedStyle(el);
|
|
167
|
+
result.components[name] = {
|
|
168
|
+
backgroundColor: styles.backgroundColor.includes('rgba(0, 0, 0, 0)') ? 'transparent' : rgbToHex(styles.backgroundColor),
|
|
169
|
+
color: rgbToHex(styles.color),
|
|
170
|
+
borderRadius: styles.borderRadius,
|
|
171
|
+
padding: styles.padding,
|
|
172
|
+
fontSize: styles.fontSize,
|
|
173
|
+
fontWeight: styles.fontWeight,
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
return result;
|
|
178
|
+
});
|
|
179
|
+
// Extract logo and favicon using Playwright
|
|
180
|
+
const logo = await page.evaluate(() => {
|
|
181
|
+
const logoSelectors = [
|
|
182
|
+
'img[alt*="logo" i]',
|
|
183
|
+
'img[class*="logo" i]',
|
|
184
|
+
'img[id*="logo" i]',
|
|
185
|
+
'a.logo img',
|
|
186
|
+
'a[class*="logo"] img',
|
|
187
|
+
'header img',
|
|
188
|
+
'.header img',
|
|
189
|
+
'nav img:first-of-type',
|
|
190
|
+
];
|
|
191
|
+
for (const selector of logoSelectors) {
|
|
192
|
+
const img = document.querySelector(selector);
|
|
193
|
+
if (img?.src)
|
|
194
|
+
return img.src;
|
|
195
|
+
}
|
|
196
|
+
return undefined;
|
|
197
|
+
});
|
|
198
|
+
const favicon = await page.evaluate(() => {
|
|
199
|
+
const faviconSelectors = [
|
|
200
|
+
'link[rel="icon"]',
|
|
201
|
+
'link[rel="shortcut icon"]',
|
|
202
|
+
'link[rel="apple-touch-icon"]',
|
|
203
|
+
];
|
|
204
|
+
for (const selector of faviconSelectors) {
|
|
205
|
+
const link = document.querySelector(selector);
|
|
206
|
+
if (link?.href)
|
|
207
|
+
return link.href;
|
|
208
|
+
}
|
|
209
|
+
return undefined;
|
|
210
|
+
});
|
|
211
|
+
return {
|
|
212
|
+
...extracted,
|
|
213
|
+
logo,
|
|
214
|
+
favicon,
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
catch (error) {
|
|
218
|
+
// Return minimal branding profile on error
|
|
219
|
+
console.error('Branding extraction failed:', error);
|
|
220
|
+
return {
|
|
221
|
+
colorScheme: 'light',
|
|
222
|
+
colors: {},
|
|
223
|
+
fonts: [],
|
|
224
|
+
typography: {
|
|
225
|
+
fontFamilies: {},
|
|
226
|
+
fontSizes: {},
|
|
227
|
+
fontWeights: {},
|
|
228
|
+
},
|
|
229
|
+
spacing: {},
|
|
230
|
+
components: {},
|
|
231
|
+
cssVariables: {},
|
|
232
|
+
};
|
|
233
|
+
}
|
|
234
|
+
}
|
|
@@ -0,0 +1,323 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Browser-based fetching — uses Playwright via the browser pool.
|
|
3
|
+
* Handles browserFetch, browserScreenshot, retryFetch, and scrollAndWait.
|
|
4
|
+
*/
|
|
5
|
+
import type { Page } from 'playwright';
|
|
6
|
+
import type { PageAction } from '../types.js';
|
|
7
|
+
import { type FetchResult } from './http-fetch.js';
|
|
8
|
+
/**
|
|
9
|
+
* Fetch using headless Chromium via Playwright
|
|
10
|
+
* Slower but can handle JavaScript-heavy sites and bypass some bot detection
|
|
11
|
+
*/
|
|
12
|
+
export declare function browserFetch(url: string, options?: {
|
|
13
|
+
userAgent?: string;
|
|
14
|
+
waitMs?: number;
|
|
15
|
+
timeoutMs?: number;
|
|
16
|
+
screenshot?: boolean;
|
|
17
|
+
screenshotFullPage?: boolean;
|
|
18
|
+
headers?: Record<string, string>;
|
|
19
|
+
cookies?: string[];
|
|
20
|
+
stealth?: boolean;
|
|
21
|
+
actions?: PageAction[];
|
|
22
|
+
/** Keep the browser page open after fetch (caller must close page + browser) */
|
|
23
|
+
keepPageOpen?: boolean;
|
|
24
|
+
/** Abort signal for internal races/cancellation */
|
|
25
|
+
signal?: AbortSignal;
|
|
26
|
+
/**
|
|
27
|
+
* Path to a persistent Chrome user-data-dir.
|
|
28
|
+
* When set, bypasses the shared browser pool and keeps the browser alive
|
|
29
|
+
* between fetches so cookies / session data persist.
|
|
30
|
+
*/
|
|
31
|
+
profileDir?: string;
|
|
32
|
+
/** Launch browser in headed (visible) mode. Only meaningful with profileDir or for debugging. */
|
|
33
|
+
headed?: boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Playwright storage state (cookies + localStorage) to inject into the browser context.
|
|
36
|
+
* When provided, a new BrowserContext is created with this state, which is more reliable
|
|
37
|
+
* than --user-data-dir for session injection.
|
|
38
|
+
*/
|
|
39
|
+
storageState?: any;
|
|
40
|
+
/**
|
|
41
|
+
* Proxy URL for routing browser requests through a proxy server.
|
|
42
|
+
* Supports HTTP, HTTPS, and SOCKS5 proxies.
|
|
43
|
+
* Format: protocol://[user:pass@]host:port
|
|
44
|
+
* Examples: 'http://proxy.example.com:8080', 'socks5://user:pass@host:1080'
|
|
45
|
+
*/
|
|
46
|
+
proxy?: string;
|
|
47
|
+
/** Device emulation: 'desktop' (default), 'mobile', 'tablet' */
|
|
48
|
+
device?: 'desktop' | 'mobile' | 'tablet';
|
|
49
|
+
/** Browser viewport width in pixels */
|
|
50
|
+
viewportWidth?: number;
|
|
51
|
+
/** Browser viewport height in pixels */
|
|
52
|
+
viewportHeight?: number;
|
|
53
|
+
/** Device scale factor (pixel density) for screenshots. Defaults to device profile value. */
|
|
54
|
+
deviceScaleFactor?: number;
|
|
55
|
+
/** Wait condition: 'domcontentloaded' (default), 'networkidle', 'load', 'commit' */
|
|
56
|
+
waitUntil?: string;
|
|
57
|
+
/** CSS selector to wait for before extracting content */
|
|
58
|
+
waitSelector?: string;
|
|
59
|
+
/** Block resource types for faster loading: 'image', 'stylesheet', 'font', 'media', 'script' */
|
|
60
|
+
blockResources?: string[];
|
|
61
|
+
/**
|
|
62
|
+
* Whether the target is a Single-Page Application (Kayak, Google Flights, Expedia, etc).
|
|
63
|
+
* When true, the DOM stability check uses a longer timeout (12s) to wait for async data loads.
|
|
64
|
+
* When false (default), a shorter 3s stability window is used.
|
|
65
|
+
*/
|
|
66
|
+
isSPA?: boolean;
|
|
67
|
+
/** Language preferences for browser navigator.languages and locale (e.g. ['ja', 'en']) */
|
|
68
|
+
languages?: string[];
|
|
69
|
+
}): Promise<FetchResult>;
|
|
70
|
+
/**
|
|
71
|
+
* Capture a screenshot of a URL using headless Chromium via Playwright.
|
|
72
|
+
*/
|
|
73
|
+
export declare function browserScreenshot(url: string, options?: {
|
|
74
|
+
fullPage?: boolean;
|
|
75
|
+
width?: number;
|
|
76
|
+
height?: number;
|
|
77
|
+
format?: 'png' | 'jpeg';
|
|
78
|
+
quality?: number;
|
|
79
|
+
waitMs?: number;
|
|
80
|
+
timeoutMs?: number;
|
|
81
|
+
userAgent?: string;
|
|
82
|
+
headers?: Record<string, string>;
|
|
83
|
+
cookies?: string[];
|
|
84
|
+
stealth?: boolean;
|
|
85
|
+
actions?: Array<{
|
|
86
|
+
type: 'wait' | 'click' | 'scroll' | 'type' | 'fill' | 'select' | 'press' | 'hover' | 'waitForSelector' | 'screenshot';
|
|
87
|
+
selector?: string;
|
|
88
|
+
value?: string;
|
|
89
|
+
key?: string;
|
|
90
|
+
ms?: number;
|
|
91
|
+
to?: 'top' | 'bottom' | number | {
|
|
92
|
+
x: number;
|
|
93
|
+
y: number;
|
|
94
|
+
};
|
|
95
|
+
timeout?: number;
|
|
96
|
+
}>;
|
|
97
|
+
scrollThrough?: boolean;
|
|
98
|
+
selector?: string;
|
|
99
|
+
}): Promise<{
|
|
100
|
+
buffer: Buffer;
|
|
101
|
+
finalUrl: string;
|
|
102
|
+
}>;
|
|
103
|
+
/**
|
|
104
|
+
* Capture screenshots of two URLs and compute a pixel-level visual diff.
|
|
105
|
+
*/
|
|
106
|
+
export declare function browserDiff(url1: string, url2: string, options?: {
|
|
107
|
+
width?: number;
|
|
108
|
+
height?: number;
|
|
109
|
+
fullPage?: boolean;
|
|
110
|
+
threshold?: number;
|
|
111
|
+
format?: 'png' | 'jpeg';
|
|
112
|
+
quality?: number;
|
|
113
|
+
stealth?: boolean;
|
|
114
|
+
waitMs?: number;
|
|
115
|
+
timeoutMs?: number;
|
|
116
|
+
}): Promise<{
|
|
117
|
+
diffBuffer: Buffer;
|
|
118
|
+
diffPixels: number;
|
|
119
|
+
totalPixels: number;
|
|
120
|
+
diffPercent: number;
|
|
121
|
+
dimensions: {
|
|
122
|
+
width: number;
|
|
123
|
+
height: number;
|
|
124
|
+
};
|
|
125
|
+
}>;
|
|
126
|
+
/**
|
|
127
|
+
* Retry a fetch operation with exponential backoff
|
|
128
|
+
*/
|
|
129
|
+
export declare function retryFetch<T>(fn: () => Promise<T>, maxAttempts?: number, baseDelayMs?: number): Promise<T>;
|
|
130
|
+
/**
|
|
131
|
+
* Scroll to the bottom of the page N times, waiting for the network to
|
|
132
|
+
* settle between each scroll. Useful for triggering lazy-loaded content
|
|
133
|
+
* (infinite scroll, deferred images, etc.).
|
|
134
|
+
*
|
|
135
|
+
* @param page - Playwright Page instance.
|
|
136
|
+
* @param times - Number of scroll-and-wait cycles (default: 3).
|
|
137
|
+
* @returns The final page HTML after all scrolls complete.
|
|
138
|
+
*/
|
|
139
|
+
export declare function scrollAndWait(page: Page, times?: number): Promise<string>;
|
|
140
|
+
/**
|
|
141
|
+
* Capture multiple screenshots at evenly distributed scroll positions.
|
|
142
|
+
* Returns an array of Buffers (one per frame).
|
|
143
|
+
*/
|
|
144
|
+
export declare function browserFilmstrip(url: string, options?: {
|
|
145
|
+
frames?: number;
|
|
146
|
+
width?: number;
|
|
147
|
+
height?: number;
|
|
148
|
+
format?: 'png' | 'jpeg';
|
|
149
|
+
quality?: number;
|
|
150
|
+
waitMs?: number;
|
|
151
|
+
timeoutMs?: number;
|
|
152
|
+
userAgent?: string;
|
|
153
|
+
headers?: Record<string, string>;
|
|
154
|
+
cookies?: string[];
|
|
155
|
+
stealth?: boolean;
|
|
156
|
+
}): Promise<{
|
|
157
|
+
frames: Buffer[];
|
|
158
|
+
finalUrl: string;
|
|
159
|
+
}>;
|
|
160
|
+
/**
|
|
161
|
+
* Section-aware audit screenshots.
|
|
162
|
+
* Finds all elements matching a CSS selector and captures a viewport screenshot
|
|
163
|
+
* scrolled to each one. Returns one image buffer per matching element.
|
|
164
|
+
*/
|
|
165
|
+
export declare function browserAudit(url: string, options?: {
|
|
166
|
+
width?: number;
|
|
167
|
+
height?: number;
|
|
168
|
+
format?: 'png' | 'jpeg';
|
|
169
|
+
quality?: number;
|
|
170
|
+
selector?: string;
|
|
171
|
+
waitMs?: number;
|
|
172
|
+
timeoutMs?: number;
|
|
173
|
+
userAgent?: string;
|
|
174
|
+
headers?: Record<string, string>;
|
|
175
|
+
cookies?: string[];
|
|
176
|
+
stealth?: boolean;
|
|
177
|
+
scrollThrough?: boolean;
|
|
178
|
+
}): Promise<{
|
|
179
|
+
frames: {
|
|
180
|
+
index: number;
|
|
181
|
+
tag: string;
|
|
182
|
+
id: string;
|
|
183
|
+
className: string;
|
|
184
|
+
top: number;
|
|
185
|
+
height: number;
|
|
186
|
+
buffer: Buffer;
|
|
187
|
+
}[];
|
|
188
|
+
finalUrl: string;
|
|
189
|
+
}>;
|
|
190
|
+
/**
|
|
191
|
+
* Capture N viewport screenshots at fixed intervals to record CSS animation states.
|
|
192
|
+
*/
|
|
193
|
+
export declare function browserAnimationCapture(url: string, options?: {
|
|
194
|
+
frames?: number;
|
|
195
|
+
intervalMs?: number;
|
|
196
|
+
scrollTo?: number;
|
|
197
|
+
selector?: string;
|
|
198
|
+
width?: number;
|
|
199
|
+
height?: number;
|
|
200
|
+
format?: 'png' | 'jpeg';
|
|
201
|
+
quality?: number;
|
|
202
|
+
waitMs?: number;
|
|
203
|
+
timeoutMs?: number;
|
|
204
|
+
userAgent?: string;
|
|
205
|
+
headers?: Record<string, string>;
|
|
206
|
+
cookies?: string[];
|
|
207
|
+
stealth?: boolean;
|
|
208
|
+
}): Promise<{
|
|
209
|
+
frames: {
|
|
210
|
+
index: number;
|
|
211
|
+
timestampMs: number;
|
|
212
|
+
buffer: Buffer;
|
|
213
|
+
}[];
|
|
214
|
+
finalUrl: string;
|
|
215
|
+
}>;
|
|
216
|
+
/**
|
|
217
|
+
* Capture screenshots at multiple viewport widths in a single browser session.
|
|
218
|
+
* Resizes the viewport between each capture.
|
|
219
|
+
*/
|
|
220
|
+
export declare function browserViewports(url: string, options: {
|
|
221
|
+
viewports: {
|
|
222
|
+
width: number;
|
|
223
|
+
height: number;
|
|
224
|
+
label?: string;
|
|
225
|
+
}[];
|
|
226
|
+
fullPage?: boolean;
|
|
227
|
+
format?: 'png' | 'jpeg';
|
|
228
|
+
quality?: number;
|
|
229
|
+
waitMs?: number;
|
|
230
|
+
timeoutMs?: number;
|
|
231
|
+
userAgent?: string;
|
|
232
|
+
headers?: Record<string, string>;
|
|
233
|
+
cookies?: string[];
|
|
234
|
+
stealth?: boolean;
|
|
235
|
+
scrollThrough?: boolean;
|
|
236
|
+
}): Promise<{
|
|
237
|
+
frames: {
|
|
238
|
+
width: number;
|
|
239
|
+
height: number;
|
|
240
|
+
label: string;
|
|
241
|
+
buffer: Buffer;
|
|
242
|
+
}[];
|
|
243
|
+
finalUrl: string;
|
|
244
|
+
}>;
|
|
245
|
+
export interface DesignAuditResult {
|
|
246
|
+
score: number;
|
|
247
|
+
colorScheme: 'light' | 'dark' | 'unknown';
|
|
248
|
+
spacingViolations: {
|
|
249
|
+
element: string;
|
|
250
|
+
property: string;
|
|
251
|
+
value: number;
|
|
252
|
+
nearestGridValue: number;
|
|
253
|
+
}[];
|
|
254
|
+
touchTargetViolations: {
|
|
255
|
+
element: string;
|
|
256
|
+
width: number;
|
|
257
|
+
height: number;
|
|
258
|
+
minRequired: number;
|
|
259
|
+
}[];
|
|
260
|
+
contrastViolations: {
|
|
261
|
+
element: string;
|
|
262
|
+
textColor: string;
|
|
263
|
+
bgColor: string;
|
|
264
|
+
ratio: number;
|
|
265
|
+
required: number;
|
|
266
|
+
bgResolved?: boolean;
|
|
267
|
+
}[];
|
|
268
|
+
typography: {
|
|
269
|
+
fontSizes: string[];
|
|
270
|
+
lineHeights: string[];
|
|
271
|
+
letterSpacings: string[];
|
|
272
|
+
};
|
|
273
|
+
spacingScale: number[];
|
|
274
|
+
accessibilityViolations: {
|
|
275
|
+
type: 'missing-alt' | 'missing-label' | 'missing-aria' | 'heading-skip' | 'empty-link' | 'empty-button';
|
|
276
|
+
element: string;
|
|
277
|
+
details: string;
|
|
278
|
+
}[];
|
|
279
|
+
headingStructure: string[];
|
|
280
|
+
summary: string;
|
|
281
|
+
}
|
|
282
|
+
/**
|
|
283
|
+
* Extract computed CSS values and validate against design rules.
|
|
284
|
+
* Returns structured JSON instead of pixel images.
|
|
285
|
+
*/
|
|
286
|
+
export declare function browserDesignAudit(url: string, options?: {
|
|
287
|
+
rules?: {
|
|
288
|
+
spacingGrid?: number;
|
|
289
|
+
minTouchTarget?: number;
|
|
290
|
+
minContrast?: number;
|
|
291
|
+
};
|
|
292
|
+
selector?: string;
|
|
293
|
+
width?: number;
|
|
294
|
+
height?: number;
|
|
295
|
+
waitMs?: number;
|
|
296
|
+
timeoutMs?: number;
|
|
297
|
+
userAgent?: string;
|
|
298
|
+
headers?: Record<string, string>;
|
|
299
|
+
cookies?: string[];
|
|
300
|
+
stealth?: boolean;
|
|
301
|
+
}): Promise<{
|
|
302
|
+
audit: DesignAuditResult;
|
|
303
|
+
finalUrl: string;
|
|
304
|
+
}>;
|
|
305
|
+
/**
|
|
306
|
+
* Extract structured visual design intelligence from a URL using a browser.
|
|
307
|
+
* Returns a DesignAnalysis object with effects, palette, layout, type scale,
|
|
308
|
+
* and quality signals.
|
|
309
|
+
*/
|
|
310
|
+
export declare function browserDesignAnalysis(url: string, options?: {
|
|
311
|
+
selector?: string;
|
|
312
|
+
width?: number;
|
|
313
|
+
height?: number;
|
|
314
|
+
waitMs?: number;
|
|
315
|
+
timeoutMs?: number;
|
|
316
|
+
userAgent?: string;
|
|
317
|
+
headers?: Record<string, string>;
|
|
318
|
+
cookies?: string[];
|
|
319
|
+
stealth?: boolean;
|
|
320
|
+
}): Promise<{
|
|
321
|
+
analysis: import('./design-analysis.js').DesignAnalysis;
|
|
322
|
+
finalUrl: string;
|
|
323
|
+
}>;
|