UNPKG

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
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, }; };