Skip to main content
Glama
regex-search.ts1.51 kB
import type {ServerContext} from '../../../context.js'; import {loadActiveFrameworkData} from '../../../services/framework-loader.js'; import type {HierarchicalSearchResult} from '../types.js'; export const performRegexSearch = async ( context: ServerContext, query: string, frameworkName: string, maxResults: number, ): Promise<HierarchicalSearchResult[]> => { const {client} = context; const results: HierarchicalSearchResult[] = []; try { const framework = await loadActiveFrameworkData(context); // Create fuzzy regex pattern from query const escapedQuery = query.replaceAll(/[.*+?^${}()|[\]\\]/g, String.raw`\$&`); const fuzzyPattern = [...escapedQuery].join('.*?'); const regex = new RegExp(fuzzyPattern, 'i'); for (const [id, ref] of Object.entries(framework.references)) { if (results.length >= maxResults) { break; } const title = ref.title ?? ''; const url = ref.url ?? ''; const abstractText = client.extractText(ref.abstract ?? []); if (regex.test(title) || regex.test(url) || regex.test(abstractText)) { results.push({ title: ref.title ?? 'Symbol', framework: frameworkName, path: ref.url, description: abstractText, kind: ref.kind, platforms: client.formatPlatforms(ref.platforms ?? framework.metadata.platforms), foundVia: 'regex', }); } } } catch (error) { console.warn(`Regex search failed for ${frameworkName}:`, error instanceof Error ? error.message : String(error)); } return results; };

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/MightyDillah/apple-doc-mcp'

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