Thanks to visit codestin.com
Credit goes to github.com

Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .eslintrc.js
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ module.exports = {
'func-names': 'off',
'default-param-last': 'off',
'no-unneeded-ternary': 'off',
'no-underscore-dangle': 'off',
'import/prefer-default-export': 'off',
'import/no-cycle': 'off',
'import/no-self-import': 'off',
Expand Down Expand Up @@ -73,6 +74,9 @@ module.exports = {
'./.erb/configs/webpack.config.eslint.js',
),
},
react: {
version: "detect"
},
typescript: {},
},
// 'import/parsers': {
Expand Down
2 changes: 1 addition & 1 deletion src/main/window.js
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ const devSetup = async () => {

export const createWindow = async () => {
// await devSetup();
devSetup(); // uncomment this line to keep devtools always open
// devSetup(); // uncomment this line to keep devtools always open

const { position, size } = getWindowPosition();

Expand Down
230 changes: 122 additions & 108 deletions src/renderer/assets/js/utils/scripts.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,13 @@ import {
} from './defaultVariables';
import {
deQueueQuery,
deQueueScriptsQuery,
getQueryResult,
setScriptsResults,
postQuery,
setResults,
resetQueue,
enQueueQuery,
deQueueScriptsQuery,
setQueryShortcut,
} from '../../../store/actions/queryActions';
import {
Expand Down Expand Up @@ -165,19 +166,6 @@ export const deepClone = obj => {
return new_obj;
};

export const getResultObjWithPostQueryKey = (results, post_query_key) => {
let res;
Object.keys(results).some(key => {
if (key && results[key].post_query_uuid === post_query_key) {
res = key;
return true;
}
return false;
});

return res;
};

export const getActiveProject = () => {
const { projects } = store.getState().workspace;
let activeProject = null;
Expand Down Expand Up @@ -244,47 +232,42 @@ export const parseProject = data => {
return { name, inputPath, path, cpg, language };
};

const performPostQuery = (store, results, key) => {
let post_query;
const result = results[key];
const performPostQuery = (result, key) => {
let post_query;

if (
result.query.startsWith(manCommands.switchWorkspace) ||
result.query === 'project'
) {
post_query = 'workspace';
} else {
post_query = 'project';
}
if (
result.query.startsWith(manCommands.switchWorkspace) ||
result.query === 'project'
) {
post_query = 'workspace';
} else {
post_query = 'project';
}

store.dispatch(postQuery(post_query, key));
store.dispatch(postQuery(post_query, key));
};

const setQueryResult = (data, store, key, results) => {
const setQueryResult = (data, key, results) => {
if (results[key].t_0 && !results[key].t_1) {
results[key].t_1 = performance.now();
results[key].t_1 = new Date().getTime();
}

if (!results[key].result.stdout && !results[key].result.stderr) {
if (!data) {
results[key].result.stderr = 'query failed';
} else {
if (data.stdout) {
results[key].result.stdout = data.stdout;
}

if (data.stderr) {
results[key].result.stderr = data.stderr;
}
}
if (data.stdout) {
results[key].result.stdout = data.stdout;
}

if (data.stderr) {
results[key].result.stderr = data.stderr;
}

store.dispatch(setResults(results));
} else if (
results[key].query.startsWith(manCommands.switchWorkspace) ||
results[key].query === 'project'
) {
if (
!data &&
!results[key].result.stdout &&
!results[key].result.stderr
) {
Expand All @@ -297,7 +280,6 @@ const setQueryResult = (data, store, key, results) => {
store.dispatch(setResults(results));
} else {
if (
!data &&
!results[key].result.stdout &&
!results[key].result.stderr
) {
Expand All @@ -310,32 +292,64 @@ const setQueryResult = (data, store, key, results) => {
}
};

export const handleWebSocketResponse = data => {
store.dispatch(getQueryResult(data.utf8Data)).then(data => {
const { results } = store.getState().query;
let key = data.uuid;
let result_obj = results[key];

if (!result_obj) {
key = getResultObjWithPostQueryKey(results, data.uuid);
result_obj = results[key];
}
const setScriptsQueryResult = (data, key, results) => {
if (results[key].t_0 && !results[key].t_1) {
results[key].t_1 = new Date().getTime();
}

if (result_obj) {
if (!result_obj.result.stdout && !result_obj.result.stderr) {
setQueryResult(data, store, key, results);
if (result_obj.origin === 'script') {
store.dispatch(deQueueScriptsQuery());
addToQueue(addWorkSpaceQueryToQueue());
} else {
performPostQuery(store, results, key);
}
} else {
setQueryResult(data, store, key, results);
store.dispatch(deQueueQuery());
if (data.stdout) {
results[key].result.stdout = data.stdout;
}
}
});

if (data.stderr) {
results[key].result.stderr = data.stderr;
}

store.dispatch(setScriptsResults(results));
};

export const handleWebSocketResponse = data => {
store.dispatch(getQueryResult(data.utf8Data)).then(data => {
const { results, scriptsResults } = store.getState().query;
let key = data?.uuid;
if(!key) return;

let latest = results[key];

if(!latest){
latest = scriptsResults[key];
};

if(!latest){
const result_keys = Object.keys(results);
key = result_keys[result_keys.length - 1];
const _latest = results[key];
if(_latest.post_query_uuid === data.uuid){
latest = _latest
};
};

if(latest && latest.origin === "script"){

if (!latest.result.stdout && !latest.result.stderr) {
setScriptsQueryResult(data, key, scriptsResults);
store.dispatch(deQueueScriptsQuery());
};

}else if(latest && latest.origin !== "script"){

if (!latest.result.stdout && !latest.result.stderr) {
setQueryResult(data, key, results);
performPostQuery(results[key], key);
} else {
setQueryResult(data, key, results);
store.dispatch(deQueueQuery());
}

}
}).catch(() => {
// handleAPIQueryError(err);
});
};

export const handleCertificateError = () => {
Expand Down Expand Up @@ -1024,40 +1038,40 @@ export const isQueryResultToOpenSynthFile = latest => {
return { synth_file_path, content };
};

export const isScriptQueryResultToOpenSynthFile = async result => {
let synth_file_path = false;
let content = false;

if (
result?.result?.stdout &&
typeof result.result.stdout === 'string' &&
!result.query.startsWith('import') &&
result.result.stdout.includes('.json')
) {
try {
synth_file_path = `${
result.query.split('`').join('').split('.')[0]
}.sc - ${syntheticFiles[2]}`;
content = result.result.stdout.split('=')[1].split('"')[1];
content = await readFile(content).catch(() => {
synth_file_path = false;
handleSetToast({
icon: 'warning-sign',
intent: 'danger',
message:
"script report file path returned by script run doesn't exist",
});

return false;
});
} catch (e) {
synth_file_path = false;
content = false;
}
}

return { synth_file_path, content };
};
// export const isScriptQueryResultToOpenSynthFile = async result => {
// let synth_file_path = false;
// let content = false;

// if (
// result?.result?.stdout &&
// typeof result.result.stdout === 'string' &&
// !result.query.startsWith('import') &&
// result.result.stdout.includes('.json')
// ) {
// try {
// synth_file_path = `${
// result.query.split('`').join('').split('.')[0]
// }.sc - ${syntheticFiles[2]}`;
// content = result.result.stdout.split('=')[1].split('"')[1];
// content = await readFile(content).catch(() => {
// synth_file_path = false;
// handleSetToast({
// icon: 'warning-sign',
// intent: 'danger',
// message:
// "script report file path returned by script run doesn't exist",
// });

// return false;
// });
// } catch (e) {
// synth_file_path = false;
// content = false;
// }
// }

// return { synth_file_path, content };
// };

export const isQueryResultToCloseSynthFile = async () => {
const paths_to_close = [];
Expand Down Expand Up @@ -1524,18 +1538,18 @@ export const handleFontSizeChange = (doc, fontSize) => {
doc.children[0].children[1].style.fontSize = fontSize;
};

export const getScriptResult = (uuids, results) => {
let result;
// export const getScriptResult = (uuids, results) => {
// let result;

for (let i = uuids.length - 1; i >= 0; i -= 1) {
if (results[uuids[i]].origin === 'script') {
result = results[uuids[i]];
break;
}
}
// for (let i = uuids.length - 1; i >= 0; i -= 1) {
// if (results[uuids[i]].origin === 'script') {
// result = results[uuids[i]];
// break;
// }
// }

return result;
};
// return result;
// };

export const generateScriptImportQuery = async (
path_to_script,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ export const getMethodPositionInDecompiledMethodsEditor = (
code = code.split(/\n/);
const str_to_search = code[0].startsWith('/*') ? code[1] : code[0];
const range =
editor._modelData.model.findMatches(str_to_search)[0].range; // eslint-disable-line no-underscore-dangle
editor._modelData.model.findMatches(str_to_search)[0].range;
range.startLineNumber = code[0].startsWith('/*')
? range.startLineNumber - 1
: range.startLineNumber;
Expand Down
14 changes: 8 additions & 6 deletions src/renderer/components/queries_stats/QueriesStats.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -36,17 +36,17 @@ function QueriesStats(props) {

React.useEffect(() => {
if (props.results) {
handleSetState(countQueries(props.results));
}
}, [props.results]);
handleSetState(countQueries(props.results, props.scriptsResults));
};
}, [props.results, props.scriptsResults]);

React.useEffect(() => {
if (state.queriesStatsPopoverIsOpen && props.results) {
updateQueryIntervalID = setInterval(
() =>
setState(state => ({
...state,
...updateQueriesStats(props.results),
...updateQueriesStats(props.results, props.scriptsResults),
})),
100,
);
Expand Down Expand Up @@ -149,7 +149,7 @@ function QueriesStats(props) {
data-test="queries-stats"
>
<div className={classes.refreshIconContainerStyle}>
{!queueEmpty(props.queue) ? (
{!queueEmpty(props.queue) || !queueEmpty(props.scriptsQueue) ? (
<Icon
icon="refresh"
className={clsx(
Expand All @@ -167,15 +167,17 @@ function QueriesStats(props) {
<p className={classes.queriesStatsStyle}>
{nFormatter(queriesCount)}
</p>
{!queueEmpty(props.queue) ? <div>running...</div> : null}
{!queueEmpty(props.queue) || !queueEmpty(props.scriptsQueue) ? <div>running...</div> : null}
</div>
</Popover2>
);
}

const mapStateToProps = state => ({
results: querySelectors.selectResults(state),
scriptsResults: querySelectors.selectScriptsResults(state),
queue: querySelectors.selectQueue(state),
scriptsQueue: querySelectors.selectScriptsQueue(state),
prefersDarkMode: settingsSelectors.selectPrefersDarkMode(state),
});

Expand Down
Loading