pocketsmith-mcp
Version:
MCP server for managing budgets via PocketSmith API
52 lines (51 loc) • 2.5 kB
TypeScript
/**
* @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;