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
JavaScript
;
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