Skip to main content
Glama
file-discovery.ts1.96 kB
import { GitHubClient } from './github-client.js'; import type { GitHubTreeItem } from './types.js'; export class FileDiscovery { private client: GitHubClient; constructor() { this.client = new GitHubClient(); } /** * Check if a file path should be skipped based on version filtering */ private shouldSkipVersionedFile(path: string): boolean { // Skip old version directories (v51.0.0, v52.0.0, v53.0.0) but keep unversioned return /versions\/v(51|52|53)\./.test(path); } /** * Check if a file is an MDX file in the docs/pages directory */ private isMdxFile(item: GitHubTreeItem): boolean { return ( item.type === 'blob' && item.path.startsWith('docs/pages/') && item.path.endsWith('.mdx') ); } /** * Discover all relevant MDX files using GitHub Trees API for a specific version */ async discoverMdxFiles(version = 'latest'): Promise<GitHubTreeItem[]> { console.log(`🔍 Discovering MDX files from GitHub for version ${version}...`); const treeResponse = await this.client.getRepositoryTree(version); if (treeResponse.truncated) { console.warn('⚠️ Repository tree was truncated. Some files may be missing.'); } const mdxFiles = treeResponse.tree .filter(item => this.isMdxFile(item)) .filter(item => !this.shouldSkipVersionedFile(item.path)); console.log(`✅ Found ${mdxFiles.length} MDX files to download for version ${version}`); // For versioned requests, we don't skip versioned files as we want that specific version if (version === 'latest') { const skippedVersions = treeResponse.tree .filter(item => this.isMdxFile(item)) .filter(item => this.shouldSkipVersionedFile(item.path)) .length; if (skippedVersions > 0) { console.log(`📝 Skipped ${skippedVersions} files from old versions (v51, v52, v53)`); } } return mdxFiles; } }

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/jaksm/expo-docs-mcp'

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