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.

41 lines 1.83 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.analytics = void 0; exports.withAnalytics = withAnalytics; const AnalyticsService_js_1 = require("./services/AnalyticsService.js"); // Re-export for backward compatibility exports.analytics = { trackToolUsage: AnalyticsService_js_1.analyticsService.trackToolUsage.bind(AnalyticsService_js_1.analyticsService), getSummary: AnalyticsService_js_1.analyticsService.getAnalyticsSummary.bind(AnalyticsService_js_1.analyticsService), getPopularPackages: AnalyticsService_js_1.analyticsService.getPopularPackages.bind(AnalyticsService_js_1.analyticsService), isAnalyticsEnabled: AnalyticsService_js_1.analyticsService.isAnalyticsEnabled.bind(AnalyticsService_js_1.analyticsService) }; // Middleware for Express/Netlify functions /** * Middleware to wrap a handler with analytics tracking for Express/Netlify functions. * @param toolName - The name of the tool being tracked. * @returns A function that wraps the handler and tracks analytics. */ function withAnalytics(toolName, packageName) { return async (handler, req, res) => { const startTime = Date.now(); let success = false; let error; try { const result = await handler(); success = true; return result; } catch (err) { error = err; throw err; } finally { const responseTime = Date.now() - startTime; const clientIP = req.ip || req.connection?.remoteAddress || req.headers['x-forwarded-for']; const userAgent = req.headers['user-agent']; exports.analytics.trackToolUsage(toolName, success, responseTime, clientIP, userAgent, error, packageName); } }; } //# sourceMappingURL=analytics.js.map