SYMBOL INDEX (186 symbols across 32 files) FILE: MCP/bin/install.js function getCursorConfigPath (line 14) | function getCursorConfigPath() { function getPackagePath (line 31) | function getPackagePath() { function updateMcpConfig (line 37) | function updateMcpConfig() { function verifyInstallation (line 88) | function verifyInstallation() { function showUsageInstructions (line 127) | function showUsageInstructions(configFile) { function main (line 161) | async function main() { FILE: MCP/debug-interactive.js function showPrompt (line 40) | function showPrompt() { function sendCommand (line 110) | function sendCommand(command) { FILE: MCP/debug-local.js constant DEBUG (line 20) | const DEBUG = true; class IcssDebugServer (line 27) | class IcssDebugServer { method constructor (line 28) | constructor() { method setupDatabase (line 53) | setupDatabase() { method loadSearchIndex (line 69) | loadSearchIndex() { method waitForReady (line 146) | async waitForReady(timeout = 10000) { method setupHandlers (line 168) | setupHandlers() { method searchCssTechniques (line 241) | async searchCssTechniques({ query, categories = [], tags = [], min_wei... method extractPreview (line 322) | extractPreview(body, maxLength = 200) { method run (line 338) | async run() { method cleanup (line 359) | cleanup() { FILE: MCP/debug-query.js function queryServer (line 72) | function queryServer(command) { function runTests (line 144) | async function runTests() { FILE: MCP/debug.js class DebugTester (line 8) | class DebugTester { method constructor (line 9) | constructor() { method init (line 15) | async init() { method loadSearchIndex (line 32) | async loadSearchIndex() { method testSearchFunction (line 64) | async testSearchFunction(query = "透明 边框") { method testSpecificArticle (line 104) | async testSpecificArticle(issueNumber = 1) { method testCategories (line 136) | async testCategories() { method close (line 181) | close() { function runDebugTests (line 190) | async function runDebugTests() { FILE: MCP/diagnose-mcp.js function checkCursorConfigs (line 10) | function checkCursorConfigs() { function checkServerExecutability (line 50) | function checkServerExecutability() { function testMCPProtocol (line 76) | function testMCPProtocol() { function generateCorrectConfig (line 136) | function generateCorrectConfig() { function provideTroubleshootingTips (line 190) | function provideTroubleshootingTips() { function runDiagnosis (line 210) | async function runDiagnosis() { FILE: MCP/scripts/fetch-inspiration.js class InspirationFetcher (line 13) | class InspirationFetcher { method constructor (line 14) | constructor() { method initializeDatabase (line 60) | initializeDatabase() { method fetchDirectoryContents (line 122) | async fetchDirectoryContents(category) { method fetchFileContent (line 146) | async fetchFileContent(filePath) { method parseMarkdownContent (line 162) | parseMarkdownContent(content, category, filename) { method generateTags (line 245) | generateTags(title, description, cssContent, category) { method assessDifficulty (line 277) | assessDifficulty(cssContent, htmlContent) { method assessBrowserSupport (line 306) | assessBrowserSupport(cssContent) { method saveToDatabase (line 334) | async saveToDatabase(category, filename, parsedContent) { method extractAndSaveCodeSnippets (line 382) | async extractAndSaveCodeSnippets(inspirationId, htmlContent, cssConten... method generateCompleteDemo (line 433) | async generateCompleteDemo(inspirationId, title, htmlContent, cssConte... method fetchAllInspirations (line 488) | async fetchAllInspirations() { method generateStats (line 552) | generateStats() { method close (line 597) | close() { FILE: MCP/scripts/fetch-issues.js class IssuesFetcher (line 13) | class IssuesFetcher { method constructor (line 14) | constructor() { method initializeDatabase (line 156) | initializeDatabase() { method initializeLabelCategories (line 232) | async initializeLabelCategories() { method analyzeLabelRelations (line 299) | async analyzeLabelRelations(issues) { method analyzeArticleLabels (line 361) | async analyzeArticleLabels(issue) { method calculateLabelWeights (line 417) | calculateLabelWeights(labels, content) { method buildLabelHierarchy (line 460) | async buildLabelHierarchy() { method saveAnalysisToDatabase (line 511) | async saveAnalysisToDatabase(issueNumber, analysis) { method saveIssuesToDatabase (line 541) | async saveIssuesToDatabase(issues) { method updateRelatedArticles (line 614) | async updateRelatedArticles() { method calculateRelationScore (line 654) | calculateRelationScore(article1, article2) { method generateEnhancedStats (line 677) | generateEnhancedStats() { method fetchAllIssues (line 726) | async fetchAllIssues() { method createSearchContent (line 790) | createSearchContent(issue) { method generateStats (line 825) | generateStats() { method close (line 861) | close() { method analyzeCodePatterns (line 865) | analyzeCodePatterns(content) { method analyzeAnimationPattern (line 902) | analyzeAnimationPattern(code) { method analyzeAnimationPerformance (line 918) | analyzeAnimationPerformance(code) { method getAnimationBrowserSupport (line 939) | getAnimationBrowserSupport(code) { method analyzeLayoutPattern (line 962) | analyzeLayoutPattern(code) { method analyzeLayoutPerformance (line 978) | analyzeLayoutPerformance(code) { method getLayoutBrowserSupport (line 999) | getLayoutBrowserSupport(code) { method analyzePerformance (line 1021) | analyzePerformance(content, cssProperties) { method checkGPUAcceleration (line 1033) | checkGPUAcceleration(properties) { method analyzePaintComplexity (line 1041) | analyzePaintComplexity(properties) { method checkLayoutTriggers (line 1054) | checkLayoutTriggers(properties) { method analyzeMemoryImpact (line 1059) | analyzeMemoryImpact(properties) { method generateOptimizationTips (line 1072) | generateOptimizationTips(properties) { method analyzeCSSPropertyCategories (line 1088) | analyzeCSSPropertyCategories(properties) { method getCSSPropertyCategory (line 1101) | getCSSPropertyCategory(prop) { method getCSSPropertySubCategory (line 1117) | getCSSPropertySubCategory(prop) { method getPropertyDescription (line 1126) | getPropertyDescription(prop) { method getPropertyPerformanceImpact (line 1138) | getPropertyPerformanceImpact(prop) { method getPropertyBestPractices (line 1147) | getPropertyBestPractices(prop) { method getPropertyCommonPitfalls (line 1162) | getPropertyCommonPitfalls(prop) { method getPropertyBrowserNotes (line 1177) | getPropertyBrowserNotes(prop) { method saveCodePatterns (line 1190) | async saveCodePatterns(issueNumber, patterns) { method savePropertyCategories (line 1220) | async savePropertyCategories(categories) { method savePerformanceAnalysis (line 1250) | async savePerformanceAnalysis(issueNumber, analysis) { method generateLabelStatistics (line 1276) | async generateLabelStatistics() { FILE: MCP/scripts/publish-check.js function checkFailed (line 15) | function checkFailed(message) { function checkPassed (line 20) | function checkPassed(message) { FILE: MCP/server.js class IcssServer (line 28) | class IcssServer { method constructor (line 29) | constructor() { method setupDatabase (line 52) | setupDatabase() { method initializeDatabase (line 70) | initializeDatabase() { method loadSearchIndex (line 98) | loadSearchIndex() { method waitForReady (line 132) | async waitForReady(timeout = 10000) { method setupHandlers (line 158) | setupHandlers() { method searchCssTechniques (line 329) | async searchCssTechniques(query, limit = 5) { method getCssArticle (line 399) | async getCssArticle(issueNumber) { method searchCssDemos (line 441) | async searchCssDemos(query, category, difficulty, limit = 5) { method getCssDemo (line 510) | async getCssDemo(demoId) { method listCssCategories (line 574) | async listCssCategories(source = 'all') { method getRandomCssTip (line 688) | async getRandomCssTip(source = 'both') { method extractPreview (line 764) | extractPreview(body, maxLength = 200) { method run (line 780) | async run() { FILE: MCP/setup.js class ProjectSetup (line 10) | class ProjectSetup { method constructor (line 11) | constructor() { method setup (line 16) | async setup() { method createDirectories (line 29) | createDirectories() { method createEnvFile (line 46) | createEnvFile() { method showNextSteps (line 71) | showNextSteps() { FILE: MCP/test-inspiration.js class InspirationTester (line 10) | class InspirationTester { method constructor (line 11) | constructor() { method testDatabaseIntegrity (line 21) | async testDatabaseIntegrity() { method checkTable (line 37) | checkTable(tableName) { method testSearchFunctionality (line 54) | async testSearchFunctionality() { method testQuery (line 76) | testQuery(testName, sql) { method testCodeSnippets (line 99) | async testCodeSnippets() { method testDemoStyles (line 113) | async testDemoStyles() { method generateReport (line 133) | async generateReport() { method runAllTests (line 174) | async runAllTests() { method close (line 192) | close() { FILE: MCP/test-server.js function testDatabase (line 9) | function testDatabase() { function testSearch (line 40) | function testSearch(db, resolve, reject) { function testMCPSDK (line 81) | function testMCPSDK() { FILE: website/app/api/articles/[id]/route.ts function GET (line 4) | async function GET( FILE: website/app/api/articles/route.ts function GET (line 4) | async function GET(request: NextRequest) { FILE: website/app/api/categories/route.ts function GET (line 4) | async function GET() { FILE: website/app/article/[id]/page.tsx type Article (line 11) | interface Article { type IssueData (line 19) | interface IssueData { function ArticleDetailPage (line 608) | function ArticleDetailPage() { FILE: website/app/components/CodeBlock.tsx type CodeBlockProps (line 7) | interface CodeBlockProps { function CodePenDemo (line 13) | function CodePenDemo({ html, css, js }: { html: string; css: string; js:... function CodeBlock (line 54) | function CodeBlock({ children, language = 'text' }: CodeBlockProps) { FILE: website/app/components/LanguageToggle.tsx function LanguageToggle (line 8) | function LanguageToggle() { FILE: website/app/components/ThemeToggle.tsx function ThemeToggle (line 9) | function ThemeToggle() { FILE: website/app/contexts/AppContext.tsx type AppContextType (line 8) | interface AppContextType { function AppProvider (line 18) | function AppProvider({ children }: { children: React.ReactNode }) { function useApp (line 70) | function useApp() { FILE: website/app/layout.tsx function RootLayout (line 14) | function RootLayout({ FILE: website/app/lib/cache.ts type CacheItem (line 1) | interface CacheItem { class Cache (line 7) | class Cache { method constructor (line 11) | private constructor() {} method getInstance (line 13) | static getInstance(): Cache { method set (line 20) | set(key: string, data: T, ttl: number = 5 * 60 * 1000): void { method get (line 28) | get(key: string): T | null { method delete (line 43) | delete(key: string): void { method clear (line 47) | clear(): void { method cleanup (line 52) | cleanup(): void { FILE: website/app/lib/github.ts type GitHubIssue (line 3) | interface GitHubIssue { type Article (line 24) | interface Article { class GitHubAPI (line 36) | class GitHubAPI { method getGitHubToken (line 42) | private static getGitHubToken(): string | undefined { method getHeaders (line 47) | private static getHeaders(): HeadersInit { method extractImageFromBody (line 62) | private static extractImageFromBody(body: string): string | undefined { method extractCategoryFromBody (line 81) | private static extractCategoryFromBody(body: string): string | undefin... method transformIssueToArticle (line 100) | private static transformIssueToArticle(issue: GitHubIssue): Article { method getIssues (line 118) | static async getIssues(page: number = 1, perPage: number = 30): Promis... method getIssue (line 187) | static async getIssue(issueNumber: number): Promise<{ method getAllArticles (line 263) | static async getAllArticles(): Promise { method fetchWithRetry (line 308) | private static async fetchWithRetry(url: string, options: RequestInit,... FILE: website/app/lib/language.ts type Language (line 1) | type Language = 'zh' | 'en'; type LanguageConfig (line 3) | interface LanguageConfig { function getStoredLanguage (line 22) | function getStoredLanguage(): Language { function setStoredLanguage (line 27) | function setStoredLanguage(language: Language) { FILE: website/app/lib/theme.ts type Theme (line 1) | type Theme = 'light' | 'dark' | 'system'; type ThemeConfig (line 3) | interface ThemeConfig { function getSystemTheme (line 27) | function getSystemTheme(): 'light' | 'dark' { function applyTheme (line 32) | function applyTheme(theme: Theme) { function getStoredTheme (line 52) | function getStoredTheme(): Theme { function initializeTheme (line 57) | function initializeTheme() { FILE: website/app/lib/translations.ts type Translations (line 3) | interface Translations { function getTranslation (line 127) | function getTranslation(language: Language, key: keyof Translations): st... FILE: website/app/page.tsx type Article (line 12) | interface Article { function HomePage (line 24) | function HomePage() { FILE: website/app/test-api/page.tsx type Article (line 5) | interface Article { type ArticlesResponse (line 17) | interface ArticlesResponse { function TestAPIPage (line 29) | function TestAPIPage() { FILE: website/app/test-demo/page.tsx function TestDemoPage (line 3) | function TestDemoPage() { FILE: website/app/test-fixes/page.tsx function TestFixesPage (line 444) | function TestFixesPage() { FILE: website/app/test-theme-lang/page.tsx function TestThemeLangPage (line 7) | function TestThemeLangPage() {