@flamesshield/rules-engine
Version:
Independent rules engine for security analysis of Firebase
44 lines • 1.66 kB
JavaScript
import { SECURITY_ANALYSIS_API_ENDPOINT } from '../config.js';
export class SecurityAnalysisClient {
async analyzeFirestoreRules(rules) {
try {
if (!rules) {
return [];
}
const payload = {
filename: 'firestore.rules',
content: rules
};
// Create an AbortController for timeout handling
const controller = new AbortController();
const timeoutId = setTimeout(() => controller.abort(), 10000); // 10 second timeout
try {
const response = await fetch(SECURITY_ANALYSIS_API_ENDPOINT, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(payload),
signal: controller.signal
});
if (!response.ok) {
console.error(`API request failed with status ${response.status}`);
return [];
}
const data = (await response.json());
return data.vulnerabilities || [];
}
finally {
clearTimeout(timeoutId);
}
}
catch (error) {
if (error && typeof error === 'object' && 'name' in error && error.name === 'AbortError') {
console.error('Request timed out after 10 seconds');
}
else {
console.error('Error analyzing Firestore rules:', error);
}
return [];
}
}
}
//# sourceMappingURL=SecurityAnalysisClient.js.map