diff --git a/.eslintrc.js b/.eslintrc.js
index 85327a9..fd17dc6 100644
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -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',
@@ -73,6 +74,9 @@ module.exports = {
'./.erb/configs/webpack.config.eslint.js',
),
},
+ react: {
+ version: "detect"
+ },
typescript: {},
},
// 'import/parsers': {
diff --git a/src/main/window.js b/src/main/window.js
index bf13e5f..2aa44ae 100755
--- a/src/main/window.js
+++ b/src/main/window.js
@@ -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();
diff --git a/src/renderer/assets/js/utils/scripts.js b/src/renderer/assets/js/utils/scripts.js
index 606bb2e..72ea1d0 100644
--- a/src/renderer/assets/js/utils/scripts.js
+++ b/src/renderer/assets/js/utils/scripts.js
@@ -15,12 +15,13 @@ import {
} from './defaultVariables';
import {
deQueueQuery,
+ deQueueScriptsQuery,
getQueryResult,
+ setScriptsResults,
postQuery,
setResults,
resetQueue,
enQueueQuery,
- deQueueScriptsQuery,
setQueryShortcut,
} from '../../../store/actions/queryActions';
import {
@@ -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;
@@ -244,39 +232,35 @@ 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 (
@@ -284,7 +268,6 @@ const setQueryResult = (data, store, key, results) => {
results[key].query === 'project'
) {
if (
- !data &&
!results[key].result.stdout &&
!results[key].result.stderr
) {
@@ -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
) {
@@ -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 = () => {
@@ -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 = [];
@@ -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,
diff --git a/src/renderer/components/binary_viewer/binaryViewerScripts.js b/src/renderer/components/binary_viewer/binaryViewerScripts.js
index 8ac2ba7..b3d6e71 100644
--- a/src/renderer/components/binary_viewer/binaryViewerScripts.js
+++ b/src/renderer/components/binary_viewer/binaryViewerScripts.js
@@ -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;
diff --git a/src/renderer/components/queries_stats/QueriesStats.jsx b/src/renderer/components/queries_stats/QueriesStats.jsx
index d16769d..bab2a18 100644
--- a/src/renderer/components/queries_stats/QueriesStats.jsx
+++ b/src/renderer/components/queries_stats/QueriesStats.jsx
@@ -36,9 +36,9 @@ 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) {
@@ -46,7 +46,7 @@ function QueriesStats(props) {
() =>
setState(state => ({
...state,
- ...updateQueriesStats(props.results),
+ ...updateQueriesStats(props.results, props.scriptsResults),
})),
100,
);
@@ -149,7 +149,7 @@ function QueriesStats(props) {
data-test="queries-stats"
>
- {!queueEmpty(props.queue) ? (
+ {!queueEmpty(props.queue) || !queueEmpty(props.scriptsQueue) ? (
{nFormatter(queriesCount)}
- {!queueEmpty(props.queue) ? running...
: null}
+ {!queueEmpty(props.queue) || !queueEmpty(props.scriptsQueue) ? running...
: null}
);
@@ -175,7 +175,9 @@ function QueriesStats(props) {
const mapStateToProps = state => ({
results: querySelectors.selectResults(state),
+ scriptsResults: querySelectors.selectScriptsResults(state),
queue: querySelectors.selectQueue(state),
+ scriptsQueue: querySelectors.selectScriptsQueue(state),
prefersDarkMode: settingsSelectors.selectPrefersDarkMode(state),
});
diff --git a/src/renderer/components/queries_stats/queriesStatsScripts.js b/src/renderer/components/queries_stats/queriesStatsScripts.js
index bfe21a0..5269955 100644
--- a/src/renderer/components/queries_stats/queriesStatsScripts.js
+++ b/src/renderer/components/queries_stats/queriesStatsScripts.js
@@ -1,20 +1,21 @@
-export const countQueries = results => ({
- queriesCount: Object.keys(results).length,
+export const countQueries = (results, scriptsResults) => ({
+ queriesCount: Object.keys(results).length + Object.keys(scriptsResults).length,
});
-export const updateQueriesStats = results => {
- const queriesStats = [];
+export const updateQueriesStats = (results, scriptsResults) => {
+ let queriesStats = [
+ ...Object.keys(results).map(key=>results[key]),
+ ...Object.keys(scriptsResults).map(key=>scriptsResults[key])
+ ];
- Object.keys(results).forEach(key => {
- const result = results[key];
- queriesStats.push({
- query: result.query,
- t_elapsed: result.t_1
- ? result.t_1 - result.t_0
- : performance.now() - result.t_0,
- completed: !!result.t_1,
- });
- });
+ queriesStats.sort((result1, result2)=> result1.t_0 - result2.t_0);
+ queriesStats = queriesStats.map(result=>({
+ query: result.query,
+ t_elapsed: result.t_1
+ ? result.t_1 - result.t_0
+ : new Date().getTime() - result.t_0,
+ completed: !!result.t_1,
+ }));
return { queriesStats };
};
diff --git a/src/renderer/renderless/QueryProcessor.jsx b/src/renderer/renderless/QueryProcessor.jsx
index 0c89878..396c527 100644
--- a/src/renderer/renderless/QueryProcessor.jsx
+++ b/src/renderer/renderless/QueryProcessor.jsx
@@ -4,7 +4,7 @@ import * as settingsSelectors from '../store/selectors/settingsSelectors';
import * as querySelectors from '../store/selectors/querySelectors';
import * as statusSelectors from '../store/selectors/statusSelectors';
import * as queryActions from '../store/actions/queryActions';
-import { shouldRunQuery, processScriptResult } from './queryProcessorScripts';
+import { shouldRunQuery } from './queryProcessorScripts';
import {
addToQueue,
addWorkSpaceQueryToQueue,
@@ -71,9 +71,9 @@ function QueryProcessor(props) {
props.connected && addToQueue(addWorkSpaceQueryToQueue());
}, [props.connected, props.server, props.websocket]);
- React.useEffect(() => {
- processScriptResult(state.prev_results, props.results, handleSetState);
- }, [props.results]);
+ // React.useEffect(() => {
+ // processScriptResult(state.prev_results, props.results, handleSetState);
+ // }, [props.results]);
return null;
}
@@ -92,6 +92,7 @@ const mapDispatchToProps = dispatch => ({
peekQueue: () => dispatch(queryActions.peekQueue()),
peekScriptsQueue: () => dispatch(queryActions.peekScriptsQueue()),
enQueueQuery: query => dispatch(queryActions.enQueueQuery(query)),
+ enQueueScriptsQuery: query => dispatch(queryActions.enQueueScriptsQuery(query))
});
export default connect(mapStateToProps, mapDispatchToProps)(QueryProcessor);
diff --git a/src/renderer/renderless/queryProcessorScripts.js b/src/renderer/renderless/queryProcessorScripts.js
index bbc0b62..334d3fa 100644
--- a/src/renderer/renderless/queryProcessorScripts.js
+++ b/src/renderer/renderless/queryProcessorScripts.js
@@ -1,10 +1,9 @@
-import {
- getScriptResult,
- handleSetToast,
- isScriptQueryResultToOpenSynthFile,
- openSyntheticFile,
- deepClone,
-} from '../assets/js/utils/scripts';
+// import {
+// getScriptResult,
+// handleSetToast,
+// openSyntheticFile,
+// deepClone,
+// } from '../assets/js/utils/scripts';
export const shouldRunQuery = (prev_queue, queue, query) => {
const prev_queue_count = prev_queue ? Object.keys(prev_queue).length : 0;
@@ -18,50 +17,50 @@ export const shouldRunQuery = (prev_queue, queue, query) => {
}
};
-export const shouldAlertScriptRunSuccessful = (prev_results, results) => {
- const prev_uuids = Object.keys(prev_results);
- const uuids = Object.keys(results);
+// export const shouldAlertScriptRunSuccessful = (prev_results, results) => {
+// const prev_uuids = Object.keys(prev_results);
+// const uuids = Object.keys(results);
- const prev_last_script_result = getScriptResult(prev_uuids, prev_results);
+// const prev_last_script_result = getScriptResult(prev_uuids, prev_results);
- const last_script_result = getScriptResult(uuids, results);
+// const last_script_result = getScriptResult(uuids, results);
- if (
- JSON.stringify(prev_last_script_result) !==
- JSON.stringify(last_script_result) &&
- (last_script_result.result.stdout ||
- last_script_result.result.stderr) &&
- !last_script_result.query.includes('import') &&
- last_script_result.t_0 &&
- last_script_result.t_1
- ) {
- return last_script_result;
- }
- return false;
-};
+// if (
+// JSON.stringify(prev_last_script_result) !==
+// JSON.stringify(last_script_result) &&
+// (last_script_result.result.stdout ||
+// last_script_result.result.stderr) &&
+// !last_script_result.query.includes('import') &&
+// last_script_result.t_0 &&
+// last_script_result.t_1
+// ) {
+// return last_script_result;
+// }
+// return false;
+// };
-export const processScriptResult = async (
- prev_results,
- results,
- handleSetState,
-) => {
- const script_result = shouldAlertScriptRunSuccessful(prev_results, results);
+// export const processScriptResult = async (
+// prev_results,
+// results,
+// handleSetState,
+// ) => {
+// const script_result = shouldAlertScriptRunSuccessful(prev_results, results);
- if (script_result) {
- handleSetToast({
- icon: 'info-sign',
- intent: 'success',
- message: 'script ran successfully',
- });
+// if (script_result) {
+// handleSetToast({
+// icon: 'info-sign',
+// intent: 'success',
+// message: 'script ran successfully',
+// });
- const { synth_file_path, content } =
- await isScriptQueryResultToOpenSynthFile(script_result);
- synth_file_path &&
- content &&
- openSyntheticFile(synth_file_path, content);
- }
+// const { synth_file_path, content } =
+// await isScriptQueryResultToOpenSynthFile(script_result);
+// synth_file_path &&
+// content &&
+// openSyntheticFile(synth_file_path, content);
+// }
- handleSetState({
- prev_results: results ? deepClone(results) : {},
- });
-};
+// handleSetState({
+// prev_results: results ? deepClone(results) : {},
+// });
+// };
diff --git a/src/renderer/store/actions/queryActions.js b/src/renderer/store/actions/queryActions.js
index 3224a57..f7504e2 100644
--- a/src/renderer/store/actions/queryActions.js
+++ b/src/renderer/store/actions/queryActions.js
@@ -17,6 +17,13 @@ export const setResults = payload => dispatch => {
});
};
+export const setScriptsResults = payload => dispatch => {
+ dispatch({
+ type: "SET_SCRIPTS_RESULTS",
+ payload
+ });
+};
+
export const setQueue = payload => dispatch =>
dispatch({
type: 'SET_QUEUE',
@@ -90,6 +97,12 @@ export const pushResult = result => dispatch => {
dispatch(setResults(updated_results));
};
+export const pushScriptsResult= result => dispatch => {
+ const { scriptsResults } = store.getState().query;
+ const updated_results = performPushResult(result, scriptsResults);
+ dispatch(setScriptsResults(updated_results));
+};
+
export const runQuery = query_string => () =>
API.query(query_string).then(data => {
if (data && data.uuid) {
@@ -119,25 +132,22 @@ export const getQueryResult = uuid => () =>
.join('\n');
throw new Error(err);
}
- })
- .catch(() => {
- // handleAPIQueryError(err);
});
export const postQuery = (post_query, main_result_key) => dispatch =>
- runQuery(post_query)()
- .then(data => {
- const { results } = store.getState().query;
- const result = results[main_result_key];
-
- if (result) {
- result.post_query_uuid = data.uuid;
- dispatch(setResults(results));
- }
- })
- .catch(err => {
- handleAPIQueryError(err);
- });
+runQuery(post_query)()
+ .then(data => {
+ const { results } = store.getState().query;
+ const result = results[main_result_key];
+
+ if (result) {
+ result.post_query_uuid = data.uuid;
+ dispatch(setResults(results));
+ }
+ })
+ .catch(err => {
+ handleAPIQueryError(err);
+ });
export const mainQuery = query => dispatch =>
runQuery(query.query)()
@@ -145,12 +155,17 @@ export const mainQuery = query => dispatch =>
const query_result = {
[data.uuid]: {
result: { stdout: null, stderr: null },
- t_0: performance.now(),
+ t_0: new Date().getTime(),
t_1: null,
...query,
},
};
- dispatch(pushResult(query_result));
+
+ if(query.origin === "script"){
+ dispatch(pushScriptsResult(query_result));
+ }else{
+ dispatch(pushResult(query_result));
+ };
})
.catch(err => {
handleAPIQueryError(err);
diff --git a/src/renderer/store/reducers/queryReducers.js b/src/renderer/store/reducers/queryReducers.js
index 500c3fd..b263b1f 100644
--- a/src/renderer/store/reducers/queryReducers.js
+++ b/src/renderer/store/reducers/queryReducers.js
@@ -5,6 +5,7 @@ const workerPool = Pool(() => spawn(new Worker(workerURL)));
export const default_state = {
results: {},
+ scriptsResults: {},
queue: {},
scriptsQueue: {},
queryShortcut: {},
@@ -17,14 +18,26 @@ const query = (state = default_state, action) => {
return {
queue: state.queue,
results: { ...state.results, ...action.payload },
+ scriptsResults: state.scriptsResults,
scriptsQueue: state.scriptsQueue,
queryShortcut: state.queryShortcut,
workerPool: state.workerPool,
};
+ case 'SET_SCRIPTS_RESULTS':
+ return {
+ queue: state.queue,
+ results: state.results,
+ scriptsResults: { ...state.scriptsResults, ...action.payload },
+ scriptsQueue: state.scriptsQueue,
+ queryShortcut: state.queryShortcut,
+ workerPool: state.workerPool,
+ };
+
case 'SET_QUEUE':
return {
results: state.results,
+ scriptsResults: state.scriptsResults,
queue: { ...state.queue, ...action.payload },
scriptsQueue: state.scriptsQueue,
queryShortcut: state.queryShortcut,
@@ -34,6 +47,7 @@ const query = (state = default_state, action) => {
case 'RESET_QUEUE':
return {
results: state.results,
+ scriptsResults: state.scriptsResults,
queue: action.payload,
scriptsQueue: state.scriptsQueue,
queryShortcut: state.queryShortcut,
@@ -43,6 +57,7 @@ const query = (state = default_state, action) => {
case 'SET_SCRIPTS_QUEUE':
return {
results: state.results,
+ scriptsResults: state.scriptsResults,
queue: state.queue,
scriptsQueue: { ...state.scriptsQueue, ...action.payload },
queryShortcut: state.queryShortcut,
@@ -52,6 +67,7 @@ const query = (state = default_state, action) => {
case 'RESET_SCRIPTS_QUEUE':
return {
results: state.results,
+ scriptsResults: state.scriptsResults,
queue: state.queue,
scriptsQueue: action.payload,
queryShortcut: state.queryShortcut,
@@ -61,6 +77,7 @@ const query = (state = default_state, action) => {
case 'SET_QUERY_SHORTCUT':
return {
results: state.results,
+ scriptsResults: state.scriptsResults,
queue: state.queue,
scriptsQueue: state.scriptsQueue,
queryShortcut: { ...action.payload },
diff --git a/src/renderer/store/selectors/querySelectors.js b/src/renderer/store/selectors/querySelectors.js
index 3d25ff7..1265bde 100644
--- a/src/renderer/store/selectors/querySelectors.js
+++ b/src/renderer/store/selectors/querySelectors.js
@@ -6,6 +6,10 @@ export const selectResults = createSelector(
[selectQuery],
query => query.results,
);
+export const selectScriptsResults = createSelector(
+ [selectQuery],
+ query => query.scriptsResults,
+);
export const selectQueue = createSelector([selectQuery], query => query.queue);
export const selectScriptsQueue = createSelector(
[selectQuery],
diff --git a/src/renderer/views/terminal_window/terminalWindowScripts.js b/src/renderer/views/terminal_window/terminalWindowScripts.js
index b72d850..f7afc30 100644
--- a/src/renderer/views/terminal_window/terminalWindowScripts.js
+++ b/src/renderer/views/terminal_window/terminalWindowScripts.js
@@ -922,7 +922,7 @@ export const sendQueryResultToXTerm = async (results, refs) => {
term &&
(latest?.result.stdout || latest?.result.stderr) &&
!latest?.ignore &&
- latest.post_query_uuid &&
+ latest.post_query_uuid &&
(latest.workspace || latest.project)
) {
return await handleWriteQueryResult(term, refs, latest); // eslint-disable-line no-return-await