import type { ErrorObject } from "ajv"; import { ErrorCodes, errorShape, formatValidationErrors } from "../protocol/index.js"; import type { RespondFn } from "./types.js"; export type Validator = ((params: unknown) => params is T) & { errors?: ErrorObject[] | null; }; export function assertValidParams( params: unknown, validate: Validator, method: string, respond: RespondFn, ): params is T { if (validate(params)) { return true; } respond( false, undefined, errorShape( ErrorCodes.INVALID_REQUEST, `invalid ${method} params: ${formatValidationErrors(validate.errors)}`, ), ); return false; }