diff --git a/packages/nocodb-sdk/src/lib/formulaHelpers.ts b/packages/nocodb-sdk/src/lib/formulaHelpers.ts index 155df4ae02..571355083e 100644 --- a/packages/nocodb-sdk/src/lib/formulaHelpers.ts +++ b/packages/nocodb-sdk/src/lib/formulaHelpers.ts @@ -3,13 +3,7 @@ import jsep from 'jsep'; import { ColumnType, LinkToAnotherRecordType, RollupType } from './Api'; import UITypes from './UITypes'; import dayjs from 'dayjs'; -import { - MssqlUi, - MysqlUi, - PgUi, - SnowflakeUi, - SqlUiFactory, -} from './sqlUi'; +import { MssqlUi, MysqlUi, PgUi, SnowflakeUi, SqlUiFactory } from './sqlUi'; // todo: move to date utils and export, remove duplicate from gui @@ -205,7 +199,7 @@ export function jsepTreeToFormula(node, isCallExpId = false) { if (node.type === 'Literal') { if (typeof node.value === 'string') { - return String.raw`"${escapeLiteral(node.value)}"`; + return String.raw`"${escapeLiteral(node.raw.slice(1, -1))}"`; } return '' + node.value; } @@ -248,11 +242,11 @@ function escapeLiteral(v: string) { return ( v // replace \ to \\ - .replace(/\\/g, `\\\\`) + .replace(/([^\\]|^)\\(?!\\)/g, `$1\\\\`) // replace " to \" - .replace(/"/g, `\\"`) + .replace(/([^\\]|^)"/g, `$1\\"`) // replace ' to \' - .replace(/'/g, `\\'`) + .replace(/([^\\]|^)'/g, `$1\\'`) ); } @@ -1261,7 +1255,7 @@ async function extractColumnIdentifierType({ | typeof MysqlUi | typeof MssqlUi | typeof SnowflakeUi - | typeof PgUi + | typeof PgUi; }) { const res: { dataType?: FormulaDataTypes; @@ -1496,11 +1490,11 @@ export async function validateFormulaAndExtractTreeWithType({ } } // get args type and validate - const validateResult = (res.arguments = await Promise.all(parsedTree.arguments.map( - (arg) => { + const validateResult = (res.arguments = await Promise.all( + parsedTree.arguments.map((arg) => { return validateAndExtract(arg); - } - ))); + }) + )); const argTypes = validateResult.map((v: any) => v.dataType);