UNPKG

@kimsungwhee/apple-docs-mcp

Version:

MCP server for Apple Developer Documentation - Search iOS/macOS/SwiftUI/UIKit docs, WWDC videos, Swift/Objective-C APIs & code examples in Claude, Cursor & AI assistants

182 lines 6.04 kB
/** * WWDC video topic classification mapping */ // Standard topic categories (based on Apple's official categories) export const STANDARD_TOPICS = [ 'Accessibility & Inclusion', 'App Services', 'App Store, Distribution & Marketing', 'Audio & Video', 'Business & Education', 'Design', 'Developer Tools', 'Essentials', 'Graphics & Games', 'Health & Fitness', 'Maps & Location', 'Machine Learning & AI', 'Photos & Camera', 'Privacy & Security', 'Safari & Web', 'Spatial Computing', 'Swift', 'SwiftUI & UI Frameworks', 'System Services', ]; // Keywords to topic mapping const TOPIC_KEYWORDS = { // Accessibility & Inclusion 'accessibility': ['Accessibility & Inclusion'], 'voiceover': ['Accessibility & Inclusion'], 'inclusion': ['Accessibility & Inclusion'], 'assistive': ['Accessibility & Inclusion'], // App Services 'cloudkit': ['App Services'], 'push notification': ['App Services'], 'app intents': ['App Services'], 'siri': ['App Services'], 'widgets': ['App Services'], 'app shortcuts': ['App Services'], // App Store, Distribution & Marketing 'app store': ['App Store, Distribution & Marketing'], 'testflight': ['App Store, Distribution & Marketing'], 'app review': ['App Store, Distribution & Marketing'], 'marketing': ['App Store, Distribution & Marketing'], 'app analytics': ['App Store, Distribution & Marketing'], // Audio & Video 'avfoundation': ['Audio & Video'], 'audio': ['Audio & Video'], 'video': ['Audio & Video'], 'media': ['Audio & Video'], 'streaming': ['Audio & Video'], 'hls': ['Audio & Video'], // Business & Education 'business': ['Business & Education'], 'education': ['Business & Education'], 'classroom': ['Business & Education'], 'enterprise': ['Business & Education'], // Design 'design': ['Design'], 'ui': ['Design', 'SwiftUI & UI Frameworks'], 'ux': ['Design'], 'human interface': ['Design'], 'sf symbols': ['Design'], // Developer Tools 'xcode': ['Developer Tools'], 'swift package': ['Developer Tools'], 'instruments': ['Developer Tools'], 'debugging': ['Developer Tools'], 'testing': ['Developer Tools'], 'swift testing': ['Developer Tools', 'Swift'], // Graphics & Games 'metal': ['Graphics & Games'], 'game': ['Graphics & Games'], 'graphics': ['Graphics & Games'], 'realitykit': ['Graphics & Games', 'Spatial Computing'], 'scenekit': ['Graphics & Games'], // Health & Fitness 'healthkit': ['Health & Fitness'], 'workout': ['Health & Fitness'], 'carekit': ['Health & Fitness'], 'researchkit': ['Health & Fitness'], // Machine Learning & AI 'machine learning': ['Machine Learning & AI'], 'ml': ['Machine Learning & AI'], 'core ml': ['Machine Learning & AI'], 'create ml': ['Machine Learning & AI'], 'ai': ['Machine Learning & AI'], 'intelligence': ['Machine Learning & AI'], // Maps & Location 'mapkit': ['Maps & Location'], 'location': ['Maps & Location'], 'maps': ['Maps & Location'], 'core location': ['Maps & Location'], // Photos & Camera 'photos': ['Photos & Camera'], 'camera': ['Photos & Camera'], 'image': ['Photos & Camera'], 'photokit': ['Photos & Camera'], // Privacy & Security 'privacy': ['Privacy & Security'], 'security': ['Privacy & Security'], 'keychain': ['Privacy & Security'], 'encryption': ['Privacy & Security'], // Safari & Web 'safari': ['Safari & Web'], 'webkit': ['Safari & Web'], 'web': ['Safari & Web'], 'javascript': ['Safari & Web'], 'wkwebview': ['Safari & Web'], // Spatial Computing 'visionos': ['Spatial Computing'], 'spatial': ['Spatial Computing'], 'ar': ['Spatial Computing'], 'arkit': ['Spatial Computing'], 'reality': ['Spatial Computing'], // Swift 'swift': ['Swift'], 'swiftdata': ['Swift'], 'concurrency': ['Swift'], 'async': ['Swift'], 'actor': ['Swift'], // SwiftUI & UI Frameworks 'swiftui': ['SwiftUI & UI Frameworks'], 'uikit': ['SwiftUI & UI Frameworks'], 'appkit': ['SwiftUI & UI Frameworks'], 'catalyst': ['SwiftUI & UI Frameworks'], // System Services 'foundation': ['System Services'], 'core data': ['System Services'], 'file system': ['System Services'], 'networking': ['System Services'], 'background': ['System Services'], }; /** * Infer topic categories based on video title and content */ export function inferTopics(title, description) { const topics = new Set(); const searchText = `${title} ${description || ''}`.toLowerCase(); // Iterate through all keywords for (const [keyword, mappedTopics] of Object.entries(TOPIC_KEYWORDS)) { if (searchText.includes(keyword.toLowerCase())) { mappedTopics.forEach(topic => topics.add(topic)); } } // If no topics found, return Essentials as default if (topics.size === 0) { topics.add('Essentials'); } return Array.from(topics); } /** * Validate if a topic is a standard topic */ export function isStandardTopic(topic) { return STANDARD_TOPICS.includes(topic); } /** * Normalize topic name to standard format */ export function normalizeTopicName(topic) { // First check if it's already a standard topic if (isStandardTopic(topic)) { return topic; } // Try exact match (case-insensitive) const lowerTopic = topic.toLowerCase(); for (const standardTopic of STANDARD_TOPICS) { if (standardTopic.toLowerCase() === lowerTopic) { return standardTopic; } } // Try partial match for (const standardTopic of STANDARD_TOPICS) { if (standardTopic.toLowerCase().includes(lowerTopic) || lowerTopic.includes(standardTopic.toLowerCase())) { return standardTopic; } } return null; } //# sourceMappingURL=topic-mapper.js.map