UNPKG

browse

Version:

Unified Browserbase CLI for browser automation and cloud APIs.

49 lines (48 loc) 1.52 kB
import { z } from "zod"; import { DriverCommandNameSchema } from "../commands/types.js"; const RequestBaseSchema = z.object({ id: z.string().min(1), }); export const OpenRequestSchema = RequestBaseSchema.extend({ type: z.literal("open"), timeoutMs: z.number().int().positive().optional(), url: z.string().min(1), waitUntil: z.enum(["load", "domcontentloaded", "networkidle"]).optional(), }); export const CommandRequestSchema = RequestBaseSchema.extend({ command: DriverCommandNameSchema, params: z.unknown().optional(), type: z.literal("command"), }); export const StatusRequestSchema = RequestBaseSchema.extend({ type: z.literal("status"), }); export const StopRequestSchema = RequestBaseSchema.extend({ type: z.literal("stop"), }); export const RequestSchema = z.discriminatedUnion("type", [ OpenRequestSchema, CommandRequestSchema, StatusRequestSchema, StopRequestSchema, ]); export const SuccessResponseSchema = z.object({ data: z.unknown(), id: z.string(), type: z.literal("success"), }); export const ErrorResponseSchema = z.object({ error: z.string(), id: z.string().optional(), type: z.literal("error"), }); export const ResponseSchema = z.discriminatedUnion("type", [ SuccessResponseSchema, ErrorResponseSchema, ]); export function parseRequest(line) { return RequestSchema.parse(JSON.parse(line)); } export function serializeResponse(response) { return `${JSON.stringify(ResponseSchema.parse(response))}\n`; }