@xynehq/jaf
Version:
Juspay Agent Framework - A purely functional agent framework with immutable state and composable tools
85 lines • 4.21 kB
TypeScript
/**
* JAF ADK Layer - Schema Validation
*
* Functional schema validation system
*/
import { SchemaValidator, ValidationResult, JsonSchema, TypeGuard } from '../types';
export { createValidationError } from '../types';
export declare const createSchemaValidator: <T>(schema: JsonSchema, validator: TypeGuard<T>) => SchemaValidator<T>;
export declare const validateAgainstJsonSchema: (data: unknown, schema: JsonSchema) => ValidationResult<unknown>;
export declare const isString: TypeGuard<string>;
export declare const isNumber: TypeGuard<number>;
export declare const isBoolean: TypeGuard<boolean>;
export declare const isObject: TypeGuard<Record<string, unknown>>;
export declare const isArray: TypeGuard<unknown[]>;
export declare const isNull: TypeGuard<null>;
export declare const isUndefined: TypeGuard<undefined>;
export declare const stringSchema: (options?: {
description?: string;
enum?: string[];
default?: string;
}) => JsonSchema;
export declare const numberSchema: (options?: {
description?: string;
enum?: number[];
default?: number;
}) => JsonSchema;
export declare const booleanSchema: (options?: {
description?: string;
default?: boolean;
}) => JsonSchema;
export declare const objectSchema: (properties: Record<string, JsonSchema>, required?: string[], options?: {
description?: string;
}) => JsonSchema;
export declare const arraySchema: (items: JsonSchema, options?: {
description?: string;
}) => JsonSchema;
export declare const createStringValidator: (options?: {
description?: string;
enum?: string[];
default?: string;
}) => SchemaValidator<string>;
export declare const createNumberValidator: (options?: {
description?: string;
enum?: number[];
default?: number;
}) => SchemaValidator<number>;
export declare const createBooleanValidator: (options?: {
description?: string;
default?: boolean;
}) => SchemaValidator<boolean>;
export declare const createObjectValidator: <T extends Record<string, unknown>>(properties: Record<string, JsonSchema>, required?: string[], typeGuard?: TypeGuard<T>) => SchemaValidator<T>;
export declare const createArrayValidator: <T extends unknown[]>(items: JsonSchema, typeGuard?: TypeGuard<T>) => SchemaValidator<T>;
export declare const isOptional: <T>(guard: TypeGuard<T>) => TypeGuard<T | undefined>;
export declare const isNullable: <T>(guard: TypeGuard<T>) => TypeGuard<T | null>;
export declare const isUnion: <T>(...guards: TypeGuard<any>[]) => TypeGuard<T>;
export declare const hasProperty: <K extends string>(key: K) => TypeGuard<Record<K, unknown>>;
export declare const hasProperties: <K extends string>(...keys: K[]) => TypeGuard<Record<K, unknown>>;
export declare const validateInput: <T>(validator: SchemaValidator<T>, data: unknown) => ValidationResult<T>;
export declare const validateOutput: <T>(validator: SchemaValidator<T>, data: unknown) => ValidationResult<T>;
export declare const assertValid: <T>(validator: SchemaValidator<T>, data: unknown) => T;
export declare const isValid: <T>(validator: SchemaValidator<T>, data: unknown) => data is T;
export declare const transformAndValidate: <T, U>(validator: SchemaValidator<U>, transformer: (input: T) => U, data: T) => ValidationResult<U>;
export declare const validateAndTransform: <T, U>(inputValidator: SchemaValidator<T>, transformer: (input: T) => U, data: unknown) => ValidationResult<U>;
export interface WeatherQuery {
location: string;
units?: 'celsius' | 'fahrenheit';
includeHourly?: boolean;
[key: string]: unknown;
}
export declare const weatherQueryValidator: SchemaValidator<WeatherQuery>;
export interface WeatherResponse {
location: string;
temperature: number;
condition: string;
humidity: number;
forecast?: Array<{
time: string;
temperature: number;
condition: string;
}>;
[key: string]: unknown;
}
export declare const weatherResponseValidator: SchemaValidator<WeatherResponse>;
export declare const withSchemaValidation: <T extends unknown[], R>(fn: (...args: T) => R, inputValidators?: SchemaValidator<unknown>[], outputValidator?: SchemaValidator<R>) => (...args: T) => R;
//# sourceMappingURL=index.d.ts.map