From f4a49bc1d189ccb1b26b83605d97fb1c46aaf264 Mon Sep 17 00:00:00 2001 From: Nicolas Date: Fri, 30 Aug 2024 13:49:16 -0300 Subject: [PATCH] Update types.ts --- apps/api/src/controllers/v1/types.ts | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/apps/api/src/controllers/v1/types.ts b/apps/api/src/controllers/v1/types.ts index 7774823a..fcca8186 100644 --- a/apps/api/src/controllers/v1/types.ts +++ b/apps/api/src/controllers/v1/types.ts @@ -68,18 +68,28 @@ export const scrapeOptions = z.object({ includeTags: z.string().array().optional(), excludeTags: z.string().array().optional(), onlyMainContent: z.boolean().default(true), - timeout: z.number().int().positive().finite().safe().default(30000), // default? + timeout: z.number().int().positive().finite().safe().default(30000), waitFor: z.number().int().nonnegative().finite().safe().default(0), extract: extractOptions.optional(), parsePDF: z.boolean().default(true), -}).strict(strictMessage); +}).strict(strictMessage) + export type ScrapeOptions = z.infer; export const scrapeRequestSchema = scrapeOptions.extend({ url, origin: z.string().optional().default("api"), -}).strict(strictMessage); +}).strict(strictMessage).refine( + (obj) => { + const hasExtractFormat = obj.formats?.includes("extract"); + const hasExtractOptions = obj.extract !== undefined; + return (hasExtractFormat && hasExtractOptions) || (!hasExtractFormat && !hasExtractOptions); + }, + { + message: "When 'extract' format is specified, 'extract' options must be provided, and vice versa", + } +); // export type ScrapeRequest = { // url: string;