@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
JavaScript
"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