/** * Validation Module * * Runtime validation utilities for adapter contracts and test specifications. * Helps developers catch contract violations early with detailed error messages. * * @module @wavespec/kit/validation * * @example Validate adapter contract * ```typescript * import { validateAdapterContract } from "@wavespec/kit/validation"; * * const result = validateAdapterContract(myAdapter); * if (!result.valid) { * console.error("Adapter validation failed:"); * result.errors.forEach(err => console.error(` - ${err}`)); * } * ``` * * @example Validate test spec * ```typescript * import { validateTestSpec } from "@wavespec/kit/validation"; * * const result = validateTestSpec({ * name: "Test API call", * operation: "call", * params: { target: "echo" }, * assertions: [{ type: "success" }] * }); * * if (!result.valid) { * result.errors.forEach(err => console.error(err)); * } * ``` * * @example Use type guards * ```typescript * import { isAdapter, isValidTestSpec } from "@wavespec/kit/validation"; * * if (isAdapter(obj)) { * // TypeScript knows obj is an Adapter * await obj.run(spec, ctx); * } * * if (isValidTestSpec(spec)) { * // TypeScript knows spec is a TestSpec * console.log(spec.name); * } * ``` */ // Adapter contract validation export { validateAdapterContract, isAdapter, type ValidationResult, } from "./adapter-contract.js"; // Test spec validation export { validateTestSpec, validateSuiteConfig, validateSuiteSpec, isValidTestSpec, isValidSuiteConfig, isValidSuiteSpec, } from "./test-spec.js"; // Zod schemas for advanced usage export { TestSpecSchema, SuiteConfigSchema, SuiteSpecSchema, type TestSpecSchemaType, type SuiteConfigSchemaType, type SuiteSpecSchemaType, } from "./schemas.js";