@the_cfdude/productboard-mcp
Version:
Model Context Protocol server for Productboard REST API with dynamic tool loading
110 lines (109 loc) • 4.32 kB
TypeScript
/**
* Utilities for handling standardized parameters
*/
import { StandardListParams, StandardGetParams, DetailLevel, DetailFieldMappings, EnterpriseErrorInfo, OutputFormat, ResponseOptimizationParams, CustomFieldInclusion } from '../types/parameter-types.js';
/**
* Apply default values and validate list parameters
*/
export declare function normalizeListParams(params?: StandardListParams): StandardListParams & {
limit: number;
startWith: number;
detail: DetailLevel;
includeSubData: boolean;
fields: string[];
exclude: string[];
validateFields: boolean;
outputFormat: OutputFormat;
truncateFields: string[];
truncateIndicator: string;
includeDescription: boolean;
includeCustomFields: CustomFieldInclusion;
includeCustomFieldsStrategy: CustomFieldInclusion;
includeLinks: boolean;
includeEmpty: boolean;
includeMetadata: boolean;
};
/**
* Apply default values and validate get parameters
*/
export declare function normalizeGetParams(params?: StandardGetParams): StandardGetParams & {
detail: DetailLevel;
includeSubData: boolean;
fields: string[];
exclude: string[];
validateFields: boolean;
outputFormat: OutputFormat;
truncateFields: string[];
truncateIndicator: string;
includeDescription: boolean;
includeCustomFields: CustomFieldInclusion;
includeCustomFieldsStrategy: CustomFieldInclusion;
includeLinks: boolean;
includeEmpty: boolean;
includeMetadata: boolean;
};
/**
* Filter response data based on detail level
*/
export declare function filterByDetailLevel<T extends Record<string, any>>(data: T, entityType: keyof typeof DetailFieldMappings, detailLevel: DetailLevel, fields?: string[], exclude?: string[], outputFormat?: OutputFormat, optimization?: ResponseOptimizationParams): Partial<T> | string;
/**
* Filter object by specific fields, supporting dot notation for nested fields
*/
/**
* @deprecated Use fieldSelector.selectFields() from field-selection.ts instead
* Legacy field filtering function - kept for backward compatibility
*/
export declare function filterByFields<T extends Record<string, any>>(data: T, fields: string[]): Partial<T>;
/**
* Filter object by excluding specific fields
*/
/**
* @deprecated Use fieldSelector.selectFields() with exclude option from field-selection.ts instead
* Legacy field exclusion function - kept for backward compatibility
*/
export declare function filterByExclusion<T extends Record<string, any>>(data: T, excludeFields: string[]): Partial<T>;
/**
* Validate field names against entity schema and return suggestions
*/
export declare function validateFieldNames(entityType: keyof typeof DetailFieldMappings, requestedFields: string[]): {
valid: string[];
invalid: string[];
suggestions: Array<{
field: string;
suggestion: string;
}>;
};
/**
* Filter array of items by detail level
*/
export declare function filterArrayByDetailLevel<T extends Record<string, any>>(data: T[], entityType: keyof typeof DetailFieldMappings, detailLevel: DetailLevel, fields?: string[], exclude?: string[], outputFormat?: OutputFormat, optimization?: ResponseOptimizationParams): (Partial<T> | string)[];
/**
* Check if error is due to enterprise feature limitation
*/
export declare function isEnterpriseError(error: any): EnterpriseErrorInfo;
/**
* Convert old pagination params to new format
*/
export declare function convertPaginationParams(params: any): {
limit?: number;
startWith?: number;
};
/**
* Format response data according to the specified output format
*/
export declare function formatResponse<T>(data: T, format: OutputFormat | undefined, entityType: string): string | T;
/**
* Response Optimization Functions
*/
/**
* Optimize response data using truncation and conditional inclusion
*/
export declare function optimizeResponse<T>(data: T, optimization?: ResponseOptimizationParams): T;
/**
* Truncate a single field with word preservation
*/
export declare function truncateField(value: string, maxLength: number, indicator?: string, preserveWords?: boolean): string;
/**
* Normalize optimization parameters with defaults and validation
*/
export declare function normalizeOptimizationParams(params?: ResponseOptimizationParams): ResponseOptimizationParams;