react-native-debug-toolkit
Version:
A simple yet powerful debugging toolkit for React Native with a convenient floating UI for development
94 lines (82 loc) • 2.45 kB
JavaScript
const MAX_LOGS = 200; // Max number of track events to store
const logs = [];
const setup = () => {
// Note: Actual event tracking will be done in the main app code
// This is just a setup function for compatibility with the feature API
};
// Function to add track event log
export const addTrackLog = (eventData) => {
// Store log data
const logEntry = {
timestamp: new Date(),
eventName: eventData.eventName || 'unknown_event',
entityType: eventData.entityType,
entityName: eventData.entityName,
pageId: eventData.pageId,
objId: eventData.objId,
entityPath: eventData.entityPath,
objType: eventData.objType,
objPt: eventData.objPt,
refPageLocation: eventData.refPageLocation,
position: eventData.position,
entityLocation: eventData.entityLocation,
frontOperation: eventData.frontOperation,
sessionId: eventData.sessionId,
requestId: eventData.requestId,
searchKeywored: eventData.searchKeywored,
enSearchKeywored: eventData.enSearchKeywored,
// Include any additional custom properties
...eventData
};
logs.push(logEntry);
// Trim logs if they exceed the maximum limit
if (logs.length > MAX_LOGS) {
logs.splice(0, logs.length - MAX_LOGS);
}
};
// Get event statistics
export const getEventStats = () => {
const stats = {};
logs.forEach(log => {
const eventName = log.eventName;
if (!stats[eventName]) {
stats[eventName] = {
count: 0,
lastSeen: log.timestamp,
entityTypes: new Set(),
operations: new Set()
};
}
stats[eventName].count++;
if (log.timestamp > stats[eventName].lastSeen) {
stats[eventName].lastSeen = log.timestamp;
}
if (log.entityType) {
stats[eventName].entityTypes.add(log.entityType);
}
if (log.frontOperation) {
stats[eventName].operations.add(log.frontOperation);
}
});
// Convert Sets to Arrays for display
Object.keys(stats).forEach(eventName => {
stats[eventName].entityTypes = Array.from(stats[eventName].entityTypes);
stats[eventName].operations = Array.from(stats[eventName].operations);
});
return stats;
};
const getData = () => {
return logs;
};
const cleanup = () => {
logs.length = 0; // Clear array
};
export const createTrackFeature = () => {
return {
name: 'track',
label: 'Track Events',
setup: setup,
getData: getData,
cleanup: cleanup,
};
};