@qrvey/formula-lang 0.11.1 → 0.11.3
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/CHANGELOG.md +10 -0
- package/dist/cjs/constants/interfaces.d.ts +15 -6
- package/dist/cjs/errors/definitions.d.ts +19 -17
- package/dist/cjs/errors/definitions.js +31 -26
- package/dist/cjs/errors/definitions.js.map +1 -1
- package/dist/cjs/errors/dictionary.d.ts +1 -4
- package/dist/cjs/errors/dictionary.js +4 -19
- package/dist/cjs/errors/dictionary.js.map +1 -1
- package/dist/cjs/errors/mismatch.d.ts +12 -11
- package/dist/cjs/errors/mismatch.js +33 -15
- package/dist/cjs/errors/mismatch.js.map +1 -1
- package/dist/cjs/functions/datedif.js +3 -3
- package/dist/cjs/functions/datedif.js.map +1 -1
- package/dist/cjs/functions/if.js +26 -3
- package/dist/cjs/functions/if.js.map +1 -1
- package/dist/cjs/functions/ifs.js +35 -9
- package/dist/cjs/functions/ifs.js.map +1 -1
- package/dist/cjs/functions/isNull.js +56 -4
- package/dist/cjs/functions/isNull.js.map +1 -1
- package/dist/cjs/functions/mid.js +33 -1
- package/dist/cjs/functions/mid.js.map +1 -1
- package/dist/cjs/grammar/generated/qformula.lang.js +14 -12
- package/dist/cjs/grammar/generated/qformula.lang.js.map +1 -1
- package/dist/cjs/grammar/generated/qformula.lang.terms.d.ts +20 -20
- package/dist/cjs/grammar/generated/qformula.lang.terms.js +1 -1
- package/dist/cjs/grammar/generated/qformula.lang.terms.js.map +1 -1
- package/dist/cjs/parser/json-parser.js +7 -5
- package/dist/cjs/parser/json-parser.js.map +1 -1
- package/dist/cjs/transpiler/validateFuncStructure.d.ts +1 -1
- package/dist/cjs/transpiler/validateFuncStructure.js +54 -58
- package/dist/cjs/transpiler/validateFuncStructure.js.map +1 -1
- package/dist/cjs/utils/isAColumn.d.ts +2 -3
- package/dist/cjs/utils/isAColumn.js +2 -6
- package/dist/cjs/utils/isAColumn.js.map +1 -1
- package/dist/cjs/utils/isALiteral.d.ts +2 -0
- package/dist/cjs/utils/isALiteral.js +9 -0
- package/dist/cjs/utils/isALiteral.js.map +1 -0
- package/dist/cjs/utils/isBooleanExpression.d.ts +1 -1
- package/dist/cjs/utils/isBooleanExpression.js +9 -5
- package/dist/cjs/utils/isBooleanExpression.js.map +1 -1
- package/dist/cjs/utils/isDateParam.js +8 -2
- package/dist/cjs/utils/isDateParam.js.map +1 -1
- package/dist/cjs/utils/isNumberParam.js +8 -2
- package/dist/cjs/utils/isNumberParam.js.map +1 -1
- package/dist/cjs/utils/isStringParam.js +8 -2
- package/dist/cjs/utils/isStringParam.js.map +1 -1
- package/dist/cjs/utils/primitiveFunctions.d.ts +1 -0
- package/dist/cjs/utils/primitiveFunctions.js +5 -1
- package/dist/cjs/utils/primitiveFunctions.js.map +1 -1
- package/dist/module/constants/interfaces.d.ts +15 -6
- package/dist/module/errors/definitions.d.ts +19 -17
- package/dist/module/errors/definitions.js +27 -22
- package/dist/module/errors/definitions.js.map +1 -1
- package/dist/module/errors/dictionary.d.ts +1 -4
- package/dist/module/errors/dictionary.js +4 -19
- package/dist/module/errors/dictionary.js.map +1 -1
- package/dist/module/errors/mismatch.d.ts +12 -11
- package/dist/module/errors/mismatch.js +35 -17
- package/dist/module/errors/mismatch.js.map +1 -1
- package/dist/module/functions/datedif.js +3 -3
- package/dist/module/functions/datedif.js.map +1 -1
- package/dist/module/functions/if.js +27 -4
- package/dist/module/functions/if.js.map +1 -1
- package/dist/module/functions/ifs.js +36 -10
- package/dist/module/functions/ifs.js.map +1 -1
- package/dist/module/functions/isNull.js +57 -5
- package/dist/module/functions/isNull.js.map +1 -1
- package/dist/module/functions/mid.js +34 -2
- package/dist/module/functions/mid.js.map +1 -1
- package/dist/module/grammar/generated/qformula.lang.js +14 -12
- package/dist/module/grammar/generated/qformula.lang.js.map +1 -1
- package/dist/module/grammar/generated/qformula.lang.terms.d.ts +20 -20
- package/dist/module/grammar/generated/qformula.lang.terms.js +1 -1
- package/dist/module/grammar/generated/qformula.lang.terms.js.map +1 -1
- package/dist/module/parser/json-parser.js +7 -5
- package/dist/module/parser/json-parser.js.map +1 -1
- package/dist/module/transpiler/validateFuncStructure.d.ts +1 -1
- package/dist/module/transpiler/validateFuncStructure.js +55 -59
- package/dist/module/transpiler/validateFuncStructure.js.map +1 -1
- package/dist/module/utils/isAColumn.d.ts +2 -3
- package/dist/module/utils/isAColumn.js +2 -6
- package/dist/module/utils/isAColumn.js.map +1 -1
- package/dist/module/utils/isALiteral.d.ts +2 -0
- package/dist/module/utils/isALiteral.js +5 -0
- package/dist/module/utils/isALiteral.js.map +1 -0
- package/dist/module/utils/isBooleanExpression.d.ts +1 -1
- package/dist/module/utils/isBooleanExpression.js +9 -5
- package/dist/module/utils/isBooleanExpression.js.map +1 -1
- package/dist/module/utils/isDateParam.js +8 -2
- package/dist/module/utils/isDateParam.js.map +1 -1
- package/dist/module/utils/isNumberParam.js +8 -2
- package/dist/module/utils/isNumberParam.js.map +1 -1
- package/dist/module/utils/isStringParam.js +8 -2
- package/dist/module/utils/isStringParam.js.map +1 -1
- package/dist/module/utils/primitiveFunctions.d.ts +1 -0
- package/dist/module/utils/primitiveFunctions.js +3 -0
- package/dist/module/utils/primitiveFunctions.js.map +1 -1
- package/package.json +1 -1
- package/dist/cjs/utils/isNotAColumn.d.ts +0 -3
- package/dist/cjs/utils/isNotAColumn.js +0 -13
- package/dist/cjs/utils/isNotAColumn.js.map +0 -1
- package/dist/module/utils/isNotAColumn.d.ts +0 -3
- package/dist/module/utils/isNotAColumn.js +0 -9
- package/dist/module/utils/isNotAColumn.js.map +0 -1
|
@@ -6,16 +6,14 @@ export var ERROR_LIST;
|
|
|
6
6
|
ERROR_LIST["missingString"] = "missingString";
|
|
7
7
|
ERROR_LIST["missingNumber"] = "missingNumber";
|
|
8
8
|
ERROR_LIST["missingDate"] = "missingDate";
|
|
9
|
-
ERROR_LIST["
|
|
9
|
+
ERROR_LIST["greaterThan"] = "greaterThan";
|
|
10
10
|
ERROR_LIST["missingArg"] = "missingArg";
|
|
11
11
|
ERROR_LIST["missingParenthesis"] = "missingParenthesis";
|
|
12
12
|
ERROR_LIST["unknownFunction"] = "unknownFunction";
|
|
13
13
|
ERROR_LIST["unknown"] = "unknown";
|
|
14
14
|
ERROR_LIST["customDateDifParams"] = "customDateDifParams";
|
|
15
15
|
ERROR_LIST["tooManyArguments"] = "tooManyArguments";
|
|
16
|
-
ERROR_LIST["unknownExpression"] = "unknownExpression";
|
|
17
16
|
ERROR_LIST["unknownToken"] = "unknownToken";
|
|
18
|
-
ERROR_LIST["notAllowedExpression"] = "notAllowedExpression";
|
|
19
17
|
ERROR_LIST["notAllowedOperation"] = "notAllowedOperation";
|
|
20
18
|
ERROR_LIST["outOfRange"] = "outOfRange";
|
|
21
19
|
ERROR_LIST["invalidCastNumber"] = "invalidCastNumber";
|
|
@@ -23,7 +21,6 @@ export var ERROR_LIST;
|
|
|
23
21
|
ERROR_LIST["booleanExpression"] = "booleanExpression";
|
|
24
22
|
ERROR_LIST["missingColumnExpression"] = "missingColumnExpression";
|
|
25
23
|
ERROR_LIST["noColumnExpression"] = "noColumnExpression";
|
|
26
|
-
ERROR_LIST["argumentsDataType"] = "argumentsDataType";
|
|
27
24
|
ERROR_LIST["functionArgumentsMismatch"] = "functionArgumentsMismatch";
|
|
28
25
|
})(ERROR_LIST || (ERROR_LIST = {}));
|
|
29
26
|
export const ERROR_DICTIONARY = {
|
|
@@ -51,9 +48,9 @@ export const ERROR_DICTIONARY = {
|
|
|
51
48
|
message: 'Element has to be a Date',
|
|
52
49
|
code: 'MISSING_DATE',
|
|
53
50
|
},
|
|
54
|
-
[ERROR_LIST.
|
|
55
|
-
message: 'Element has to be greater than
|
|
56
|
-
code: '
|
|
51
|
+
[ERROR_LIST.greaterThan]: {
|
|
52
|
+
message: 'Element has to be greater than',
|
|
53
|
+
code: 'GREATER_THAN',
|
|
57
54
|
},
|
|
58
55
|
[ERROR_LIST.missingArg]: {
|
|
59
56
|
message: 'Missing arguments',
|
|
@@ -83,14 +80,6 @@ export const ERROR_DICTIONARY = {
|
|
|
83
80
|
message: 'Unit param have to be equal to: "Y", "M", "D"',
|
|
84
81
|
code: 'DATE_DIF_UNIT_PARAM',
|
|
85
82
|
},
|
|
86
|
-
[ERROR_LIST.unknownExpression]: {
|
|
87
|
-
message: 'Unknown expression',
|
|
88
|
-
code: 'UNKNOWN_EXPRESSION',
|
|
89
|
-
},
|
|
90
|
-
[ERROR_LIST.notAllowedExpression]: {
|
|
91
|
-
message: 'Expression not allowed',
|
|
92
|
-
code: 'NOT_ALLOWED_EXPRESSION',
|
|
93
|
-
},
|
|
94
83
|
[ERROR_LIST.notAllowedOperation]: {
|
|
95
84
|
message: 'Operation not allowed',
|
|
96
85
|
code: 'NOT_ALLOWED_OPERATION',
|
|
@@ -119,10 +108,6 @@ export const ERROR_DICTIONARY = {
|
|
|
119
108
|
message: 'Argument cannot be a column.',
|
|
120
109
|
code: 'NO_COLUMN_EXPRESSION',
|
|
121
110
|
},
|
|
122
|
-
[ERROR_LIST.argumentsDataType]: {
|
|
123
|
-
message: 'Arguments should have the same data type.',
|
|
124
|
-
code: 'ARGUMENTS_DATATYPE_ERROR',
|
|
125
|
-
},
|
|
126
111
|
[ERROR_LIST.functionArgumentsMismatch]: {
|
|
127
112
|
message: 'Function arguments mismatch.',
|
|
128
113
|
code: 'FUNCTION_ARGUMENTS_MISMATCH',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dictionary.js","sourceRoot":"","sources":["../../../src/errors/dictionary.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,
|
|
1
|
+
{"version":3,"file":"dictionary.js","sourceRoot":"","sources":["../../../src/errors/dictionary.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,33 +1,34 @@
|
|
|
1
|
-
import { AST_PRIMITIVES, AST_TYPES
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { AST_PRIMITIVES, AST_TYPES } from '../constants';
|
|
2
|
+
import { FunctionCallAST, FunctionDefinition, FunctionParameter, ProcessNodeResult, ValidatorParameterResponse, ValidatorResponse } from '../constants/interfaces';
|
|
3
|
+
import { FunctionError } from './definitions';
|
|
4
4
|
interface MissmatchDetail {
|
|
5
|
-
primitive:
|
|
5
|
+
primitive: AST_PRIMITIVES;
|
|
6
|
+
type?: AST_TYPES;
|
|
6
7
|
from?: number;
|
|
7
8
|
to?: number;
|
|
8
9
|
optional?: boolean;
|
|
9
10
|
}
|
|
10
11
|
interface MissmatchExpected extends MissmatchDetail {
|
|
11
|
-
custom?: boolean;
|
|
12
12
|
generic?: boolean;
|
|
13
13
|
}
|
|
14
14
|
interface Mismatch {
|
|
15
|
-
node:
|
|
15
|
+
node: FunctionCallAST;
|
|
16
16
|
validator: ValidatorResponse;
|
|
17
|
-
parameter?:
|
|
17
|
+
parameter?: FunctionParameter;
|
|
18
18
|
expected: Array<MissmatchExpected>;
|
|
19
19
|
received: Array<MissmatchDetail>;
|
|
20
20
|
}
|
|
21
|
-
export declare class FunctionArgumentsMismatch extends
|
|
21
|
+
export declare class FunctionArgumentsMismatch extends FunctionError implements Mismatch {
|
|
22
22
|
constructor(mismatch: Mismatch);
|
|
23
23
|
validator: ValidatorResponse;
|
|
24
|
-
parameter:
|
|
24
|
+
parameter: FunctionParameter | undefined;
|
|
25
25
|
expected: Array<MissmatchExpected>;
|
|
26
26
|
received: Array<MissmatchDetail>;
|
|
27
|
-
node:
|
|
27
|
+
node: FunctionCallAST;
|
|
28
28
|
}
|
|
29
|
-
export declare function validateParameters(definition: FunctionDefinition, args: Array<ProcessNodeResult>,
|
|
29
|
+
export declare function validateParameters(definition: FunctionDefinition, args: Array<ProcessNodeResult>, validators?: ValidatorParameterResponse[]): {
|
|
30
30
|
expected: Array<MissmatchExpected>;
|
|
31
31
|
received: Array<MissmatchDetail>;
|
|
32
|
+
validator?: ValidatorParameterResponse;
|
|
32
33
|
};
|
|
33
34
|
export {};
|
|
@@ -1,43 +1,63 @@
|
|
|
1
|
-
import { AST_PRIMITIVES
|
|
2
|
-
import {
|
|
1
|
+
import { AST_PRIMITIVES } from '../constants';
|
|
2
|
+
import { isSinglePrimitive } from '../utils/primitiveFunctions';
|
|
3
|
+
import { FunctionError } from './definitions';
|
|
3
4
|
import { ERROR_DICTIONARY, ERROR_LIST } from './dictionary';
|
|
4
|
-
export class FunctionArgumentsMismatch extends
|
|
5
|
+
export class FunctionArgumentsMismatch extends FunctionError {
|
|
5
6
|
constructor(mismatch) {
|
|
6
|
-
super(
|
|
7
|
+
super(mismatch.node, ERROR_DICTIONARY[ERROR_LIST.functionArgumentsMismatch]);
|
|
7
8
|
Object.assign(this, mismatch); // Expose mismatch params to `this` class
|
|
8
9
|
}
|
|
9
10
|
}
|
|
10
|
-
export function validateParameters(definition, args,
|
|
11
|
+
export function validateParameters(definition, args, validators = []) {
|
|
11
12
|
const received = args.map((arg) => {
|
|
12
13
|
const { from, to, primitive } = arg.node;
|
|
13
|
-
|
|
14
|
+
const singlePrimitive = isSinglePrimitive(primitive)
|
|
15
|
+
? primitive
|
|
16
|
+
: AST_PRIMITIVES.UNKNOWN;
|
|
17
|
+
return { from, to, primitive: singlePrimitive };
|
|
14
18
|
});
|
|
15
19
|
const parameters = definition.parameters || [];
|
|
16
20
|
const expected = [];
|
|
17
21
|
let parameterCount = 0;
|
|
22
|
+
let argumentIndex = 0;
|
|
23
|
+
let recursiveOptionals = false;
|
|
18
24
|
while (parameterCount < parameters.length) {
|
|
19
25
|
const param = parameters[parameterCount];
|
|
20
|
-
const
|
|
26
|
+
const paramValidators = validators.filter((fv) => fv.argumentIndex === argumentIndex);
|
|
27
|
+
const expectedPrimitive = transformParamInMissmatchExpected(param, paramValidators, recursiveOptionals);
|
|
21
28
|
expected.push(expectedPrimitive);
|
|
22
29
|
parameterCount++;
|
|
30
|
+
argumentIndex++;
|
|
23
31
|
const parameterListCompleted = parameterCount === parameters.length;
|
|
24
32
|
const hasMoreArguments = expected.length < received.length;
|
|
25
33
|
const isRecursive = typeof (definition === null || definition === void 0 ? void 0 : definition.recursiveStartIn) === 'number';
|
|
26
34
|
if (parameterListCompleted && isRecursive && hasMoreArguments) {
|
|
27
35
|
parameterCount = definition.recursiveStartIn;
|
|
36
|
+
recursiveOptionals = true;
|
|
28
37
|
}
|
|
29
38
|
}
|
|
30
|
-
|
|
39
|
+
const validator = validators.find((val) => !val.valid);
|
|
40
|
+
return { expected, received, validator };
|
|
31
41
|
}
|
|
32
|
-
function transformParamInMissmatchExpected(param,
|
|
33
|
-
const result = {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
42
|
+
function transformParamInMissmatchExpected(param, paramValidators, forcedOptional) {
|
|
43
|
+
const result = {
|
|
44
|
+
optional: forcedOptional === true ? forcedOptional : param.optional,
|
|
45
|
+
};
|
|
46
|
+
const expectedInfo = getExpectedInfoFromParam(param, paramValidators);
|
|
47
|
+
return Object.assign(Object.assign(Object.assign({}, result), expectedInfo), (param.generic && { generic: param.generic }));
|
|
48
|
+
}
|
|
49
|
+
function getExpectedInfoFromParam(param, paramValidators) {
|
|
50
|
+
const failedValidator = paramValidators.find((val) => !val.valid && !!val.mismatchData);
|
|
51
|
+
if (failedValidator) {
|
|
52
|
+
return failedValidator.mismatchData;
|
|
37
53
|
}
|
|
38
|
-
|
|
54
|
+
const firstExpected = paramValidators.find((val) => !!val.mismatchData);
|
|
55
|
+
if (firstExpected)
|
|
56
|
+
return firstExpected.mismatchData;
|
|
57
|
+
const primitive = getParamTypeFromMap(param);
|
|
58
|
+
return { primitive };
|
|
39
59
|
}
|
|
40
|
-
function
|
|
60
|
+
function getParamTypeFromMap(param) {
|
|
41
61
|
if (param.validator.length === 0) {
|
|
42
62
|
return AST_PRIMITIVES.UNKNOWN;
|
|
43
63
|
}
|
|
@@ -56,7 +76,5 @@ const FUNCTION_PRIMITIVE_MAPPER = {
|
|
|
56
76
|
isNumberParam: AST_PRIMITIVES.NUMBER,
|
|
57
77
|
isDateParam: AST_PRIMITIVES.DATE,
|
|
58
78
|
isBooleanExpression: AST_PRIMITIVES.BOOLEAN,
|
|
59
|
-
isAColumn: AST_TYPES.column,
|
|
60
|
-
customValidatorYMD: AST_PRIMITIVES.STRING,
|
|
61
79
|
};
|
|
62
80
|
//# sourceMappingURL=mismatch.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mismatch.js","sourceRoot":"","sources":["../../../src/errors/mismatch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"mismatch.js","sourceRoot":"","sources":["../../../src/errors/mismatch.ts"],"names":[],"mappings":"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"}
|
|
@@ -38,9 +38,9 @@ function customValidatorYMD(param) {
|
|
|
38
38
|
param = removeQuotes(param);
|
|
39
39
|
const valid = YMD_UNIT_LIST.includes(param);
|
|
40
40
|
if (!valid) {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
41
|
+
return Object.assign(Object.assign({ valid }, ERROR_DICTIONARY[ERROR_LIST.customDateDifParams]), { info: {
|
|
42
|
+
allowedValues: YMD_UNIT_LIST,
|
|
43
|
+
} });
|
|
44
44
|
}
|
|
45
45
|
return { valid };
|
|
46
46
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"datedif.js","sourceRoot":"","sources":["../../../src/functions/datedif.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAEpE;;GAEG;AACH,MAAM,CAAC,MAAM,OAAO,GAAuB;IACvC,UAAU,EAAE,SAAS;IACrB,UAAU,EAAE;QACR;YACI,UAAU,EAAE,YAAY;YACxB,QAAQ,EAAE,KAAK;YACf,SAAS,EAAE,CAAC,WAAW,CAAC;SAC3B;QACD;YACI,UAAU,EAAE,UAAU;YACtB,QAAQ,EAAE,KAAK;YACf,SAAS,EAAE,CAAC,WAAW,CAAC;SAC3B;QACD;YACI,UAAU,EAAE,MAAM;YAClB,QAAQ,EAAE,KAAK;YACf,SAAS,EAAE,CAAC,aAAa,EAAE,kBAAkB,CAAC;SACjD;KACJ;IACD,UAAU,EAAE;QACR,aAAa;QACb,SAAS;QACT,QAAQ;QACR,UAAU;KACb;IACD,eAAe,EAAE,cAAc,CAAC,MAAM;CACzC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACtC,SAAS,kBAAkB,CAAC,KAAU;IAClC,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IAC5B,MAAM,KAAK,GAAG,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC5C,IAAI,CAAC,KAAK,EAAE;QACR,
|
|
1
|
+
{"version":3,"file":"datedif.js","sourceRoot":"","sources":["../../../src/functions/datedif.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAEpE;;GAEG;AACH,MAAM,CAAC,MAAM,OAAO,GAAuB;IACvC,UAAU,EAAE,SAAS;IACrB,UAAU,EAAE;QACR;YACI,UAAU,EAAE,YAAY;YACxB,QAAQ,EAAE,KAAK;YACf,SAAS,EAAE,CAAC,WAAW,CAAC;SAC3B;QACD;YACI,UAAU,EAAE,UAAU;YACtB,QAAQ,EAAE,KAAK;YACf,SAAS,EAAE,CAAC,WAAW,CAAC;SAC3B;QACD;YACI,UAAU,EAAE,MAAM;YAClB,QAAQ,EAAE,KAAK;YACf,SAAS,EAAE,CAAC,aAAa,EAAE,kBAAkB,CAAC;SACjD;KACJ;IACD,UAAU,EAAE;QACR,aAAa;QACb,SAAS;QACT,QAAQ;QACR,UAAU;KACb;IACD,eAAe,EAAE,cAAc,CAAC,MAAM;CACzC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACtC,SAAS,kBAAkB,CAAC,KAAU;IAClC,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IAC5B,MAAM,KAAK,GAAG,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC5C,IAAI,CAAC,KAAK,EAAE;QACR,qCACI,KAAK,IACF,gBAAgB,CAAC,UAAU,CAAC,mBAAmB,CAAC,KACnD,IAAI,EAAE;gBACF,aAAa,EAAE,aAAa;aAC/B,IACH;KACL;IACD,OAAO,EAAE,KAAK,EAAE,CAAC;AACrB,CAAC;AAED,SAAS,aAAa,CAClB,KAAa,EACb,GAAW,EACX,IAAsB;IAEtB,IAAI,GAAG,YAAY,CAAC,IAAI,CAAqB,CAAC;IAC9C,OAAO,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,GAAG,CAAC,KAAa,EAAE,GAAW,EAAE,IAAsB;IAC3D,IAAI,GAAG,YAAY,CAAC,IAAI,CAAqB,CAAC;IAC9C,OAAO,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;AACxC,CAAC;AAED,SAAS,SAAS,CAAC,KAAa,EAAE,GAAW,EAAE,IAAsB;IACjE,OAAO,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;AACjC,CAAC;AAED,SAAS,QAAQ,CAAC,KAAa,EAAE,GAAW,EAAE,IAAsB;IAChE,OAAO,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;AACjC,CAAC;AAED,SAAS,UAAU,CACf,KAAa,EACb,GAAW,EACX,IAAsB;IAEtB,IAAI,GAAG,YAAY,CAAC,IAAI,CAAqB,CAAC;IAC9C,OAAO,eAAe,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;AAC7C,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { AST_PRIMITIVES } from '../constants';
|
|
2
|
+
import { ERROR_DICTIONARY, ERROR_LIST } from '../errors/dictionary';
|
|
2
3
|
import { isBooleanExpression } from '../utils/isBooleanExpression';
|
|
3
|
-
import { inferPrimitive } from '../utils/primitiveFunctions';
|
|
4
|
+
import { inferPrimitive, isSinglePrimitive } from '../utils/primitiveFunctions';
|
|
4
5
|
/**
|
|
5
6
|
* `IF` Returns one value if a logical expression is TRUE and another if it is FALSE.
|
|
6
7
|
*/
|
|
@@ -16,13 +17,13 @@ export const IF = {
|
|
|
16
17
|
identifier: 'VALUE_IF_TRUE',
|
|
17
18
|
optional: false,
|
|
18
19
|
generic: true,
|
|
19
|
-
validator: [],
|
|
20
|
+
validator: [samePrimitiveType],
|
|
20
21
|
},
|
|
21
22
|
{
|
|
22
23
|
identifier: 'VALUE_IF_FALSE',
|
|
23
24
|
optional: false,
|
|
24
25
|
generic: true,
|
|
25
|
-
validator: [],
|
|
26
|
+
validator: [samePrimitiveType],
|
|
26
27
|
},
|
|
27
28
|
],
|
|
28
29
|
transpiler: {
|
|
@@ -31,7 +32,6 @@ export const IF = {
|
|
|
31
32
|
redshift,
|
|
32
33
|
postgresql,
|
|
33
34
|
},
|
|
34
|
-
maxPrimitiveValues: 1,
|
|
35
35
|
primitiveResult(args) {
|
|
36
36
|
var _a, _b, _c, _d;
|
|
37
37
|
const truePrimitive = (_b = (_a = args === null || args === void 0 ? void 0 : args[1]) === null || _a === void 0 ? void 0 : _a.primitive) !== null && _b !== void 0 ? _b : AST_PRIMITIVES.UNKNOWN;
|
|
@@ -41,6 +41,29 @@ export const IF = {
|
|
|
41
41
|
return inferPrimitive(truePrimitive, falsePrimitive);
|
|
42
42
|
},
|
|
43
43
|
};
|
|
44
|
+
function samePrimitiveType(_param, _dataType, context) {
|
|
45
|
+
var _a, _b, _c, _d;
|
|
46
|
+
const fPrimitive = (_b = (_a = context.fnNode.arguments) === null || _a === void 0 ? void 0 : _a[1]) === null || _b === void 0 ? void 0 : _b.primitive;
|
|
47
|
+
const firstPrimitive = fPrimitive && isSinglePrimitive(fPrimitive)
|
|
48
|
+
? fPrimitive
|
|
49
|
+
: AST_PRIMITIVES.UNKNOWN;
|
|
50
|
+
const sPrimitive = (_d = (_c = context.fnNode.arguments) === null || _c === void 0 ? void 0 : _c[2]) === null || _d === void 0 ? void 0 : _d.primitive;
|
|
51
|
+
const secondPrimitive = sPrimitive && isSinglePrimitive(sPrimitive)
|
|
52
|
+
? sPrimitive
|
|
53
|
+
: AST_PRIMITIVES.UNKNOWN;
|
|
54
|
+
const ifPrimitive = calculateIfPrimitive(firstPrimitive, secondPrimitive);
|
|
55
|
+
const valid = firstPrimitive === secondPrimitive;
|
|
56
|
+
if (!valid)
|
|
57
|
+
return Object.assign(Object.assign({ valid }, ERROR_DICTIONARY[ERROR_LIST.inferredPrimitive]), { mismatchData: {
|
|
58
|
+
primitive: ifPrimitive,
|
|
59
|
+
} });
|
|
60
|
+
return { valid };
|
|
61
|
+
}
|
|
62
|
+
function calculateIfPrimitive(firstPrimitive, secondPrimitive) {
|
|
63
|
+
if (firstPrimitive !== AST_PRIMITIVES.UNKNOWN)
|
|
64
|
+
return firstPrimitive;
|
|
65
|
+
return secondPrimitive;
|
|
66
|
+
}
|
|
44
67
|
function elasticsearch(logicalExpression, valueIfTrue, valueIfFalse) {
|
|
45
68
|
return `(${logicalExpression} ? ${valueIfTrue} : ${valueIfFalse})`;
|
|
46
69
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"if.js","sourceRoot":"","sources":["../../../src/functions/if.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"if.js","sourceRoot":"","sources":["../../../src/functions/if.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
import { AST_PRIMITIVES } from '../constants';
|
|
2
|
+
import { ERROR_DICTIONARY, ERROR_LIST } from '../errors/dictionary';
|
|
1
3
|
import { isBooleanExpression } from '../utils/isBooleanExpression';
|
|
2
|
-
import { inferPrimitive } from '../utils/primitiveFunctions';
|
|
4
|
+
import { inferPrimitive, isSinglePrimitive } from '../utils/primitiveFunctions';
|
|
3
5
|
/**
|
|
4
6
|
* `IFS` Returns one value if a logical expression is TRUE
|
|
5
7
|
* when is False another logical expression have to be set with their returned value
|
|
@@ -18,7 +20,7 @@ export const IFS = {
|
|
|
18
20
|
identifier: 'VALUE_IF_TRUE',
|
|
19
21
|
optional: false,
|
|
20
22
|
generic: true,
|
|
21
|
-
validator: [],
|
|
23
|
+
validator: [sameRecursivePrimitiveType],
|
|
22
24
|
},
|
|
23
25
|
],
|
|
24
26
|
transpiler: {
|
|
@@ -27,17 +29,41 @@ export const IFS = {
|
|
|
27
29
|
redshift,
|
|
28
30
|
postgresql,
|
|
29
31
|
},
|
|
30
|
-
maxPrimitiveValues: 1,
|
|
31
32
|
primitiveResult(args) {
|
|
32
|
-
|
|
33
|
-
args.forEach((value, index) => {
|
|
34
|
-
if (index % 2 === 1) {
|
|
35
|
-
primitiveArgs.push(value.primitive);
|
|
36
|
-
}
|
|
37
|
-
});
|
|
38
|
-
return inferPrimitive(...primitiveArgs);
|
|
33
|
+
return calculateIfsPrimitive(args);
|
|
39
34
|
},
|
|
40
35
|
};
|
|
36
|
+
function sameRecursivePrimitiveType(_param, _dataType, context) {
|
|
37
|
+
const args = context.fnNode.arguments;
|
|
38
|
+
const firstArgsPrimitive = calculateFirstIFSPrimitive(args);
|
|
39
|
+
const ifsPrimitive = calculateIfsPrimitive(args);
|
|
40
|
+
const valid = isSinglePrimitive(ifsPrimitive);
|
|
41
|
+
if (!valid)
|
|
42
|
+
return Object.assign(Object.assign({ valid }, ERROR_DICTIONARY[ERROR_LIST.inferredPrimitive]), { mismatchData: {
|
|
43
|
+
primitive: firstArgsPrimitive,
|
|
44
|
+
} });
|
|
45
|
+
return {
|
|
46
|
+
valid,
|
|
47
|
+
mismatchData: {
|
|
48
|
+
primitive: ifsPrimitive,
|
|
49
|
+
},
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
function calculateIfsPrimitive(args) {
|
|
53
|
+
const primitiveArgs = [];
|
|
54
|
+
args.forEach((value, index) => {
|
|
55
|
+
if (index % 2 === 1) {
|
|
56
|
+
primitiveArgs.push(value.primitive);
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
return inferPrimitive(...primitiveArgs);
|
|
60
|
+
}
|
|
61
|
+
function calculateFirstIFSPrimitive(args) {
|
|
62
|
+
var _a, _b;
|
|
63
|
+
return ((_b = (_a = args.find((arg, index) => index % 2 === 1 &&
|
|
64
|
+
isSinglePrimitive(arg.primitive) &&
|
|
65
|
+
arg.primitive !== AST_PRIMITIVES.UNKNOWN)) === null || _a === void 0 ? void 0 : _a.primitive) !== null && _b !== void 0 ? _b : AST_PRIMITIVES.UNKNOWN);
|
|
66
|
+
}
|
|
41
67
|
function elasticsearch(...args) {
|
|
42
68
|
const _args = [...args];
|
|
43
69
|
const logicalExpression = _args.shift();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ifs.js","sourceRoot":"","sources":["../../../src/functions/ifs.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ifs.js","sourceRoot":"","sources":["../../../src/functions/ifs.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
import { AST_PRIMITIVES, AST_TYPES } from '../constants';
|
|
2
|
+
import { ERROR_DICTIONARY, ERROR_LIST } from '../errors/dictionary';
|
|
1
3
|
import { isAColumn } from '../utils/isAColumn';
|
|
2
|
-
import {
|
|
3
|
-
import { inferPrimitive } from '../utils/primitiveFunctions';
|
|
4
|
+
import { isALiteral } from '../utils/isALiteral';
|
|
5
|
+
import { inferPrimitive, isSinglePrimitive } from '../utils/primitiveFunctions';
|
|
4
6
|
/**
|
|
5
7
|
* `ISNULL` Returns the replacement if the value is a null
|
|
6
8
|
*/
|
|
@@ -10,13 +12,13 @@ export const ISNULL = {
|
|
|
10
12
|
{
|
|
11
13
|
identifier: 'VALUE',
|
|
12
14
|
optional: false,
|
|
13
|
-
validator: [
|
|
15
|
+
validator: [samePrimitiveTypeCol],
|
|
14
16
|
},
|
|
15
17
|
{
|
|
16
18
|
identifier: 'REPLACEMENT',
|
|
17
19
|
optional: false,
|
|
18
20
|
generic: true,
|
|
19
|
-
validator: [
|
|
21
|
+
validator: [samePrimitiveTypeNonCol],
|
|
20
22
|
},
|
|
21
23
|
],
|
|
22
24
|
transpiler: {
|
|
@@ -25,11 +27,61 @@ export const ISNULL = {
|
|
|
25
27
|
redshift,
|
|
26
28
|
postgresql,
|
|
27
29
|
},
|
|
28
|
-
maxPrimitiveValues: 1,
|
|
29
30
|
primitiveResult(args) {
|
|
30
31
|
return inferPrimitive(...(args || []).map((arg) => arg.primitive));
|
|
31
32
|
},
|
|
32
33
|
};
|
|
34
|
+
function samePrimitiveTypeCol(param, dataType, context) {
|
|
35
|
+
const isColumn = isAColumn(context);
|
|
36
|
+
const baseResult = samePrimitiveType(param, dataType, context);
|
|
37
|
+
const valid = isColumn && baseResult.valid;
|
|
38
|
+
const primitive = baseResult.mismatchData
|
|
39
|
+
? baseResult.mismatchData.primitive
|
|
40
|
+
: AST_PRIMITIVES.UNKNOWN;
|
|
41
|
+
return Object.assign(Object.assign(Object.assign(Object.assign({}, baseResult), { mismatchData: {
|
|
42
|
+
type: AST_TYPES.column,
|
|
43
|
+
primitive,
|
|
44
|
+
} }), (!isColumn && Object.assign({}, ERROR_DICTIONARY[ERROR_LIST.missingColumnExpression]))), { valid });
|
|
45
|
+
}
|
|
46
|
+
function samePrimitiveTypeNonCol(param, dataType, context) {
|
|
47
|
+
const isLiteral = isALiteral(context);
|
|
48
|
+
const baseResult = samePrimitiveType(param, dataType, context);
|
|
49
|
+
const valid = isLiteral && baseResult.valid;
|
|
50
|
+
const primitive = baseResult.mismatchData
|
|
51
|
+
? baseResult.mismatchData.primitive
|
|
52
|
+
: AST_PRIMITIVES.UNKNOWN;
|
|
53
|
+
return Object.assign(Object.assign(Object.assign(Object.assign({}, baseResult), { mismatchData: {
|
|
54
|
+
type: AST_TYPES.literal,
|
|
55
|
+
primitive,
|
|
56
|
+
} }), (!isLiteral && Object.assign({}, ERROR_DICTIONARY[ERROR_LIST.noColumnExpression]))), { valid });
|
|
57
|
+
}
|
|
58
|
+
function samePrimitiveType(_param, _dataType, context) {
|
|
59
|
+
const firstPrimitive = primitiveArgIndex(context, 0);
|
|
60
|
+
const secondPrimitive = primitiveArgIndex(context, 1);
|
|
61
|
+
const ifPrimitive = calculateIsNullPrimitive(firstPrimitive, secondPrimitive);
|
|
62
|
+
const valid = firstPrimitive === secondPrimitive;
|
|
63
|
+
const baseResult = {
|
|
64
|
+
valid,
|
|
65
|
+
mismatchData: {
|
|
66
|
+
primitive: ifPrimitive,
|
|
67
|
+
},
|
|
68
|
+
};
|
|
69
|
+
if (!valid)
|
|
70
|
+
return Object.assign(Object.assign({}, baseResult), ERROR_DICTIONARY[ERROR_LIST.inferredPrimitive]);
|
|
71
|
+
return baseResult;
|
|
72
|
+
}
|
|
73
|
+
function primitiveArgIndex(context, index) {
|
|
74
|
+
var _a, _b;
|
|
75
|
+
const basePrimitive = (_b = (_a = context.fnNode.arguments) === null || _a === void 0 ? void 0 : _a[index]) === null || _b === void 0 ? void 0 : _b.primitive;
|
|
76
|
+
return isSinglePrimitive(basePrimitive)
|
|
77
|
+
? basePrimitive
|
|
78
|
+
: AST_PRIMITIVES.UNKNOWN;
|
|
79
|
+
}
|
|
80
|
+
function calculateIsNullPrimitive(firstPrimitive, secondPrimitive) {
|
|
81
|
+
if (firstPrimitive && firstPrimitive !== AST_PRIMITIVES.UNKNOWN)
|
|
82
|
+
return firstPrimitive;
|
|
83
|
+
return secondPrimitive !== null && secondPrimitive !== void 0 ? secondPrimitive : AST_PRIMITIVES.UNKNOWN;
|
|
84
|
+
}
|
|
33
85
|
function elasticsearch(value, replacement) {
|
|
34
86
|
return `IS_NULL_SCRIPT(${value}, ${replacement})`;
|
|
35
87
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"isNull.js","sourceRoot":"","sources":["../../../src/functions/isNull.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"isNull.js","sourceRoot":"","sources":["../../../src/functions/isNull.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { AST_PRIMITIVES, ELASTICSEARCH_SCRIPT_NAMES } from '../constants';
|
|
1
|
+
import { AST_PRIMITIVES, AST_TYPES, ELASTICSEARCH_SCRIPT_NAMES, } from '../constants';
|
|
2
|
+
import { ERROR_DICTIONARY, ERROR_LIST } from '../errors/dictionary';
|
|
2
3
|
import { isNumberParam, isStringParam } from '../utils';
|
|
3
4
|
/**
|
|
4
5
|
* `MID` Returns a segment of a string.
|
|
@@ -19,7 +20,7 @@ export const MID = {
|
|
|
19
20
|
{
|
|
20
21
|
identifier: 'EXTRACT_LENGTH',
|
|
21
22
|
optional: true,
|
|
22
|
-
validator: [isNumberParam],
|
|
23
|
+
validator: [isNumberParam, greaterThanZero],
|
|
23
24
|
},
|
|
24
25
|
],
|
|
25
26
|
transpiler: {
|
|
@@ -30,6 +31,37 @@ export const MID = {
|
|
|
30
31
|
},
|
|
31
32
|
primitiveResult: AST_PRIMITIVES.STRING,
|
|
32
33
|
};
|
|
34
|
+
function greaterThanZero(param, _dataType, context) {
|
|
35
|
+
return greaterThanReference(param, context.argument, 0);
|
|
36
|
+
}
|
|
37
|
+
function greaterThanReference(param, arg, compareReference) {
|
|
38
|
+
const numericValue = getNumericValueFromArgument(param, arg);
|
|
39
|
+
const valid = typeof numericValue !== 'number' ||
|
|
40
|
+
compareValueWithReference(numericValue, compareReference);
|
|
41
|
+
if (!valid)
|
|
42
|
+
return Object.assign(Object.assign({ valid }, ERROR_DICTIONARY[ERROR_LIST.greaterThan]), { info: {
|
|
43
|
+
greaterThan: compareReference,
|
|
44
|
+
} });
|
|
45
|
+
return { valid };
|
|
46
|
+
}
|
|
47
|
+
function getNumericValueFromArgument(param, argument) {
|
|
48
|
+
if (typeof param === 'number')
|
|
49
|
+
return param;
|
|
50
|
+
const isUnaryExpression = argument.type === AST_TYPES.unaryExpression;
|
|
51
|
+
if (isUnaryExpression) {
|
|
52
|
+
const unaryExp = argument.node;
|
|
53
|
+
const isNegative = unaryExp.operator === '-';
|
|
54
|
+
const isNumber = unaryExp.right.type === AST_TYPES.literal &&
|
|
55
|
+
unaryExp.right.dataType === AST_PRIMITIVES.NUMBER;
|
|
56
|
+
if (isNumber)
|
|
57
|
+
return (unaryExp.right.value *
|
|
58
|
+
(isNegative ? -1 : 1));
|
|
59
|
+
}
|
|
60
|
+
return param;
|
|
61
|
+
}
|
|
62
|
+
function compareValueWithReference(value, reference) {
|
|
63
|
+
return value >= reference;
|
|
64
|
+
}
|
|
33
65
|
function elasticsearch(current, start, length) {
|
|
34
66
|
const optional = length ? `, ${length}` : '';
|
|
35
67
|
return `${ELASTICSEARCH_SCRIPT_NAMES.subString}(${current}, ${start}${optional})`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mid.js","sourceRoot":"","sources":["../../../src/functions/mid.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"mid.js","sourceRoot":"","sources":["../../../src/functions/mid.ts"],"names":[],"mappings":"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"}
|