Skip to main content
Glama

Context Pods

by conorluddy
builders.tsโ€ข6.15 kB
/** * Test data builders for Context-Pods tests */ import type { TemplateMetadata, TemplateVariable } from '@context-pods/core'; interface TemplateOverrides { name?: string; description?: string; language?: string; variables?: TemplateVariable[]; optimization?: { turboRepo?: boolean; hotReload?: boolean; }; } interface MetadataOverrides { name?: string; description?: string; version?: string; language?: string; variables?: TemplateVariable[]; optimization?: { turboRepo?: boolean; hotReload?: boolean; }; files?: string[]; } interface VariableOverrides { name?: string; description?: string; type?: 'string' | 'number' | 'boolean'; required?: boolean; default?: unknown; pattern?: string; enum?: string[]; } interface ServerConfig { name: string; description: string; path: string; status: 'building' | 'ready' | 'failed'; language: string; error?: string; createdAt: Date; updatedAt: Date; } interface ServerConfigOverrides { name?: string; description?: string; path?: string; status?: 'building' | 'ready' | 'failed'; language?: string; createdAt?: Date; updatedAt?: Date; } /** * Builder for template test data */ export const templateBuilder = { /** * Create a basic template with optional overrides */ basic: (overrides: TemplateOverrides = {}): TemplateMetadata => ({ name: overrides.name ?? 'test-template', description: overrides.description ?? 'Test template for unit tests', version: '1.0.0', language: overrides.language ?? 'typescript', variables: overrides.variables ?? [], optimization: overrides.optimization ?? { turboRepo: false, hotReload: false, }, files: [], }), /** * Create a template with variables */ withVariables: (variables: TemplateVariable[]): TemplateMetadata => ({ name: 'test-template-with-vars', description: 'Test template with variables', version: '1.0.0', language: 'typescript', variables, optimization: { turboRepo: false, hotReload: false, }, files: [], }), /** * Create a TypeScript template optimized for TurboRepo */ typescriptOptimized: (): TemplateMetadata => ({ name: 'typescript-advanced', description: 'Advanced TypeScript template with TurboRepo optimization', version: '1.0.0', language: 'typescript', variables: [ { name: 'serverName', description: 'The name of your MCP server', type: 'string', required: true, pattern: '^[a-z][a-z0-9-]*$', }, { name: 'serverDescription', description: 'A brief description of your server', type: 'string', required: true, }, ], optimization: { turboRepo: true, hotReload: true, }, files: ['package.json.mustache', 'src/index.ts.mustache', 'tsconfig.json.mustache'], }), /** * Create a Python template */ python: (): TemplateMetadata => ({ name: 'python-basic', description: 'Basic Python MCP server template', version: '1.0.0', language: 'python', variables: [ { name: 'serverName', description: 'The name of your MCP server', type: 'string', required: true, }, ], optimization: { turboRepo: false, hotReload: false, }, files: ['main.py.mustache', 'requirements.txt.mustache'], }), }; /** * Builder for template metadata test data */ export const metadataBuilder = { /** * Create basic metadata with optional overrides */ basic: (overrides: MetadataOverrides = {}): TemplateMetadata => ({ name: overrides.name ?? 'test-metadata', description: overrides.description ?? 'Test metadata', version: overrides.version ?? '1.0.0', language: overrides.language ?? 'typescript', variables: overrides.variables ?? [], optimization: overrides.optimization ?? { turboRepo: false, hotReload: false, }, files: overrides.files ?? [], }), }; /** * Builder for template variable test data */ export const variableBuilder = { /** * Create a basic string variable */ string: (overrides: VariableOverrides = {}): TemplateVariable => ({ name: overrides.name ?? 'testVar', description: overrides.description ?? 'Test variable', type: 'string', required: overrides.required ?? false, default: overrides.default ?? undefined, pattern: overrides.pattern, enum: overrides.enum, }), /** * Create a required variable */ required: (name: string, description: string): TemplateVariable => ({ name, description, type: 'string', required: true, }), /** * Create a variable with enum values */ enum: (name: string, values: string[]): TemplateVariable => ({ name, description: `Select one of: ${values.join(', ')}`, type: 'string', required: true, enum: values, }), }; /** * Builder for server configuration test data */ export const serverConfigBuilder = { /** * Create a basic server configuration */ basic: (overrides: ServerConfigOverrides = {}): ServerConfig => ({ name: overrides.name ?? 'test-server', description: overrides.description ?? 'Test MCP server', path: overrides.path ?? '/path/to/test-server', status: overrides.status ?? 'ready', language: overrides.language ?? 'typescript', createdAt: overrides.createdAt ?? new Date(), updatedAt: overrides.updatedAt ?? new Date(), }), /** * Create a server in building status */ building: (name: string): ServerConfig => ({ name, description: 'MCP server being built', path: `/generated/${name}`, status: 'building' as const, language: 'typescript', createdAt: new Date(), updatedAt: new Date(), }), /** * Create a failed server */ failed: (name: string, error: string): ServerConfig => ({ name, description: 'Failed MCP server', path: `/generated/${name}`, status: 'failed' as const, language: 'typescript', error, createdAt: new Date(), updatedAt: new Date(), }), };

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/conorluddy/ContextPods'

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