UNPKG

pocketsmith-mcp

Version:

MCP server for managing budgets via PocketSmith API

52 lines (51 loc) 2.5 kB
/** * @fileoverview Reusable schema helpers for nullable PocketSmith API fields */ import { z } from "zod"; /** * Creates a nullable field schema that accepts both the type and null */ export declare const createNullableField: <T extends z.ZodTypeAny>(baseType: T, description: string) => z.ZodUnion<[T, z.ZodNull]>; /** * Creates an optional nullable field schema */ export declare const createOptionalNullableField: <T extends z.ZodTypeAny>(baseType: T, description: string) => z.ZodOptional<z.ZodUnion<[T, z.ZodNull]>>; /** * Common nullable field definitions used across PocketSmith tools */ export declare const NULLABLE_FIELDS: { parent_id: z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodNull]>>; category_id: z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodNull]>>; colour: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNull]>>; note: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNull]>>; memo: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNull]>>; safe_balance: z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodNull]>>; current_balance_exchange_rate: z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodNull]>>; safe_balance_in_base_currency: z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodNull]>>; updated_at: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNull]>>; created_at: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNull]>>; symbol: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNull]>>; description: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNull]>>; number: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNull]>>; }; /** * Required nullable fields (not optional, but can be null) */ export declare const REQUIRED_NULLABLE_FIELDS: { parent_id: z.ZodUnion<[z.ZodNumber, z.ZodNull]>; colour: z.ZodUnion<[z.ZodString, z.ZodNull]>; note: z.ZodUnion<[z.ZodString, z.ZodNull]>; memo: z.ZodUnion<[z.ZodString, z.ZodNull]>; safe_balance: z.ZodUnion<[z.ZodNumber, z.ZodNull]>; current_balance_exchange_rate: z.ZodUnion<[z.ZodNumber, z.ZodNull]>; safe_balance_in_base_currency: z.ZodUnion<[z.ZodNumber, z.ZodNull]>; number: z.ZodUnion<[z.ZodString, z.ZodNull]>; }; /** * Helper function to clean up data to match nullable schemas */ export declare function cleanNullableFields<T extends Record<string, unknown>>(data: T, fieldNames: (keyof T)[]): T; /** * Helper to validate that nullable fields are properly handled */ export declare function validateNullableField(value: unknown, field: string, allowNull?: boolean): unknown;