UNPKG

npmplus-mcp-server

Version:

Production-ready MCP server for intelligent JavaScript package management. Works with Claude, Windsurf, Cursor, VS Code, and any MCP-compatible AI editor.

96 lines (84 loc) 2.84 kB
// Analytics endpoint for Netlify exports.handler = async (event, context) => { const headers = { 'Access-Control-Allow-Origin': '*', 'Access-Control-Allow-Headers': 'Content-Type, Authorization', 'Access-Control-Allow-Methods': 'GET, POST, OPTIONS' }; if (event.httpMethod === 'OPTIONS') { return { statusCode: 200, headers }; } try { const path = event.path || event.rawUrl || ''; const isDataRequest = path.includes('/data') || event.queryStringParameters?.data === 'true'; // Analytics data API - Basic data for open source version if (event.httpMethod === 'GET' && isDataRequest) { try { // Dynamic import to avoid build issues with ES modules const { createAnalyticsData } = await import('../../dist/analytics.js'); const analyticsData = await createAnalyticsData(); return { statusCode: 200, headers: { ...headers, 'Content-Type': 'application/json' }, body: JSON.stringify(analyticsData) }; } catch (error) { console.error('Analytics data error:', error); // Return minimal data on error return { statusCode: 200, headers: { ...headers, 'Content-Type': 'application/json' }, body: JSON.stringify({ totalCalls: 0, totalPackages: 0, popularPackages: [], recentActivity: [], error: 'Analytics temporarily unavailable' }) }; } } // Analytics dashboard - Return HTML if (event.httpMethod === 'GET') { try { const { createAnalyticsDashboard } = await import('../../dist/analytics-dashboard.js'); const dashboardHtml = await createAnalyticsDashboard(); return { statusCode: 200, headers: { ...headers, 'Content-Type': 'text/html' }, body: dashboardHtml }; } catch (error) { console.error('Analytics dashboard error:', error); return { statusCode: 500, headers: { ...headers, 'Content-Type': 'text/html' }, body: ` <html> <head><title>Analytics Error</title></head> <body> <h1>Analytics Dashboard Temporarily Unavailable</h1> <p>Error: ${error.message}</p> </body> </html> ` }; } } return { statusCode: 405, headers, body: JSON.stringify({ error: 'Method not allowed' }) }; } catch (error) { console.error('Analytics handler error:', error); return { statusCode: 500, headers, body: JSON.stringify({ error: 'Internal server error', message: error.message }) }; } };