let clicks = []; let inRebuildMode = false; export const ActionTypes = Object.freeze({ // registerUserEvent payload: // (function_name, insert action) INSERT_FUNCTION:"INSERT_FUNCTION", // (function_name, remove action) REMOVE_FUNCTION:"REMOVE_FUNCTION", // (var_name,insert action, type, dim) INSERT_GLOBAL_VAR:"INSERT_GLOBAL_VAR", // (var name, remove action) REMOVE_GLOBAL_VAR:"REMOVE_GLOBAL_VAR", // (old function name, rename action, new function name) RENAME_FUNCTION:"RENAME_FUNCTION", // (old var name, rename action. new var name) RENAME_GLOBAL_VAR:"RENAME_GLOBAL_VAR", // (var name, set const action) SET_GLOBAL_CONST:"SET_GLOBAL_CONST", // (function name, change return action, type, dim) CHANGE_FUNCTION_RETURN:"CHANGE_FUNCTION_RETURN", // (var name, change type action, type, dim, rows?, columns?) CHANGE_GLOBAL_TYPE:"CHANGE_GLOBAL_TYPE", // (var name, change value action, value) CHANGE_GLOBAL_VALUE:"CHANGE_GLOBAL_VALUE", // (function name, insert param action, param varname, type, dim) INSERT_FUNCTION_PARAM:"INSERT_FUNCTION_PARAM", // (function name, remove param action, param varname) REMOVE_FUNCTION_PARAM:"REMOVE_FUNCTION_PARAM", // (function name, change param type action, type, dim) CHANGE_PARAM_TYPE:"CHANGE_PARAM_TYPE", // (function name, rename param action, old param name, new param name) RENAME_FUNCTION_PARAM:"RENAME_FUNCTION_PARAM", // (function name, insert var action, var name, type, dim) INSERT_FUNCTION_VAR:"INSERT_FUCNTION_VAR", // (function name, remove var action, var name) REMOVE_FUNCTION_VAR:"REMOVE_FUNCTION_VAR", // (function name, rename var action, old var name, new var name) RENAME_FUNCTION_VAR:"RENAME_FUNCTION_VAR", // (function name, change var type action, var name, type, dim, rows?, columns?) CHANGE_VAR_TYPE:"CHANGE_VAR_TYPE", // (function name, change var value action, var name, value) CHANGE_VAR_VALUE:"CHANGE_VAR_VALUE", // (function name, insert command action, command, path) INSERT_COMMAND:"INSERT_COMMAND", // (function name, remove command action, path) REMOVE_COMMAND:"REMOVE_COMMAND", // (function name, change command exp action, path, exp) CHANGE_COMMAND_EXP:"CHANGE_COMMAND_EXP", // (function name, change attrib exp action, path, exp) CHANGE_ATTRIB_EXP:"CHANGE_ATTRIB_EXP", // (function name, change attrib var action, path, var name, row_exp?, column_exp?) CHANGE_ATTRIB_VAR:"CHANGE_ATTRIB_VAR", // (function name, move command action, old path, new path) MOVE_COMMAND:"MOVE_COMMAND", // (function name, enter change name action, var name) ENTER_CHANGE_VAR_NAME:'ENTER_CHANGE_VAR_NAME', // (function name, enter change value action, var name) ENTER_CHANGE_VAR_VALUE:'ENTER_CHANGE_VAR_VALUE', // (var name, enter change name action) ENTER_CHANGE_GLOBAL_NAME:'ENTER_CHANGE_GLOBAL_NAME', // (var name, enter change value action) ENTER_CHANGE_GLOBAL_VALUE:'ENTER_CHANGE_GLOBAL_VALUE', // (function name, enter change name action, param name) ENTER_CHANGE_PARAM_NAME:'ENTER_CHANGE_PARAM_NAME', }); export function registerClick (x, y, details) { if (inRebuildMode) { return; } clicks.push([x, y, Date.now(), details]); } export function registerUserEvent (command, action, ...params) { registerEvent('user_event', command, action, params); } export function registerSystemEvent (command, action, ...params) { registerEvent('system_event', command, action, params); } function registerEvent (tag, command, action, params) { if (inRebuildMode) { return; } const event = {context: command, action: action, params:params}; clicks.push([tag, Date.now(), event]); } export function getLogs () { return clicks; } export function setRebuildMode (flag) { inRebuildMode = flag; } export function getLogsAsString () { return JSON.stringify(clicks); } export function parseLogs (logData) { clicks = JSON.parse(logData); }