@qrvey/formula-lang 3.1.0-rc.754 → 3.1.0-rc.760
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/transpiler/index.d.ts +5 -0
- package/dist/cjs/transpiler/index.js +32 -6
- package/dist/cjs/transpiler/index.js.map +1 -1
- package/dist/module/transpiler/index.d.ts +5 -0
- package/dist/module/transpiler/index.js +33 -7
- package/dist/module/transpiler/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -7,7 +7,12 @@ export declare class Transpiler {
|
|
|
7
7
|
private customFunctionList;
|
|
8
8
|
private aggregatedMap;
|
|
9
9
|
private formulaErrorList;
|
|
10
|
+
private contextStack;
|
|
10
11
|
constructor(ast: ProgramAST, engine: ENGINES, globalContext?: FormulaContext | undefined);
|
|
12
|
+
private initContextStack;
|
|
13
|
+
private pushContext;
|
|
14
|
+
private popContext;
|
|
15
|
+
private get currentContext();
|
|
11
16
|
get(): TranspilationResponse;
|
|
12
17
|
private processNode;
|
|
13
18
|
private conversionFromColumnToLiteral;
|
|
@@ -22,6 +22,22 @@ class Transpiler {
|
|
|
22
22
|
this.customFunctionList = new Set();
|
|
23
23
|
this.aggregatedMap = new Map();
|
|
24
24
|
this.formulaErrorList = new formulaErrorList_1.FormulaErrorList();
|
|
25
|
+
this.contextStack = [];
|
|
26
|
+
this.initContextStack();
|
|
27
|
+
}
|
|
28
|
+
initContextStack() {
|
|
29
|
+
if (this.globalContext)
|
|
30
|
+
this.pushContext(this.globalContext);
|
|
31
|
+
}
|
|
32
|
+
pushContext(context) {
|
|
33
|
+
this.contextStack.push(context);
|
|
34
|
+
}
|
|
35
|
+
popContext() {
|
|
36
|
+
this.contextStack.pop();
|
|
37
|
+
}
|
|
38
|
+
get currentContext() {
|
|
39
|
+
// The last context in the stack is the current context.
|
|
40
|
+
return this.contextStack[this.contextStack.length - 1];
|
|
25
41
|
}
|
|
26
42
|
get() {
|
|
27
43
|
const { body } = this.ast;
|
|
@@ -51,7 +67,7 @@ class Transpiler {
|
|
|
51
67
|
const nodes = {
|
|
52
68
|
[constants_1.AST_TYPES.token]: this.literal,
|
|
53
69
|
[constants_1.AST_TYPES.literal]: this.literal,
|
|
54
|
-
[constants_1.AST_TYPES.column]: ((_a = this.
|
|
70
|
+
[constants_1.AST_TYPES.column]: ((_a = this.currentContext) === null || _a === void 0 ? void 0 : _a.useSampleData)
|
|
55
71
|
? this.conversionFromColumnToLiteral
|
|
56
72
|
: this.column,
|
|
57
73
|
[constants_1.AST_TYPES.externalFormula]: this.conversionFromColumnToLiteral,
|
|
@@ -80,7 +96,7 @@ class Transpiler {
|
|
|
80
96
|
}
|
|
81
97
|
conversionFromColumnToLiteral(data) {
|
|
82
98
|
var _a, _b, _c, _d, _e;
|
|
83
|
-
const value = (((_a = this.
|
|
99
|
+
const value = (((_a = this.currentContext) === null || _a === void 0 ? void 0 : _a.sampleData) || {})[(_c = (_b = data.context) === null || _b === void 0 ? void 0 : _b.id) !== null && _c !== void 0 ? _c : ''];
|
|
84
100
|
return this.literal(Object.assign(Object.assign({}, data), { value: value === null ? 'null' : value, dataType: (_e = (_d = data.context) === null || _d === void 0 ? void 0 : _d.type) !== null && _e !== void 0 ? _e : constants_1.AST_PRIMITIVES.STRING }));
|
|
85
101
|
}
|
|
86
102
|
column(data) {
|
|
@@ -88,12 +104,12 @@ class Transpiler {
|
|
|
88
104
|
if (this.engine === constants_1.ENGINES.ELASTICSEARCH)
|
|
89
105
|
this.customFunctionList.add(scripts_1.getValueScript);
|
|
90
106
|
if (((_a = data === null || data === void 0 ? void 0 : data.context) === null || _a === void 0 ? void 0 : _a.type) === constants_1.AST_PRIMITIVES.DATE &&
|
|
91
|
-
((_b = this.
|
|
107
|
+
((_b = this.currentContext) === null || _b === void 0 ? void 0 : _b.timezone)) {
|
|
92
108
|
const customFunction = (0, utils_1.customTimezone)(this.engine);
|
|
93
109
|
if (customFunction)
|
|
94
110
|
this.customFunctionList.add(customFunction);
|
|
95
111
|
}
|
|
96
|
-
return (0, columnTranspilation_1.columnTranspilation)(this.engine, data, this.
|
|
112
|
+
return (0, columnTranspilation_1.columnTranspilation)(this.engine, data, this.currentContext);
|
|
97
113
|
}
|
|
98
114
|
literal(expression) {
|
|
99
115
|
const { dataType, type } = expression;
|
|
@@ -157,7 +173,14 @@ class Transpiler {
|
|
|
157
173
|
}
|
|
158
174
|
functionCall(node) {
|
|
159
175
|
const { name, arguments: args } = node;
|
|
160
|
-
const
|
|
176
|
+
const requiresNewContext = !!this.currentContext &&
|
|
177
|
+
node.isExternalFormula;
|
|
178
|
+
if (requiresNewContext) {
|
|
179
|
+
// Push a new Raw Context when the Function is a External Formula
|
|
180
|
+
const externalFormulaContext = Object.assign(Object.assign({}, this.currentContext), { currentInputScope: node.functionScope || constants_1.OPERATION_SCOPE.RAW });
|
|
181
|
+
this.pushContext(externalFormulaContext);
|
|
182
|
+
}
|
|
183
|
+
const currentFunctionList = (0, isAggregate_1.isAggregateScope)(this.currentContext)
|
|
161
184
|
? functions_1.AGGREGATE_FUNCTION_LIST
|
|
162
185
|
: functions_1.ROW_FUNCTION_LIST;
|
|
163
186
|
const functionExists = currentFunctionList.includes(name);
|
|
@@ -172,11 +195,14 @@ class Transpiler {
|
|
|
172
195
|
this.aggregatedMap = aggregatedMap;
|
|
173
196
|
const parameters = args.map((param) => this.processNode(param));
|
|
174
197
|
const value = this.executer(func, parameters, node);
|
|
198
|
+
// Remove the last context if it was an external formula
|
|
199
|
+
if (requiresNewContext)
|
|
200
|
+
this.popContext();
|
|
175
201
|
return { value, dataType: node.primitive, type: node.type, node };
|
|
176
202
|
}
|
|
177
203
|
executer(func, args, node) {
|
|
178
204
|
(0, validateFuncStructure_1.validateFuncStructure)(func, args, node, {
|
|
179
|
-
context: this.
|
|
205
|
+
context: this.currentContext,
|
|
180
206
|
});
|
|
181
207
|
args = args.map((item) => item.value);
|
|
182
208
|
return func.transpiler[this.engine](...args);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/transpiler/index.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/transpiler/index.ts"],"names":[],"mappings":";;;AAAA,4CAMsB;AAgBtB,uDAAwE;AACxE,4CAIsB;AACtB,oCAOkB;AAClB,mEAAgE;AAChE,+DAA4D;AAC5D,qEAAkE;AAClE,yDAAsD;AACtD,4DAAgE;AAChE,qDAAwD;AACxD,gEAA6D;AAC7D,8EAA2E;AAC3E,sDAAwD;AACxD,MAAa,UAAU;IAMnB,YACY,GAAe,EACN,MAAe,EACf,aAA8B;QAFvC,QAAG,GAAH,GAAG,CAAY;QACN,WAAM,GAAN,MAAM,CAAS;QACf,kBAAa,GAAb,aAAa,CAAiB;QAR3C,uBAAkB,GAAgB,IAAI,GAAG,EAAE,CAAC;QAC5C,kBAAa,GAAiB,IAAI,GAAG,EAAE,CAAC;QACxC,qBAAgB,GAAqB,IAAI,mCAAgB,EAAE,CAAC;QAC5D,iBAAY,GAAqB,EAAE,CAAC;QAOxC,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC5B,CAAC;IAEO,gBAAgB;QACpB,IAAI,IAAI,CAAC,aAAa;YAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACjE,CAAC;IAEO,WAAW,CAAC,OAAuB;QACvC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IAEO,UAAU;QACd,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC;IAC5B,CAAC;IAED,IAAY,cAAc;QACtB,wDAAwD;QACxD,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC3D,CAAC;IAEM,GAAG;QACN,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;QAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACzD,MAAM,UAAU,GAAG,IAAA,+CAAsB,EACrC,IAAI,CAAC,kBAAkB,EACvB,MAAM,CACT,CAAC;QAEF,MAAM,OAAO,GAAG;YACZ,MAAM,EAAE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK;YACrB,iBAAiB,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI;gBACtC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;gBACzC,CAAC,CAAC,SAAS;YACf,eAAe,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YAC/D,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO;SAC5B,CAAC;QAEF,OAAO;YACH,KAAK,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,IAAI,IAAI,KAAK,SAAS;YAC7D,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE;YACnC,OAAO;YACP,UAAU,EAAE,IAAI,CAAC,gBAAgB,CAAC,SAAS;gBACvC,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,UAAU;SACnB,CAAC;IACN,CAAC;IAEO,WAAW,CAAC,UAAqB;;QACrC,IAAI;YACA,MAAM,EAAE,IAAI,EAAE,GAAG,UAAU,aAAV,UAAU,cAAV,UAAU,GAAI,EAAE,IAAI,EAAE,qBAAS,CAAC,OAAO,EAAE,CAAC;YAC3D,MAAM,KAAK,GAAQ;gBACf,CAAC,qBAAS,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,OAAO;gBAC/B,CAAC,qBAAS,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,OAAO;gBACjC,CAAC,qBAAS,CAAC,MAAM,CAAC,EAAE,CAAA,MAAA,IAAI,CAAC,cAAc,0CAAE,aAAa;oBAClD,CAAC,CAAC,IAAI,CAAC,6BAA6B;oBACpC,CAAC,CAAC,IAAI,CAAC,MAAM;gBACjB,CAAC,qBAAS,CAAC,eAAe,CAAC,EAAE,IAAI,CAAC,6BAA6B;gBAC/D,CAAC,qBAAS,CAAC,eAAe,CAAC,EAAE,IAAI,CAAC,eAAe;gBACjD,CAAC,qBAAS,CAAC,gBAAgB,CAAC,EAAE,IAAI,CAAC,gBAAgB;gBACnD,CAAC,qBAAS,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,YAAY;aAC9C,CAAC;YACF,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;gBACZ,OAAO;oBACH,KAAK,EAAE,IAAI;oBACX,IAAI;oBACJ,QAAQ,EAAE,0BAAc,CAAC,OAAO;oBAChC,IAAI,EAAE,UAAU;iBACnB,CAAC;YACN,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;SAC7C;QAAC,OAAO,KAAK,EAAE;YACZ,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAClC,OAAO;gBACH,KAAK,EAAE,EAAE;gBACT,IAAI,EAAE,qBAAS,CAAC,OAAO;gBACvB,QAAQ,EAAE,0BAAc,CAAC,OAAO;gBAChC,IAAI,EAAE,UAAU;aACnB,CAAC;SACL;IACL,CAAC;IAEO,6BAA6B,CAAC,IAAiB;;QACnD,MAAM,KAAK,GAAG,CAAC,CAAA,MAAA,IAAI,CAAC,cAAc,0CAAE,UAAU,KAAI,EAAE,CAAC,CACjD,MAAA,MAAA,IAAI,CAAC,OAAO,0CAAE,EAAE,mCAAI,EAAE,CACzB,CAAC;QACF,OAAO,IAAI,CAAC,OAAO,iCACZ,IAAI,KACP,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EACtC,QAAQ,EAAE,MAAA,MAAA,IAAI,CAAC,OAAO,0CAAE,IAAI,mCAAI,0BAAc,CAAC,MAAM,IACvD,CAAC;IACP,CAAC;IAEO,MAAM,CAAC,IAAiB;;QAC5B,IAAI,IAAI,CAAC,MAAM,KAAK,mBAAO,CAAC,aAAa;YACrC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,wBAAc,CAAC,CAAC;QAChD,IACI,CAAA,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,0CAAE,IAAI,MAAK,0BAAc,CAAC,IAAI;aAC3C,MAAA,IAAI,CAAC,cAAc,0CAAE,QAAQ,CAAA,EAC/B;YACE,MAAM,cAAc,GAAG,IAAA,sBAAc,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACnD,IAAI,cAAc;gBAAE,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;SACnE;QACD,OAAO,IAAA,yCAAmB,EAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IACvE,CAAC;IAEO,OAAO,CAAC,UAAsB;QAClC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,UAAU,CAAC;QACtC,IAAI,EAAE,KAAK,EAAE,GAAG,UAAU,CAAC;QAE3B,IAAI,KAAK,KAAK,MAAM;YAChB,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;QACvD,IAAI,QAAQ,KAAK,0BAAc,CAAC,IAAI;YAChC,KAAK,GAAG,IAAA,sBAAc,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC;QAC/C,IAAI,QAAQ,KAAK,0BAAc,CAAC,MAAM,EAAE;YACpC,KAAK,GAAG,IAAA,mCAAgB,EAAC,KAAe,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;SAC1D;QAED,IAAI,QAAQ,KAAK,0BAAc,CAAC,OAAO,EAAE;YACrC,KAAK,GAAG,IAAA,qBAAa,EAAC,KAAe,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;SACvD;QAED,MAAM,qBAAqB,GACvB,IAAI,CAAC,MAAM,KAAK,mBAAO,CAAC,aAAa;YACrC,QAAQ,KAAK,0BAAc,CAAC,MAAM,CAAC;QACvC,IAAI,qBAAqB,IAAI,IAAA,oBAAY,EAAC,KAAe,CAAC,EAAE;YACxD,KAAK,GAAG,GAAG,KAAK,GAAG,CAAC;SACvB;aAAM;YACH,KAAK,GAAG,IAAA,iDAAuB,EAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;SACvD;QACD,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;IACvD,CAAC;IAEO,eAAe,CAAC,UAA8B;QAClD,IAAI,CAAC,UAAU,CAAC,KAAK;YACjB,OAAO;gBACH,KAAK,EAAE,EAAE;gBACT,IAAI,EAAE,UAAU,CAAC,IAAI;gBACrB,QAAQ,EAAE,0BAAc,CAAC,MAAM;gBAC/B,IAAI,EAAE,UAAU;aACnB,CAAC;QACN,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAClE,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,QAAQ,IAAI,WAAW,GAAG,CAAC;QACxD,OAAO;YACH,KAAK;YACL,QAAQ,EAAE,UAAU,CAAC,SAAS;YAC9B,IAAI,EAAE,UAAU,CAAC,IAAI;YACrB,IAAI,EAAE,UAAU;SACnB,CAAC;IACN,CAAC;IAEO,gBAAgB,CACpB,UAA+B;;QAE/B,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,UAAU,CAAC;QACnD,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK;YACf,OAAO;gBACH,KAAK,EAAE,EAAE;gBACT,IAAI;gBACJ,QAAQ,EAAE,0BAAc,CAAC,MAAM;gBAC/B,IAAI,EAAE,UAAU;aACnB,CAAC;QACN,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACrD,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACvD,MAAM,KAAK,GAAG,IAAI,UAAU,IACxB,MAAA,MAAA,2BAAe,CAAC,IAAI,CAAC,MAAM,CAAC,0CAAG,QAAQ,CAAC,mCAAI,QAChD,IAAI,WAAW,GAAG,CAAC;QACnB,OAAO;YACH,KAAK;YACL,QAAQ,EAAE,UAAU,CAAC,SAAS;YAC9B,IAAI;YACJ,IAAI,EAAE,UAAU;SACnB,CAAC;IACN,CAAC;IAEO,YAAY,CAAC,IAAqB;QACtC,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;QAEvC,MAAM,kBAAkB,GACpB,CAAC,CAAC,IAAI,CAAC,cAAc;YACpB,IAAsC,CAAC,iBAAiB,CAAC;QAC9D,IAAI,kBAAkB,EAAE;YACpB,iEAAiE;YACjE,MAAM,sBAAsB,mCACrB,IAAI,CAAC,cAAc,KACtB,iBAAiB,EAAE,IAAI,CAAC,aAAa,IAAI,2BAAe,CAAC,GAAG,GAC/D,CAAC;YACF,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,CAAC;SAC5C;QAED,MAAM,mBAAmB,GAAG,IAAA,8BAAgB,EAAC,IAAI,CAAC,cAAc,CAAC;YAC7D,CAAC,CAAC,mCAAuB;YACzB,CAAC,CAAC,6BAAiB,CAAC;QACxB,MAAM,cAAc,GAAG,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC1D,IAAI,CAAC,cAAc;YAAE,MAAM,IAAI,kCAAoB,CAAC,IAAI,CAAC,CAAC;QAC1D,MAAM,IAAI,GAAG,wBAAY,CAAC,IAAI,CAAC,CAAC;QAEhC,MAAM,cAAc,GAAG,IAAA,sBAAkB,EAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC7D,IAAI,cAAc;YAAE,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAEhE,MAAM,aAAa,GAAG,IAAA,yBAAqB,EACvC,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,aAAa,EAClB,IAAI,CACP,CAAC;QACF,IAAI,aAAa;YAAE,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QAEtD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;QAChE,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;QAEpD,wDAAwD;QACxD,IAAI,kBAAkB;YAAE,IAAI,CAAC,UAAU,EAAE,CAAC;QAC1C,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;IACtE,CAAC;IAEO,QAAQ,CACZ,IAAwB,EACxB,IAA8B,EAC9B,IAAqB;QAErB,IAAA,6CAAqB,EAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;YACpC,OAAO,EAAE,IAAI,CAAC,cAAc;SAC/B,CAAC,CAAC;QACH,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtC,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IACjD,CAAC;CACJ;AA3OD,gCA2OC;AAED,SAAgB,YAAY,CACxB,GAAe,EACf,MAAe,EACf,OAAwB;;IAExB,MAAM,eAAe,GAAG,CAAC,MAAA,MAAA,GAAG,CAAC,MAAM,0CAAE,MAAM,mCAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IACtD,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IACxD,MAAM,eAAe,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC;IACzC,MAAM,MAAM,GAAG,mBAAmB,CAAC,eAAe,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACvE,uCACO,eAAe,KAClB,KAAK,EAAE,eAAe,CAAC,KAAK,IAAI,CAAC,eAAe,EAChD,MAAM,IACR;AACN,CAAC;AAdD,oCAcC;AAED,SAAS,mBAAmB,CACxB,gBAAyC,EACzC,SAAkC;IAElC,MAAM,UAAU,GAAG,UAAU,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC;IAC3D,IAAI,CAAC,UAAU;QAAE,OAAO,SAAS,CAAC;IAClC,MAAM,mBAAmB,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAC1D,MAAM,MAAM,GAAG,uBAAuB,CAAC,mBAAmB,CAAC,CAAC;IAC5D,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,SAAS,UAAU,CACf,gBAAyC,EACzC,SAAkC;IAElC,OAAO,gBAAgB,IAAI,CAAC,SAAS,IAAI,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,MAAM,IAAG,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC,GAAG,CAAC,gBAAgB,aAAhB,gBAAgB,cAAhB,gBAAgB,GAAI,EAAE,CAAC,EAAE,GAAG,CAAC,SAAS,aAAT,SAAS,cAAT,SAAS,GAAI,EAAE,CAAC,CAAC;QACrD,CAAC,CAAC,SAAS,CAAC;AACpB,CAAC;AAED,SAAS,iBAAiB,CAAC,MAAmB;IAC1C,MAAM,YAAY,GAAgB,EAAE,CAAC;IACrC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;;QACrB,IAAI,CAAC,KAAK,CAAC,IAAI;YAAE,OAAO,CAAC,kCAAkC;QAC3D,IACI,CAAA,MAAA,KAAK,CAAC,IAAI,0CAAE,IAAI,MAAK,qBAAS,CAAC,YAAY;YAC1C,KAAK,CAAC,IAAwB,CAAC,kBAAkB,EACpD;YACE,MAAM,kBAAkB,GAAI,KAAK,CAAC,IAAwB;iBACrD,kBAAkB,CAAC;YACxB,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC;YAC1C,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,kBAAkB,CAAC,EAAE,CAAC;SACzC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,6BAAgB,CAAC,mBAAmB,CAAC,IAAI,EAAE;YACjE,MAAM,YAAY,GAAI,KAAK,CAAC,IAA2B;iBAClD,YAAY,CAAC;YAClB,IAAI,YAAY,EAAE;gBACd,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC;gBACpC,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,YAAY,CAAC,EAAE,CAAC;aACnC;SACJ;QACD,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;IACH,OAAO,YAAY,CAAC;AACxB,CAAC;AAED,SAAS,uBAAuB,CAAC,UAAuB;IACpD,MAAM,MAAM,GAAgB,EAAE,CAAC;IAC/B,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;QAChC,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAC1B,CAAC,KAAgB,EAAE,EAAE,CACjB,KAAK,CAAC,IAAI;YACV,SAAS,CAAC,IAAI;YACd,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI;YACtC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,CACzC,CAAC;QACF,IAAI,CAAC,UAAU,EAAE;YACb,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SAC1B;KACJ;IACD,OAAO,MAAM,CAAC;AAClB,CAAC"}
|
|
@@ -7,7 +7,12 @@ export declare class Transpiler {
|
|
|
7
7
|
private customFunctionList;
|
|
8
8
|
private aggregatedMap;
|
|
9
9
|
private formulaErrorList;
|
|
10
|
+
private contextStack;
|
|
10
11
|
constructor(ast: ProgramAST, engine: ENGINES, globalContext?: FormulaContext | undefined);
|
|
12
|
+
private initContextStack;
|
|
13
|
+
private pushContext;
|
|
14
|
+
private popContext;
|
|
15
|
+
private get currentContext();
|
|
11
16
|
get(): TranspilationResponse;
|
|
12
17
|
private processNode;
|
|
13
18
|
private conversionFromColumnToLiteral;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ENGINES, AST_TYPES, CustomOperators, AST_PRIMITIVES, } from '../constants';
|
|
1
|
+
import { ENGINES, AST_TYPES, CustomOperators, AST_PRIMITIVES, OPERATION_SCOPE, } from '../constants';
|
|
2
2
|
import { UnknownFunctionError } from '../errors/definitions';
|
|
3
3
|
import { AGGREGATE_FUNCTION_LIST, functionList, ROW_FUNCTION_LIST, } from '../functions';
|
|
4
4
|
import { customFunction as customFunctionUtil, customDateCast, customTimezone, isLongNumber, aggregateFunction as aggregateFunctionUtil, customBoolean, } from '../utils';
|
|
@@ -19,6 +19,22 @@ export class Transpiler {
|
|
|
19
19
|
this.customFunctionList = new Set();
|
|
20
20
|
this.aggregatedMap = new Map();
|
|
21
21
|
this.formulaErrorList = new FormulaErrorList();
|
|
22
|
+
this.contextStack = [];
|
|
23
|
+
this.initContextStack();
|
|
24
|
+
}
|
|
25
|
+
initContextStack() {
|
|
26
|
+
if (this.globalContext)
|
|
27
|
+
this.pushContext(this.globalContext);
|
|
28
|
+
}
|
|
29
|
+
pushContext(context) {
|
|
30
|
+
this.contextStack.push(context);
|
|
31
|
+
}
|
|
32
|
+
popContext() {
|
|
33
|
+
this.contextStack.pop();
|
|
34
|
+
}
|
|
35
|
+
get currentContext() {
|
|
36
|
+
// The last context in the stack is the current context.
|
|
37
|
+
return this.contextStack[this.contextStack.length - 1];
|
|
22
38
|
}
|
|
23
39
|
get() {
|
|
24
40
|
const { body } = this.ast;
|
|
@@ -48,7 +64,7 @@ export class Transpiler {
|
|
|
48
64
|
const nodes = {
|
|
49
65
|
[AST_TYPES.token]: this.literal,
|
|
50
66
|
[AST_TYPES.literal]: this.literal,
|
|
51
|
-
[AST_TYPES.column]: ((_a = this.
|
|
67
|
+
[AST_TYPES.column]: ((_a = this.currentContext) === null || _a === void 0 ? void 0 : _a.useSampleData)
|
|
52
68
|
? this.conversionFromColumnToLiteral
|
|
53
69
|
: this.column,
|
|
54
70
|
[AST_TYPES.externalFormula]: this.conversionFromColumnToLiteral,
|
|
@@ -77,7 +93,7 @@ export class Transpiler {
|
|
|
77
93
|
}
|
|
78
94
|
conversionFromColumnToLiteral(data) {
|
|
79
95
|
var _a, _b, _c, _d, _e;
|
|
80
|
-
const value = (((_a = this.
|
|
96
|
+
const value = (((_a = this.currentContext) === null || _a === void 0 ? void 0 : _a.sampleData) || {})[(_c = (_b = data.context) === null || _b === void 0 ? void 0 : _b.id) !== null && _c !== void 0 ? _c : ''];
|
|
81
97
|
return this.literal(Object.assign(Object.assign({}, data), { value: value === null ? 'null' : value, dataType: (_e = (_d = data.context) === null || _d === void 0 ? void 0 : _d.type) !== null && _e !== void 0 ? _e : AST_PRIMITIVES.STRING }));
|
|
82
98
|
}
|
|
83
99
|
column(data) {
|
|
@@ -85,12 +101,12 @@ export class Transpiler {
|
|
|
85
101
|
if (this.engine === ENGINES.ELASTICSEARCH)
|
|
86
102
|
this.customFunctionList.add(getValueScript);
|
|
87
103
|
if (((_a = data === null || data === void 0 ? void 0 : data.context) === null || _a === void 0 ? void 0 : _a.type) === AST_PRIMITIVES.DATE &&
|
|
88
|
-
((_b = this.
|
|
104
|
+
((_b = this.currentContext) === null || _b === void 0 ? void 0 : _b.timezone)) {
|
|
89
105
|
const customFunction = customTimezone(this.engine);
|
|
90
106
|
if (customFunction)
|
|
91
107
|
this.customFunctionList.add(customFunction);
|
|
92
108
|
}
|
|
93
|
-
return columnTranspilation(this.engine, data, this.
|
|
109
|
+
return columnTranspilation(this.engine, data, this.currentContext);
|
|
94
110
|
}
|
|
95
111
|
literal(expression) {
|
|
96
112
|
const { dataType, type } = expression;
|
|
@@ -154,7 +170,14 @@ export class Transpiler {
|
|
|
154
170
|
}
|
|
155
171
|
functionCall(node) {
|
|
156
172
|
const { name, arguments: args } = node;
|
|
157
|
-
const
|
|
173
|
+
const requiresNewContext = !!this.currentContext &&
|
|
174
|
+
node.isExternalFormula;
|
|
175
|
+
if (requiresNewContext) {
|
|
176
|
+
// Push a new Raw Context when the Function is a External Formula
|
|
177
|
+
const externalFormulaContext = Object.assign(Object.assign({}, this.currentContext), { currentInputScope: node.functionScope || OPERATION_SCOPE.RAW });
|
|
178
|
+
this.pushContext(externalFormulaContext);
|
|
179
|
+
}
|
|
180
|
+
const currentFunctionList = isAggregateScope(this.currentContext)
|
|
158
181
|
? AGGREGATE_FUNCTION_LIST
|
|
159
182
|
: ROW_FUNCTION_LIST;
|
|
160
183
|
const functionExists = currentFunctionList.includes(name);
|
|
@@ -169,11 +192,14 @@ export class Transpiler {
|
|
|
169
192
|
this.aggregatedMap = aggregatedMap;
|
|
170
193
|
const parameters = args.map((param) => this.processNode(param));
|
|
171
194
|
const value = this.executer(func, parameters, node);
|
|
195
|
+
// Remove the last context if it was an external formula
|
|
196
|
+
if (requiresNewContext)
|
|
197
|
+
this.popContext();
|
|
172
198
|
return { value, dataType: node.primitive, type: node.type, node };
|
|
173
199
|
}
|
|
174
200
|
executer(func, args, node) {
|
|
175
201
|
validateFuncStructure(func, args, node, {
|
|
176
|
-
context: this.
|
|
202
|
+
context: this.currentContext,
|
|
177
203
|
});
|
|
178
204
|
args = args.map((item) => item.value);
|
|
179
205
|
return func.transpiler[this.engine](...args);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/transpiler/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,OAAO,EACP,SAAS,EACT,eAAe,EACf,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/transpiler/index.ts"],"names":[],"mappings":"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"}
|