Skip to main content
Glama
field-mapping-constants.ts2.21 kB
/** * Shared utility for creating field mapping constants * Created for Issue #720 to ensure consistent field mapping patterns across resource types */ export interface DisplayNameConstants { readonly [key: string]: string; } export interface PluralMappingConstants { readonly [key: string]: string; } /** * Creates standardized display name constants for field mappings * @param displayNames Object mapping constant keys to display names * @returns Readonly object with display name constants */ export function createDisplayNameConstants<T extends Record<string, string>>( displayNames: T ): Readonly<T> { return Object.freeze(displayNames) as Readonly<T>; } /** * Creates standardized plural mapping constants for field mappings * @param pluralMappings Object mapping plural field names to singular API field names * @returns Readonly object with plural mapping constants */ export function createPluralMappingConstants<T extends Record<string, string>>( pluralMappings: T ): Readonly<T> { return Object.freeze(pluralMappings) as Readonly<T>; } /** * Utility to validate field mapping constants for consistency * @param displayNames Display name constants object * @param pluralMappings Plural mapping constants object * @returns Validation result with any inconsistencies found */ export function validateFieldMappingConstants( displayNames: DisplayNameConstants, pluralMappings: PluralMappingConstants ): { valid: boolean; issues: string[]; } { const issues: string[] = []; // Check for empty objects if (Object.keys(displayNames).length === 0) { issues.push('Display names object is empty'); } if (Object.keys(pluralMappings).length === 0) { issues.push('Plural mappings object is empty'); } // Check for potential conflicts between display names and plural mappings const displayValues = Object.values(displayNames); const pluralKeys = Object.keys(pluralMappings); for (const pluralKey of pluralKeys) { if (displayValues.includes(pluralKey)) { issues.push( `Potential conflict: plural key "${pluralKey}" matches a display name value` ); } } return { valid: issues.length === 0, issues, }; }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/kesslerio/attio-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server