@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
322 lines • 11.1 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.SecurityModule = void 0;
const axios_1 = __importDefault(require("axios"));
/**
* Security Module for SecKav SDK
* Handles security settings, IP filtering, user agent filtering, geo-location filtering, and security events
*/
class SecurityModule {
constructor(config) {
this.config = config;
}
/**
* Get security settings
*/
async getSecuritySettings(token) {
try {
const response = await axios_1.default.get(`${this.config.apiUrl}/api/v1/security/settings`, {
headers: {
'Authorization': `Bearer ${token}`,
'Content-Type': 'application/json',
},
timeout: this.config.timeout || 5000,
});
return {
success: true,
settings: response.data.settings,
};
}
catch (error) {
if (this.config.onError) {
this.config.onError(error);
}
return {
success: false,
error: error.response?.data?.error || 'Failed to get security settings',
message: error.response?.data?.message || 'An error occurred',
};
}
}
/**
* Update security settings
*/
async updateSecuritySettings(token, settings) {
try {
const response = await axios_1.default.put(`${this.config.apiUrl}/api/v1/security/settings`, settings, {
headers: {
'Authorization': `Bearer ${token}`,
'Content-Type': 'application/json',
},
timeout: this.config.timeout || 5000,
});
return {
success: true,
settings: response.data.settings,
};
}
catch (error) {
if (this.config.onError) {
this.config.onError(error);
}
return {
success: false,
error: error.response?.data?.error || 'Failed to update security settings',
message: error.response?.data?.message || 'An error occurred',
};
}
}
/**
* Update IP whitelist
*/
async updateIpWhitelist(token, ipAddresses) {
try {
const response = await axios_1.default.put(`${this.config.apiUrl}/api/v1/security/ip-whitelist`, { ipAddresses }, {
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 update IP whitelist',
message: error.response?.data?.message || 'An error occurred',
};
}
}
/**
* Update IP blacklist
*/
async updateIpBlacklist(token, ipAddresses) {
try {
const response = await axios_1.default.put(`${this.config.apiUrl}/api/v1/security/ip-blacklist`, { ipAddresses }, {
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 update IP blacklist',
message: error.response?.data?.message || 'An error occurred',
};
}
}
/**
* Update user agent filtering
*/
async updateUserAgentFiltering(token, settings) {
try {
const response = await axios_1.default.put(`${this.config.apiUrl}/api/v1/security/user-agent-filtering`, settings, {
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 update user agent filtering',
message: error.response?.data?.message || 'An error occurred',
};
}
}
/**
* Update geo-location filtering
*/
async updateGeoLocationFiltering(token, settings) {
try {
const response = await axios_1.default.put(`${this.config.apiUrl}/api/v1/security/geo-location-filtering`, settings, {
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 update geo-location filtering',
message: error.response?.data?.message || 'An error occurred',
};
}
}
/**
* Get security events
*/
async getSecurityEvents(token, options) {
try {
const params = new URLSearchParams();
if (options?.page)
params.append('page', options.page.toString());
if (options?.limit)
params.append('limit', options.limit.toString());
if (options?.eventType)
params.append('eventType', options.eventType);
if (options?.severity)
params.append('severity', options.severity);
if (options?.startDate)
params.append('startDate', options.startDate);
if (options?.endDate)
params.append('endDate', options.endDate);
const response = await axios_1.default.get(`${this.config.apiUrl}/api/v1/security/events?${params.toString()}`, {
headers: {
'Authorization': `Bearer ${token}`,
'Content-Type': 'application/json',
},
timeout: this.config.timeout || 5000,
});
return {
success: true,
events: response.data.events,
};
}
catch (error) {
if (this.config.onError) {
this.config.onError(error);
}
return {
success: false,
error: error.response?.data?.error || 'Failed to get security events',
message: error.response?.data?.message || 'An error occurred',
};
}
}
/**
* Resolve security event
*/
async resolveSecurityEvent(token, eventId, resolution) {
try {
const response = await axios_1.default.post(`${this.config.apiUrl}/api/v1/security/resolve-event`, { eventId, resolution }, {
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 resolve security event',
message: error.response?.data?.message || 'An error occurred',
};
}
}
/**
* Trigger alert check
*/
async triggerAlertCheck(token) {
try {
const response = await axios_1.default.post(`${this.config.apiUrl}/api/v1/security/trigger-alert-check`, {}, {
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 trigger alert check',
message: error.response?.data?.message || 'An error occurred',
};
}
}
/**
* Test alert
*/
async testAlert(token, alertType, message) {
try {
const response = await axios_1.default.post(`${this.config.apiUrl}/api/v1/security/test-alert`, { type: alertType, message }, {
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 test alert',
message: error.response?.data?.message || 'An error occurred',
};
}
}
/**
* Get module information
*/
getInfo() {
return {
name: 'Security',
version: '2.0.0',
description: 'Security settings, filtering, and event management',
apiUrl: this.config.apiUrl,
};
}
}
exports.SecurityModule = SecurityModule;
//# sourceMappingURL=Security.js.map