// author: simon-pierre boucher import { z } from "zod"; export const OutputFormatSchema = z.enum([ "markdown", "html", "rawHtml", "links", "screenshot", "structured", "extract", ]); export const ScrapeRequestSchema = z .object({ url: z.string().url(), formats: z.array(OutputFormatSchema).default(["markdown"]), tier: z.enum(["auto", "http", "webkit", "safari"]).default("auto"), onlyMainContent: z.boolean().default(true), includeTags: z.array(z.string()).optional(), excludeTags: z.array(z.string()).optional(), waitFor: z.number().int().min(0).max(60_000).default(0), timeout: z.number().int().min(1_000).max(120_000).default(30_000), maxAge: z.number().int().min(0).default(0), headers: z.record(z.string()).optional(), maxBytes: z.number().int().min(1).optional(), respectRobots: z.boolean().default(true), }) .strict(); export type ScrapeRequest = z.infer; export const MapRequestSchema = z .object({ url: z.string().url(), search: z.string().optional(), limit: z.number().int().min(1).max(50_000).default(5_000), includeSubdomains: z.boolean().default(false), sitemapOnly: z.boolean().default(false), ignoreSitemap: z.boolean().default(false), }) .strict(); export type MapRequest = z.infer;