UNPKG

@seckav/security-sdk

Version:

Lightweight API Security SDK for Enterprises - One-click protection with rate limiting, threat detection, security analytics, and real-time monitoring for Express.js and Next.js applications

309 lines 10.6 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.AnalyticsModule = void 0; const axios_1 = __importDefault(require("axios")); /** * Analytics Module for SecKav SDK * Handles real-time metrics, analytics, geo-distribution, and threat analysis */ class AnalyticsModule { constructor(config) { this.config = config; } /** * Get real-time metrics */ async getRealTimeMetrics(token) { try { const response = await axios_1.default.get(`${this.config.apiUrl}/api/v1/analytics/real-time`, { headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json', }, timeout: this.config.timeout || 5000, }); return { success: true, metrics: response.data.metrics, }; } catch (error) { if (this.config.onError) { this.config.onError(error); } return { success: false, error: error.response?.data?.error || 'Failed to get real-time metrics', message: error.response?.data?.message || 'An error occurred', }; } } /** * Get comprehensive analytics */ async getAnalytics(token, timeframe = '24h') { try { const response = await axios_1.default.get(`${this.config.apiUrl}/api/v1/analytics?timeframe=${timeframe}`, { headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json', }, timeout: this.config.timeout || 5000, }); return { success: true, analytics: response.data.analytics, }; } catch (error) { if (this.config.onError) { this.config.onError(error); } return { success: false, error: error.response?.data?.error || 'Failed to get analytics', message: error.response?.data?.message || 'An error occurred', }; } } /** * Get geo-distribution analytics */ async getGeoDistribution(token, timeframe = '24h') { try { const response = await axios_1.default.get(`${this.config.apiUrl}/api/v1/analytics/geo?timeframe=${timeframe}`, { headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json', }, timeout: this.config.timeout || 5000, }); return { success: true, geoDistribution: response.data.geoDistribution, }; } catch (error) { if (this.config.onError) { this.config.onError(error); } return { success: false, error: error.response?.data?.error || 'Failed to get geo-distribution', message: error.response?.data?.message || 'An error occurred', }; } } /** * Get request statistics */ async getRequestStats(token, timeframe = '24h') { try { const response = await axios_1.default.get(`${this.config.apiUrl}/api/v1/analytics/request-stats?timeframe=${timeframe}`, { headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json', }, timeout: this.config.timeout || 5000, }); return { success: true, analytics: response.data, }; } catch (error) { if (this.config.onError) { this.config.onError(error); } return { success: false, error: error.response?.data?.error || 'Failed to get request stats', message: error.response?.data?.message || 'An error occurred', }; } } /** * Get top endpoints */ async getTopEndpoints(token, timeframe = '24h') { try { const response = await axios_1.default.get(`${this.config.apiUrl}/api/v1/analytics/top-endpoints?timeframe=${timeframe}`, { headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json', }, timeout: this.config.timeout || 5000, }); return { success: true, analytics: response.data, }; } catch (error) { if (this.config.onError) { this.config.onError(error); } return { success: false, error: error.response?.data?.error || 'Failed to get top endpoints', message: error.response?.data?.message || 'An error occurred', }; } } /** * Get threat analysis */ async getThreatAnalysis(token, timeframe = '24h') { try { const response = await axios_1.default.get(`${this.config.apiUrl}/api/v1/analytics/threat-analysis?timeframe=${timeframe}`, { headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json', }, timeout: this.config.timeout || 5000, }); return { success: true, analytics: response.data, }; } catch (error) { if (this.config.onError) { this.config.onError(error); } return { success: false, error: error.response?.data?.error || 'Failed to get threat analysis', message: error.response?.data?.message || 'An error occurred', }; } } /** * Get dashboard summary */ async getDashboardSummary(token, timeframe = '24h') { try { const response = await axios_1.default.get(`${this.config.apiUrl}/api/v1/analytics/dashboard-summary?timeframe=${timeframe}`, { headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json', }, timeout: this.config.timeout || 5000, }); return { success: true, analytics: response.data, }; } catch (error) { if (this.config.onError) { this.config.onError(error); } return { success: false, error: error.response?.data?.error || 'Failed to get dashboard summary', message: error.response?.data?.message || 'An error occurred', }; } } /** * Track custom event */ async trackEvent(token, eventData) { try { const response = await axios_1.default.post(`${this.config.apiUrl}/api/v1/analytics/track`, eventData, { headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json', }, timeout: this.config.timeout || 5000, }); return { success: true, message: response.data.message, }; } catch (error) { if (this.config.onError) { this.config.onError(error); } return { success: false, error: error.response?.data?.error || 'Failed to track event', message: error.response?.data?.message || 'An error occurred', }; } } /** * Get analytics for specific date range */ async getAnalyticsForDateRange(token, startDate, endDate) { try { const response = await axios_1.default.get(`${this.config.apiUrl}/api/v1/analytics?startDate=${startDate}&endDate=${endDate}`, { headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json', }, timeout: this.config.timeout || 5000, }); return { success: true, analytics: response.data.analytics, }; } catch (error) { if (this.config.onError) { this.config.onError(error); } return { success: false, error: error.response?.data?.error || 'Failed to get analytics for date range', message: error.response?.data?.message || 'An error occurred', }; } } /** * Export analytics data */ async exportAnalytics(token, format = 'json', timeframe = '24h') { try { const response = await axios_1.default.get(`${this.config.apiUrl}/api/v1/analytics/export?format=${format}&timeframe=${timeframe}`, { headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json', }, timeout: this.config.timeout || 10000, // Longer timeout for exports }); return { success: true, analytics: response.data, }; } catch (error) { if (this.config.onError) { this.config.onError(error); } return { success: false, error: error.response?.data?.error || 'Failed to export analytics', message: error.response?.data?.message || 'An error occurred', }; } } /** * Get module information */ getInfo() { return { name: 'Analytics', version: '2.0.0', description: 'Real-time metrics, analytics, and threat analysis', apiUrl: this.config.apiUrl, }; } } exports.AnalyticsModule = AnalyticsModule; //# sourceMappingURL=Analytics.js.map