Skip to main content
Glama
validateOrganization.ts2.09 kB
import type { Organization, OrganizationAPI } from '@/types/organization.types'; import { validateArray } from './validateArray'; import { validateString } from './validateString'; export type OrganizationFields = (keyof Organization)[]; const defaultFieldsToCheck: OrganizationFields = [ 'name', 'membersIds', 'adminsIds', ]; type FieldsToCheck = (typeof defaultFieldsToCheck)[number]; type ValidationErrors = Partial< Record<(typeof defaultFieldsToCheck)[number], string[]> >; export const NAME_MIN_LENGTH = 4; export const NAME_MAX_LENGTH = 100; export const MEMBERS_MIN_LENGTH = 1; /** * Validates an organization object. * @param organization The organization object to validate. * @returns An object containing the validation errors for each field. */ export const validateOrganization = ( organization: Partial<Organization | OrganizationAPI>, fieldsToCheck = defaultFieldsToCheck ): ValidationErrors => { const errors: ValidationErrors = {}; const organizationObject = JSON.parse(JSON.stringify(organization)); // Define the fields to validate const fieldsToValidate = new Set<FieldsToCheck>(fieldsToCheck); // Validate each field for (const field of fieldsToValidate) { const value = organizationObject[field]; // Initialize error array for the field errors[field] = []; // Check for name validity if (field === 'name') { const nameErrors = validateString( value, 'Name', NAME_MIN_LENGTH, NAME_MAX_LENGTH ); if (nameErrors.length > 0) { errors[field] = nameErrors; } } if (field === 'membersIds' || field === 'adminsIds') { const membersErrors = validateArray<string>( value as unknown as string[], 'Members', 'string', undefined, MEMBERS_MIN_LENGTH ); if (membersErrors.length > 0) { errors[field] = membersErrors; } } // Remove the error field if there are no errors if (errors[field].length === 0) { delete errors[field]; } } return errors; };

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/aymericzip/intlayer'

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