[Bugfix] Syntax Errors in Query Transformation and adds them to the Debugger (#3757)

* handles syntax and reference error for js for query transformations

* fixes toast description for errors from query transformation
This commit is contained in:
Arpit 2022-08-11 17:37:18 +05:30 committed by GitHub
parent 8fd356926b
commit 1a4ab8d0e6
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -18,6 +18,15 @@ import { v4 as uuidv4 } from 'uuid';
// eslint-disable-next-line import/no-unresolved
import { allSvgs } from '@tooljet/plugins/client';
const ERROR_TYPES = Object.freeze({
ReferenceError: 'ReferenceError',
SyntaxError: 'SyntaxError',
TypeError: 'TypeError',
URIError: 'URIError',
RangeError: 'RangeError',
EvalError: 'EvalError',
});
export function setStateAsync(_ref, state) {
return new Promise((resolve) => {
_ref.setState(state, resolve);
@ -75,15 +84,17 @@ export function getDataFromLocalStorage(key) {
export function runTransformation(_ref, rawData, transformation, query) {
const data = rawData;
const evalFunction = Function(
['data', 'moment', '_', 'components', 'queries', 'globals', 'variables'],
transformation
);
let result = [];
const currentState = _ref.state.currentState || {};
try {
const evalFunction = Function(
['data', 'moment', '_', 'components', 'queries', 'globals', 'variables'],
transformation
);
result = evalFunction(
data,
moment,
@ -95,6 +106,9 @@ export function runTransformation(_ref, rawData, transformation, query) {
);
} catch (err) {
console.log('Transformation failed for query: ', query.name, err);
const $error = err.name;
const $errorMessage = _.has(ERROR_TYPES, $error) ? `${$error} : ${err.message}` : err || 'Unknown error';
toast.error($errorMessage);
result = { message: err.stack.split('\n')[0], status: 'failed', data: data };
}