@qrvey/formula-lang 1.1.0 → 2.0.0
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 +89 -0
- package/README.md +32 -0
- package/dist/cjs/constants/index.d.ts +5 -0
- package/dist/cjs/constants/index.js +10 -1
- package/dist/cjs/constants/index.js.map +1 -1
- package/dist/cjs/constants/interfaces.d.ts +6 -3
- package/dist/cjs/errors/dictionary.d.ts +2 -1
- package/dist/cjs/errors/dictionary.js +9 -4
- package/dist/cjs/errors/dictionary.js.map +1 -1
- package/dist/cjs/errors/mismatch.d.ts +2 -5
- package/dist/cjs/errors/mismatch.js +10 -18
- package/dist/cjs/errors/mismatch.js.map +1 -1
- package/dist/cjs/functions/abs.js +1 -0
- package/dist/cjs/functions/abs.js.map +1 -1
- package/dist/cjs/functions/and.js +3 -0
- package/dist/cjs/functions/and.js.map +1 -1
- package/dist/cjs/functions/concatenate.js +4 -1
- package/dist/cjs/functions/concatenate.js.map +1 -1
- package/dist/cjs/functions/dateadd.js +33 -25
- package/dist/cjs/functions/dateadd.js.map +1 -1
- package/dist/cjs/functions/datedif.js +7 -2
- package/dist/cjs/functions/datedif.js.map +1 -1
- package/dist/cjs/functions/datesubtract.d.ts +5 -0
- package/dist/cjs/functions/datesubtract.js +114 -0
- package/dist/cjs/functions/datesubtract.js.map +1 -0
- package/dist/cjs/functions/day.js +1 -0
- package/dist/cjs/functions/day.js.map +1 -1
- package/dist/cjs/functions/dayofweek.js +2 -0
- package/dist/cjs/functions/dayofweek.js.map +1 -1
- package/dist/cjs/functions/even.d.ts +5 -0
- package/dist/cjs/functions/even.js +46 -0
- package/dist/cjs/functions/even.js.map +1 -0
- package/dist/cjs/functions/exp.d.ts +5 -0
- package/dist/cjs/functions/exp.js +42 -0
- package/dist/cjs/functions/exp.js.map +1 -0
- package/dist/cjs/functions/hour.js +1 -0
- package/dist/cjs/functions/hour.js.map +1 -1
- package/dist/cjs/functions/if.js +1 -0
- package/dist/cjs/functions/if.js.map +1 -1
- package/dist/cjs/functions/ifs.js +1 -0
- package/dist/cjs/functions/ifs.js.map +1 -1
- package/dist/cjs/functions/include.d.ts +5 -0
- package/dist/cjs/functions/include.js +48 -0
- package/dist/cjs/functions/include.js.map +1 -0
- package/dist/cjs/functions/index.js +32 -0
- package/dist/cjs/functions/index.js.map +1 -1
- package/dist/cjs/functions/left.js +12 -4
- package/dist/cjs/functions/left.js.map +1 -1
- package/dist/cjs/functions/length.d.ts +5 -0
- package/dist/cjs/functions/length.js +45 -0
- package/dist/cjs/functions/length.js.map +1 -0
- package/dist/cjs/functions/log.d.ts +5 -0
- package/dist/cjs/functions/log.js +59 -0
- package/dist/cjs/functions/log.js.map +1 -0
- package/dist/cjs/functions/lower.js +1 -0
- package/dist/cjs/functions/lower.js.map +1 -1
- package/dist/cjs/functions/max.d.ts +5 -0
- package/dist/cjs/functions/max.js +60 -0
- package/dist/cjs/functions/max.js.map +1 -0
- package/dist/cjs/functions/mid.js +22 -10
- package/dist/cjs/functions/mid.js.map +1 -1
- package/dist/cjs/functions/min.d.ts +5 -0
- package/dist/cjs/functions/min.js +60 -0
- package/dist/cjs/functions/min.js.map +1 -0
- package/dist/cjs/functions/minute.js +1 -0
- package/dist/cjs/functions/minute.js.map +1 -1
- package/dist/cjs/functions/month.js +1 -0
- package/dist/cjs/functions/month.js.map +1 -1
- package/dist/cjs/functions/odd.d.ts +5 -0
- package/dist/cjs/functions/odd.js +46 -0
- package/dist/cjs/functions/odd.js.map +1 -0
- package/dist/cjs/functions/or.js +3 -0
- package/dist/cjs/functions/or.js.map +1 -1
- package/dist/cjs/functions/power.d.ts +5 -0
- package/dist/cjs/functions/power.js +53 -0
- package/dist/cjs/functions/power.js.map +1 -0
- package/dist/cjs/functions/proper.js +1 -0
- package/dist/cjs/functions/proper.js.map +1 -1
- package/dist/cjs/functions/random.d.ts +5 -0
- package/dist/cjs/functions/random.js +34 -0
- package/dist/cjs/functions/random.js.map +1 -0
- package/dist/cjs/functions/replace.d.ts +5 -0
- package/dist/cjs/functions/replace.js +54 -0
- package/dist/cjs/functions/replace.js.map +1 -0
- package/dist/cjs/functions/right.js +12 -4
- package/dist/cjs/functions/right.js.map +1 -1
- package/dist/cjs/functions/round.d.ts +5 -0
- package/dist/cjs/functions/round.js +59 -0
- package/dist/cjs/functions/round.js.map +1 -0
- package/dist/cjs/functions/rounddown.d.ts +5 -0
- package/dist/cjs/functions/rounddown.js +59 -0
- package/dist/cjs/functions/rounddown.js.map +1 -0
- package/dist/cjs/functions/roundup.d.ts +5 -0
- package/dist/cjs/functions/roundup.js +59 -0
- package/dist/cjs/functions/roundup.js.map +1 -0
- package/dist/cjs/functions/second.js +1 -0
- package/dist/cjs/functions/second.js.map +1 -1
- package/dist/cjs/functions/sqrt.d.ts +5 -0
- package/dist/cjs/functions/sqrt.js +46 -0
- package/dist/cjs/functions/sqrt.js.map +1 -0
- package/dist/cjs/functions/trim.js +1 -0
- package/dist/cjs/functions/trim.js.map +1 -1
- package/dist/cjs/functions/upper.js +1 -0
- package/dist/cjs/functions/upper.js.map +1 -1
- package/dist/cjs/functions/year.js +1 -0
- package/dist/cjs/functions/year.js.map +1 -1
- package/dist/cjs/index.d.ts +1 -0
- package/dist/cjs/index.js +3 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/parser/json-parser.js +2 -1
- package/dist/cjs/parser/json-parser.js.map +1 -1
- package/dist/cjs/transpiler/columnTranspilation.js +8 -1
- package/dist/cjs/transpiler/columnTranspilation.js.map +1 -1
- package/dist/cjs/transpiler/index.js +7 -1
- package/dist/cjs/transpiler/index.js.map +1 -1
- package/dist/cjs/utils/addDecimalPointIfNeeded.d.ts +3 -0
- package/dist/cjs/utils/addDecimalPointIfNeeded.js +19 -0
- package/dist/cjs/utils/addDecimalPointIfNeeded.js.map +1 -0
- package/dist/cjs/utils/cleanInvalidItemsInContext.d.ts +1 -1
- package/dist/cjs/utils/cleanInvalidItemsInContext.js +2 -1
- package/dist/cjs/utils/cleanInvalidItemsInContext.js.map +1 -1
- package/dist/cjs/utils/elasticsearch/index.js +29 -0
- package/dist/cjs/utils/elasticsearch/index.js.map +1 -1
- package/dist/cjs/utils/elasticsearch/scripts.d.ts +15 -1
- package/dist/cjs/utils/elasticsearch/scripts.js +131 -17
- package/dist/cjs/utils/elasticsearch/scripts.js.map +1 -1
- package/dist/cjs/utils/escapeCharacters.js +2 -0
- package/dist/cjs/utils/escapeCharacters.js.map +1 -1
- package/dist/cjs/utils/getNumericValueFromArgument.d.ts +3 -0
- package/dist/cjs/utils/getNumericValueFromArgument.js +32 -0
- package/dist/cjs/utils/getNumericValueFromArgument.js.map +1 -0
- package/dist/cjs/utils/getValidDataTypeParam.d.ts +3 -0
- package/dist/cjs/utils/getValidDataTypeParam.js +10 -0
- package/dist/cjs/utils/getValidDataTypeParam.js.map +1 -0
- package/dist/cjs/utils/greaterThanOrEqualToReference.d.ts +3 -0
- package/dist/cjs/utils/greaterThanOrEqualToReference.js +20 -0
- package/dist/cjs/utils/greaterThanOrEqualToReference.js.map +1 -0
- package/dist/cjs/utils/greaterThanReference.d.ts +3 -0
- package/dist/cjs/utils/greaterThanReference.js +19 -0
- package/dist/cjs/utils/greaterThanReference.js.map +1 -0
- package/dist/cjs/utils/isAValidPower.d.ts +3 -0
- package/dist/cjs/utils/isAValidPower.js +21 -0
- package/dist/cjs/utils/isAValidPower.js.map +1 -0
- package/dist/cjs/utils/isBetweenInclusiveRange.d.ts +3 -0
- package/dist/cjs/utils/isBetweenInclusiveRange.js +21 -0
- package/dist/cjs/utils/isBetweenInclusiveRange.js.map +1 -0
- package/dist/cjs/utils/isInteger.d.ts +3 -0
- package/dist/cjs/utils/isInteger.js +25 -0
- package/dist/cjs/utils/isInteger.js.map +1 -0
- package/dist/cjs/utils/isLongLiteralNumber.js +2 -1
- package/dist/cjs/utils/isLongLiteralNumber.js.map +1 -1
- package/dist/cjs/utils/isSameAndValidRecursiveDataType.d.ts +3 -0
- package/dist/cjs/utils/isSameAndValidRecursiveDataType.js +32 -0
- package/dist/cjs/utils/isSameAndValidRecursiveDataType.js.map +1 -0
- package/dist/cjs/utils/primitiveFunctions.d.ts +3 -0
- package/dist/cjs/utils/primitiveFunctions.js +7 -1
- package/dist/cjs/utils/primitiveFunctions.js.map +1 -1
- package/dist/module/constants/index.d.ts +5 -0
- package/dist/module/constants/index.js +9 -0
- package/dist/module/constants/index.js.map +1 -1
- package/dist/module/constants/interfaces.d.ts +6 -3
- package/dist/module/errors/dictionary.d.ts +2 -1
- package/dist/module/errors/dictionary.js +9 -4
- package/dist/module/errors/dictionary.js.map +1 -1
- package/dist/module/errors/mismatch.d.ts +2 -5
- package/dist/module/errors/mismatch.js +10 -18
- package/dist/module/errors/mismatch.js.map +1 -1
- package/dist/module/functions/abs.js +1 -0
- package/dist/module/functions/abs.js.map +1 -1
- package/dist/module/functions/and.js +3 -0
- package/dist/module/functions/and.js.map +1 -1
- package/dist/module/functions/concatenate.js +4 -1
- package/dist/module/functions/concatenate.js.map +1 -1
- package/dist/module/functions/dateadd.js +33 -25
- package/dist/module/functions/dateadd.js.map +1 -1
- package/dist/module/functions/datedif.js +7 -2
- package/dist/module/functions/datedif.js.map +1 -1
- package/dist/module/functions/datesubtract.d.ts +5 -0
- package/dist/module/functions/datesubtract.js +111 -0
- package/dist/module/functions/datesubtract.js.map +1 -0
- package/dist/module/functions/day.js +1 -0
- package/dist/module/functions/day.js.map +1 -1
- package/dist/module/functions/dayofweek.js +2 -0
- package/dist/module/functions/dayofweek.js.map +1 -1
- package/dist/module/functions/even.d.ts +5 -0
- package/dist/module/functions/even.js +43 -0
- package/dist/module/functions/even.js.map +1 -0
- package/dist/module/functions/exp.d.ts +5 -0
- package/dist/module/functions/exp.js +39 -0
- package/dist/module/functions/exp.js.map +1 -0
- package/dist/module/functions/hour.js +1 -0
- package/dist/module/functions/hour.js.map +1 -1
- package/dist/module/functions/if.js +1 -0
- package/dist/module/functions/if.js.map +1 -1
- package/dist/module/functions/ifs.js +1 -0
- package/dist/module/functions/ifs.js.map +1 -1
- package/dist/module/functions/include.d.ts +5 -0
- package/dist/module/functions/include.js +45 -0
- package/dist/module/functions/include.js.map +1 -0
- package/dist/module/functions/index.js +32 -0
- package/dist/module/functions/index.js.map +1 -1
- package/dist/module/functions/left.js +12 -4
- package/dist/module/functions/left.js.map +1 -1
- package/dist/module/functions/length.d.ts +5 -0
- package/dist/module/functions/length.js +42 -0
- package/dist/module/functions/length.js.map +1 -0
- package/dist/module/functions/log.d.ts +5 -0
- package/dist/module/functions/log.js +56 -0
- package/dist/module/functions/log.js.map +1 -0
- package/dist/module/functions/lower.js +1 -0
- package/dist/module/functions/lower.js.map +1 -1
- package/dist/module/functions/max.d.ts +5 -0
- package/dist/module/functions/max.js +57 -0
- package/dist/module/functions/max.js.map +1 -0
- package/dist/module/functions/mid.js +22 -10
- package/dist/module/functions/mid.js.map +1 -1
- package/dist/module/functions/min.d.ts +5 -0
- package/dist/module/functions/min.js +57 -0
- package/dist/module/functions/min.js.map +1 -0
- package/dist/module/functions/minute.js +1 -0
- package/dist/module/functions/minute.js.map +1 -1
- package/dist/module/functions/month.js +1 -0
- package/dist/module/functions/month.js.map +1 -1
- package/dist/module/functions/odd.d.ts +5 -0
- package/dist/module/functions/odd.js +43 -0
- package/dist/module/functions/odd.js.map +1 -0
- package/dist/module/functions/or.js +3 -0
- package/dist/module/functions/or.js.map +1 -1
- package/dist/module/functions/power.d.ts +5 -0
- package/dist/module/functions/power.js +50 -0
- package/dist/module/functions/power.js.map +1 -0
- package/dist/module/functions/proper.js +1 -0
- package/dist/module/functions/proper.js.map +1 -1
- package/dist/module/functions/random.d.ts +5 -0
- package/dist/module/functions/random.js +31 -0
- package/dist/module/functions/random.js.map +1 -0
- package/dist/module/functions/replace.d.ts +5 -0
- package/dist/module/functions/replace.js +51 -0
- package/dist/module/functions/replace.js.map +1 -0
- package/dist/module/functions/right.js +12 -4
- package/dist/module/functions/right.js.map +1 -1
- package/dist/module/functions/round.d.ts +5 -0
- package/dist/module/functions/round.js +56 -0
- package/dist/module/functions/round.js.map +1 -0
- package/dist/module/functions/rounddown.d.ts +5 -0
- package/dist/module/functions/rounddown.js +56 -0
- package/dist/module/functions/rounddown.js.map +1 -0
- package/dist/module/functions/roundup.d.ts +5 -0
- package/dist/module/functions/roundup.js +56 -0
- package/dist/module/functions/roundup.js.map +1 -0
- package/dist/module/functions/second.js +1 -0
- package/dist/module/functions/second.js.map +1 -1
- package/dist/module/functions/sqrt.d.ts +5 -0
- package/dist/module/functions/sqrt.js +43 -0
- package/dist/module/functions/sqrt.js.map +1 -0
- package/dist/module/functions/trim.js +1 -0
- package/dist/module/functions/trim.js.map +1 -1
- package/dist/module/functions/upper.js +1 -0
- package/dist/module/functions/upper.js.map +1 -1
- package/dist/module/functions/year.js +1 -0
- package/dist/module/functions/year.js.map +1 -1
- package/dist/module/index.d.ts +1 -0
- package/dist/module/index.js +1 -0
- package/dist/module/index.js.map +1 -1
- package/dist/module/parser/json-parser.js +2 -1
- package/dist/module/parser/json-parser.js.map +1 -1
- package/dist/module/transpiler/columnTranspilation.js +8 -1
- package/dist/module/transpiler/columnTranspilation.js.map +1 -1
- package/dist/module/transpiler/index.js +7 -1
- package/dist/module/transpiler/index.js.map +1 -1
- package/dist/module/utils/addDecimalPointIfNeeded.d.ts +3 -0
- package/dist/module/utils/addDecimalPointIfNeeded.js +15 -0
- package/dist/module/utils/addDecimalPointIfNeeded.js.map +1 -0
- package/dist/module/utils/cleanInvalidItemsInContext.d.ts +1 -1
- package/dist/module/utils/cleanInvalidItemsInContext.js +2 -1
- package/dist/module/utils/cleanInvalidItemsInContext.js.map +1 -1
- package/dist/module/utils/elasticsearch/index.js +30 -1
- package/dist/module/utils/elasticsearch/index.js.map +1 -1
- package/dist/module/utils/elasticsearch/scripts.d.ts +15 -1
- package/dist/module/utils/elasticsearch/scripts.js +130 -16
- package/dist/module/utils/elasticsearch/scripts.js.map +1 -1
- package/dist/module/utils/escapeCharacters.js +2 -0
- package/dist/module/utils/escapeCharacters.js.map +1 -1
- package/dist/module/utils/getNumericValueFromArgument.d.ts +3 -0
- package/dist/module/utils/getNumericValueFromArgument.js +27 -0
- package/dist/module/utils/getNumericValueFromArgument.js.map +1 -0
- package/dist/module/utils/getValidDataTypeParam.d.ts +3 -0
- package/dist/module/utils/getValidDataTypeParam.js +6 -0
- package/dist/module/utils/getValidDataTypeParam.js.map +1 -0
- package/dist/module/utils/greaterThanOrEqualToReference.d.ts +3 -0
- package/dist/module/utils/greaterThanOrEqualToReference.js +16 -0
- package/dist/module/utils/greaterThanOrEqualToReference.js.map +1 -0
- package/dist/module/utils/greaterThanReference.d.ts +3 -0
- package/dist/module/utils/greaterThanReference.js +15 -0
- package/dist/module/utils/greaterThanReference.js.map +1 -0
- package/dist/module/utils/isAValidPower.d.ts +3 -0
- package/dist/module/utils/isAValidPower.js +17 -0
- package/dist/module/utils/isAValidPower.js.map +1 -0
- package/dist/module/utils/isBetweenInclusiveRange.d.ts +3 -0
- package/dist/module/utils/isBetweenInclusiveRange.js +17 -0
- package/dist/module/utils/isBetweenInclusiveRange.js.map +1 -0
- package/dist/module/utils/isInteger.d.ts +3 -0
- package/dist/module/utils/isInteger.js +21 -0
- package/dist/module/utils/isInteger.js.map +1 -0
- package/dist/module/utils/isLongLiteralNumber.js +2 -1
- package/dist/module/utils/isLongLiteralNumber.js.map +1 -1
- package/dist/module/utils/isSameAndValidRecursiveDataType.d.ts +3 -0
- package/dist/module/utils/isSameAndValidRecursiveDataType.js +28 -0
- package/dist/module/utils/isSameAndValidRecursiveDataType.js.map +1 -0
- package/dist/module/utils/primitiveFunctions.d.ts +3 -0
- package/dist/module/utils/primitiveFunctions.js +5 -0
- package/dist/module/utils/primitiveFunctions.js.map +1 -1
- package/package.json +1 -1
- package/dist/cjs/utils/greaterThanZero.d.ts +0 -3
- package/dist/cjs/utils/greaterThanZero.js +0 -38
- package/dist/cjs/utils/greaterThanZero.js.map +0 -1
- package/dist/module/utils/greaterThanZero.d.ts +0 -3
- package/dist/module/utils/greaterThanZero.js +0 -34
- package/dist/module/utils/greaterThanZero.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,92 @@
|
|
|
1
|
+
<a name="2.0.0"></a>
|
|
2
|
+
# [2.0.0](https://bitbucket.org/qrvey/qrvey_formula_lang/compare/v1.1.0...v2.0.0) (2023-09-26)
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
### Bug Fixes
|
|
6
|
+
|
|
7
|
+
* **concatenate:** concatenate primitive is string ([c0021a4](https://bitbucket.org/qrvey/qrvey_formula_lang/commits/c0021a4))
|
|
8
|
+
* **concatenate:** concatenate primitive is string ([a112345](https://bitbucket.org/qrvey/qrvey_formula_lang/commits/a112345))
|
|
9
|
+
* **datediff:** datediff for DataView have to be cast as INT ([c6cd081](https://bitbucket.org/qrvey/qrvey_formula_lang/commits/c6cd081))
|
|
10
|
+
* **datefunctions:** add floor round to intervals in date add and subtract functions RB-1399 ([a317b2f](https://bitbucket.org/qrvey/qrvey_formula_lang/commits/a317b2f))
|
|
11
|
+
* **datefunctions:** fix data type in floor RB-1399 ([1da0e8a](https://bitbucket.org/qrvey/qrvey_formula_lang/commits/1da0e8a))
|
|
12
|
+
* **datesubtract:** fix DATESUBTRACT function with decimal numbers ([08fb4b2](https://bitbucket.org/qrvey/qrvey_formula_lang/commits/08fb4b2))
|
|
13
|
+
* **errors:** fix expected result from mismatch error RB-1501 ([580c2c8](https://bitbucket.org/qrvey/qrvey_formula_lang/commits/580c2c8))
|
|
14
|
+
* **errors:** fix expected result from mismatch error RB-1501 ([a299d6b](https://bitbucket.org/qrvey/qrvey_formula_lang/commits/a299d6b))
|
|
15
|
+
* **escape:** fix escape character when is a number ([75e2523](https://bitbucket.org/qrvey/qrvey_formula_lang/commits/75e2523))
|
|
16
|
+
* **function:** change transpilation logic of even and odd function ([620eb9d](https://bitbucket.org/qrvey/qrvey_formula_lang/commits/620eb9d))
|
|
17
|
+
* **functions:** fix functions to only receive integer in numeric argments RB-1515 ([0fd936c](https://bitbucket.org/qrvey/qrvey_formula_lang/commits/0fd936c))
|
|
18
|
+
* **functions:** fix roundown (negative numbers) in functions right and mid RB-1515 ([e22c587](https://bitbucket.org/qrvey/qrvey_formula_lang/commits/e22c587))
|
|
19
|
+
* **functions:** fix transpilations of DATEADD and DATESUBTRACT for postgresql and snowflake RB-1398 ([c52166c](https://bitbucket.org/qrvey/qrvey_formula_lang/commits/c52166c))
|
|
20
|
+
* **functions:** minor refactor ([dac4e02](https://bitbucket.org/qrvey/qrvey_formula_lang/commits/dac4e02))
|
|
21
|
+
* **integer:** add integer as validator ([a3aaa5a](https://bitbucket.org/qrvey/qrvey_formula_lang/commits/a3aaa5a))
|
|
22
|
+
* **isinteger:** isInteger only apply if is literal ([00627e9](https://bitbucket.org/qrvey/qrvey_formula_lang/commits/00627e9))
|
|
23
|
+
* **logfunction:** do not allow 0 values in the first parameter (log function) RB-1349 ([164ab9f](https://bitbucket.org/qrvey/qrvey_formula_lang/commits/164ab9f))
|
|
24
|
+
* **long number:** long number for elasticSearch when are Float, doesn't need to change ([82b4bf3](https://bitbucket.org/qrvey/qrvey_formula_lang/commits/82b4bf3))
|
|
25
|
+
* **maxfunction:** fix max and min function when there two invalid parameters RB-1299 ([0c0d039](https://bitbucket.org/qrvey/qrvey_formula_lang/commits/0c0d039))
|
|
26
|
+
* **maxfunction:** fix max and min function when there two invalid parameters RB-1299 ([b2429eb](https://bitbucket.org/qrvey/qrvey_formula_lang/commits/b2429eb))
|
|
27
|
+
* **mid:** fix mid function to receive only integer parameters (second and third one) RB-1515 ([183a851](https://bitbucket.org/qrvey/qrvey_formula_lang/commits/183a851))
|
|
28
|
+
* **min/max:** fix max/min function for bar charts and improve performance RB-1299 ([b8eb4c0](https://bitbucket.org/qrvey/qrvey_formula_lang/commits/b8eb4c0))
|
|
29
|
+
* **mismatchdetail:** mismatchDetail extend ValidatorExpectedInfo ([f582b24](https://bitbucket.org/qrvey/qrvey_formula_lang/commits/f582b24))
|
|
30
|
+
* **numbers:** convert to decimals integer numbers RB-1486 ([c78bc43](https://bitbucket.org/qrvey/qrvey_formula_lang/commits/c78bc43))
|
|
31
|
+
* **numbervalidators:** fix number validators RB-1486 ([a3a6d40](https://bitbucket.org/qrvey/qrvey_formula_lang/commits/a3a6d40))
|
|
32
|
+
* **round:** add is integer number to ROUND functions RB-1478 ([89660d7](https://bitbucket.org/qrvey/qrvey_formula_lang/commits/89660d7))
|
|
33
|
+
* **roundfunction:** fix round for negative numbers in ES RB-1349 ([27a46a7](https://bitbucket.org/qrvey/qrvey_formula_lang/commits/27a46a7))
|
|
34
|
+
* **roundfunctions:** fix transpilation for round, rounddown y roundup function tocomplain round rule ([d4c9852](https://bitbucket.org/qrvey/qrvey_formula_lang/commits/d4c9852))
|
|
35
|
+
* **roundfunctions:** fix transpilation for round, rounddown y roundup function tocomplain round rule RB-1349 ([ae20b4a](https://bitbucket.org/qrvey/qrvey_formula_lang/commits/ae20b4a))
|
|
36
|
+
* **tests:** fix all tests numbers changes RB-1486 ([c2bd167](https://bitbucket.org/qrvey/qrvey_formula_lang/commits/c2bd167))
|
|
37
|
+
* **usesample:** if externalFormula and NOT sampleData ([6cedcc8](https://bitbucket.org/qrvey/qrvey_formula_lang/commits/6cedcc8))
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
### Code Refactoring
|
|
41
|
+
|
|
42
|
+
* **rangeerrors:** refactor bad naming in numeric range validation ([4cfae47](https://bitbucket.org/qrvey/qrvey_formula_lang/commits/4cfae47))
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
### Features
|
|
46
|
+
|
|
47
|
+
* **datesubtract:** add datesubtract function RB-1360 ([834cebf](https://bitbucket.org/qrvey/qrvey_formula_lang/commits/834cebf))
|
|
48
|
+
* **evenfunction:** fix EVEN function for null case RB-1349 ([cef3aa4](https://bitbucket.org/qrvey/qrvey_formula_lang/commits/cef3aa4))
|
|
49
|
+
* **expfunction:** add EXP function RB-1299 ([b7232d8](https://bitbucket.org/qrvey/qrvey_formula_lang/commits/b7232d8))
|
|
50
|
+
* **expfunction:** add INCLUDE function RB-1299 ([7cb2545](https://bitbucket.org/qrvey/qrvey_formula_lang/commits/7cb2545))
|
|
51
|
+
* **expfunction:** add REPLACE function RB-1299 ([707a580](https://bitbucket.org/qrvey/qrvey_formula_lang/commits/707a580))
|
|
52
|
+
* **functions:** add even function RB-1417 ([e566fd3](https://bitbucket.org/qrvey/qrvey_formula_lang/commits/e566fd3))
|
|
53
|
+
* **improvement:** add log error test and delete unnecessary file ([b6fc0db](https://bitbucket.org/qrvey/qrvey_formula_lang/commits/b6fc0db))
|
|
54
|
+
* **leastfunction:** add MIN function RB-1299 ([fc2581e](https://bitbucket.org/qrvey/qrvey_formula_lang/commits/fc2581e))
|
|
55
|
+
* **lengthfunction:** add length function RB-1299 ([63e0fd7](https://bitbucket.org/qrvey/qrvey_formula_lang/commits/63e0fd7))
|
|
56
|
+
* **logfunction:** add log function RB-1418 ([8e46ce1](https://bitbucket.org/qrvey/qrvey_formula_lang/commits/8e46ce1))
|
|
57
|
+
* **max function:** add better test of erros for max function and minor refactors RB-1299 ([092174d](https://bitbucket.org/qrvey/qrvey_formula_lang/commits/092174d))
|
|
58
|
+
* **maxfunction:** add integration tests RB-1299 ([b0fd4f5](https://bitbucket.org/qrvey/qrvey_formula_lang/commits/b0fd4f5))
|
|
59
|
+
* **maxfunction:** add max function ([28da9e7](https://bitbucket.org/qrvey/qrvey_formula_lang/commits/28da9e7))
|
|
60
|
+
* **maxfunction:** add null checks in elasticsearch script ([7cdaad7](https://bitbucket.org/qrvey/qrvey_formula_lang/commits/7cdaad7))
|
|
61
|
+
* **maxfunction:** add support for date in max function ([6cda42d](https://bitbucket.org/qrvey/qrvey_formula_lang/commits/6cda42d))
|
|
62
|
+
* **maxfunction:** add validations for max function RB-1299 ([cedb769](https://bitbucket.org/qrvey/qrvey_formula_lang/commits/cedb769))
|
|
63
|
+
* **maxfunction:** return array in expected primitive values RB-1299 ([62d2f6e](https://bitbucket.org/qrvey/qrvey_formula_lang/commits/62d2f6e))
|
|
64
|
+
* **oddfunction:** add odd function RB-1419 ([3960fa4](https://bitbucket.org/qrvey/qrvey_formula_lang/commits/3960fa4))
|
|
65
|
+
* **powerfunction:** add power Function RB-1420 RB-1349 ([4a43f0e](https://bitbucket.org/qrvey/qrvey_formula_lang/commits/4a43f0e))
|
|
66
|
+
* **powerfunction:** add power Function RB-1420 RB-1349 ([b64d92d](https://bitbucket.org/qrvey/qrvey_formula_lang/commits/b64d92d))
|
|
67
|
+
* **primitiveFunctions.ts:** export getPrimitiveAsValue ([59bb1ea](https://bitbucket.org/qrvey/qrvey_formula_lang/commits/59bb1ea))
|
|
68
|
+
* **randomfunction:** add random function RB-1421 RB-1349 ([68d3f5e](https://bitbucket.org/qrvey/qrvey_formula_lang/commits/68d3f5e))
|
|
69
|
+
* **rounddownfunction:** add rounddown function RB-1423 RB-1349 ([88fa4fc](https://bitbucket.org/qrvey/qrvey_formula_lang/commits/88fa4fc))
|
|
70
|
+
* **roundfunction:** add round function RB-1422 RB-1349 ([ecfd32a](https://bitbucket.org/qrvey/qrvey_formula_lang/commits/ecfd32a))
|
|
71
|
+
* **roundupfunction:** add roundup function RB-1424 RB-1349 ([4c4d695](https://bitbucket.org/qrvey/qrvey_formula_lang/commits/4c4d695))
|
|
72
|
+
* **sqrtfunction:** add sqrt function RB-1299 ([d51e35a](https://bitbucket.org/qrvey/qrvey_formula_lang/commits/d51e35a))
|
|
73
|
+
* **sqrtfunction:** add sqrt function RB-1299 ([2596515](https://bitbucket.org/qrvey/qrvey_formula_lang/commits/2596515))
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
### Reverts
|
|
77
|
+
|
|
78
|
+
* **round:** take only the integer in case of decimales 2nd argument in round functions RB-1478 ([63d0614](https://bitbucket.org/qrvey/qrvey_formula_lang/commits/63d0614))
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
### BREAKING CHANGES
|
|
82
|
+
|
|
83
|
+
* **rangeerrors:** For functions like dateadd, datesubtract, left, log, mid, right and sqrt when there
|
|
84
|
+
are numbers negatives now will return MATCH_RANGE inside number validation error instead of GREATER_THAN. Additionally, in the info object it will return greaterThanOrEqualTo instead of greaterThan.
|
|
85
|
+
* **maxfunction:** MismatchDetail.primitive and ValidatorExpectedInfo.primitive interfaces now are
|
|
86
|
+
returning array
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
|
|
1
90
|
<a name="1.1.0"></a>
|
|
2
91
|
# [1.1.0](https://bitbucket.org/qrvey/qrvey_formula_lang/compare/v1.0.1...v1.1.0) (2023-07-24)
|
|
3
92
|
|
package/README.md
CHANGED
|
@@ -75,4 +75,36 @@ private dispatchTextUpdate(state: EditorState) {
|
|
|
75
75
|
// dispatch event after return
|
|
76
76
|
return { text, ast }
|
|
77
77
|
}
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### How create a context
|
|
81
|
+
|
|
82
|
+
The context is a object where implementor can build the information required for the transpiler. For example, the columns that will be used in the formula.
|
|
83
|
+
|
|
84
|
+
The properties needed are:
|
|
85
|
+
|
|
86
|
+
1. _useSampleData_: (Boolean) If you want to overwrite columns/externalFormulas by custom data, enable this flag. **Default**: `false`
|
|
87
|
+
1. _sampleData_: Optional (Object) Object to overwrite columns for custom data. **Key** represent the ID of the column, **Value** represent the replacement. See: `__tests__/__mocks__/context.ts` > `testContext`
|
|
88
|
+
1. _timezone_: Optional (Object). `{ offset: 'String' }` Set the timezone offset in String format.
|
|
89
|
+
1. _currentFormulaId_: Optional (String): ID of the current formula if you are edited one. This flag help to avoid any Circular Dependency when edit one formula, to avoid call itself
|
|
90
|
+
1. _model_: Optional (Object)
|
|
91
|
+
1. _label_: (String): Visualization
|
|
92
|
+
1. _id_: (String): ID of item (Column)
|
|
93
|
+
1. _replacement_: Optional (String): The ID will be replaced by this value.
|
|
94
|
+
1. _type_: (AST_PRIMITIVES) Native type
|
|
95
|
+
1. _isExternalFormula_: Optional (Boolean): If the item is a Formula created by this Package, need to set this flag in true
|
|
96
|
+
|
|
97
|
+
Use this Interfaces and Constants to build a **Context**
|
|
98
|
+
```js
|
|
99
|
+
import { FormulaContext, AST_PRIMITIVES } from '"@qrvey/formula-lang"';
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### How create clean the context
|
|
103
|
+
|
|
104
|
+
In some scenarios will be necessary to clean the Context, for example: Delete columns that will cause Circular Dependencies. This package have a utility call: `cleanInvalidItemsInContext` for that
|
|
105
|
+
|
|
106
|
+
```js
|
|
107
|
+
import { cleanInvalidItemsInContext } from "@qrvey/formula-lang";
|
|
108
|
+
const cleanContext = cleanInvalidItemsInContext(dirtyContext);
|
|
109
|
+
|
|
78
110
|
```
|
|
@@ -28,6 +28,10 @@ export declare enum AST_PRIMITIVES {
|
|
|
28
28
|
BOOLEAN = "boolean",
|
|
29
29
|
UNKNOWN = "unknown"
|
|
30
30
|
}
|
|
31
|
+
export declare enum CUSTOM_PRIMITIVE {
|
|
32
|
+
INTEGER = "INTEGER",
|
|
33
|
+
DECIMAL = "DECIMAL"
|
|
34
|
+
}
|
|
31
35
|
export type Primitive = AST_PRIMITIVES | AST_PRIMITIVES[];
|
|
32
36
|
export type CustomEngineOperators = {
|
|
33
37
|
[key in ENGINES]?: {
|
|
@@ -40,3 +44,4 @@ export declare enum ELASTICSEARCH_SCRIPT_NAMES {
|
|
|
40
44
|
setTimezone = "SET_TIMEZONE_SCRIPT",
|
|
41
45
|
subString = "SUBSTRING_SCRIPT"
|
|
42
46
|
}
|
|
47
|
+
export declare const DATE_AND_NUMBERS_DATA_TYPES: AST_PRIMITIVES[];
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ELASTICSEARCH_SCRIPT_NAMES = exports.CustomOperators = exports.AST_PRIMITIVES = exports.AST_TYPES = exports.RESPONSE_LEVEL = exports.ENGINES = void 0;
|
|
3
|
+
exports.DATE_AND_NUMBERS_DATA_TYPES = exports.ELASTICSEARCH_SCRIPT_NAMES = exports.CustomOperators = exports.CUSTOM_PRIMITIVE = exports.AST_PRIMITIVES = exports.AST_TYPES = exports.RESPONSE_LEVEL = exports.ENGINES = void 0;
|
|
4
4
|
var ENGINES;
|
|
5
5
|
(function (ENGINES) {
|
|
6
6
|
ENGINES["ELASTICSEARCH"] = "elasticsearch";
|
|
@@ -35,6 +35,11 @@ var AST_PRIMITIVES;
|
|
|
35
35
|
AST_PRIMITIVES["BOOLEAN"] = "boolean";
|
|
36
36
|
AST_PRIMITIVES["UNKNOWN"] = "unknown";
|
|
37
37
|
})(AST_PRIMITIVES = exports.AST_PRIMITIVES || (exports.AST_PRIMITIVES = {}));
|
|
38
|
+
var CUSTOM_PRIMITIVE;
|
|
39
|
+
(function (CUSTOM_PRIMITIVE) {
|
|
40
|
+
CUSTOM_PRIMITIVE["INTEGER"] = "INTEGER";
|
|
41
|
+
CUSTOM_PRIMITIVE["DECIMAL"] = "DECIMAL";
|
|
42
|
+
})(CUSTOM_PRIMITIVE = exports.CUSTOM_PRIMITIVE || (exports.CUSTOM_PRIMITIVE = {}));
|
|
38
43
|
exports.CustomOperators = {
|
|
39
44
|
[ENGINES.ELASTICSEARCH]: {
|
|
40
45
|
'=': '==',
|
|
@@ -47,4 +52,8 @@ var ELASTICSEARCH_SCRIPT_NAMES;
|
|
|
47
52
|
ELASTICSEARCH_SCRIPT_NAMES["setTimezone"] = "SET_TIMEZONE_SCRIPT";
|
|
48
53
|
ELASTICSEARCH_SCRIPT_NAMES["subString"] = "SUBSTRING_SCRIPT";
|
|
49
54
|
})(ELASTICSEARCH_SCRIPT_NAMES = exports.ELASTICSEARCH_SCRIPT_NAMES || (exports.ELASTICSEARCH_SCRIPT_NAMES = {}));
|
|
55
|
+
exports.DATE_AND_NUMBERS_DATA_TYPES = [
|
|
56
|
+
AST_PRIMITIVES.DATE,
|
|
57
|
+
AST_PRIMITIVES.NUMBER,
|
|
58
|
+
];
|
|
50
59
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/constants/index.ts"],"names":[],"mappings":";;;AAAA,IAAY,OAKX;AALD,WAAY,OAAO;IACf,0CAA+B,CAAA;IAC/B,kCAAuB,CAAA;IACvB,gCAAqB,CAAA;IACrB,oCAAyB,CAAA;AAC7B,CAAC,EALW,OAAO,GAAP,eAAO,KAAP,eAAO,QAKlB;AAED,IAAY,cAGX;AAHD,WAAY,cAAc;IACtB,qCAAmB,CAAA;IACnB,uCAAqB,CAAA;AACzB,CAAC,EAHW,cAAc,GAAd,sBAAc,KAAd,sBAAc,QAGzB;AAED,IAAY,SAYX;AAZD,WAAY,SAAS;IACjB,gCAAmB,CAAA;IACnB,4DAA+C,CAAA;IAC/C,kDAAqC,CAAA;IACrC,gDAAmC,CAAA;IACnC,0CAA6B,CAAA;IAC7B,kCAAqB,CAAA;IACrB,8BAAiB,CAAA;IACjB,4BAAe,CAAA;IACf,gCAAmB,CAAA;IACnB,gCAAmB,CAAA;IACnB,gDAAmC,CAAA;AACvC,CAAC,EAZW,SAAS,GAAT,iBAAS,KAAT,iBAAS,QAYpB;AAED,IAAY,cAMX;AAND,WAAY,cAAc;IACtB,mCAAiB,CAAA;IACjB,+BAAa,CAAA;IACb,mCAAiB,CAAA;IACjB,qCAAmB,CAAA;IACnB,qCAAmB,CAAA;AACvB,CAAC,EANW,cAAc,GAAd,sBAAc,KAAd,sBAAc,QAMzB;AAQY,QAAA,eAAe,GAA0B;IAClD,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE;QACrB,GAAG,EAAE,IAAI;QACT,IAAI,EAAE,IAAI;KACb;CACJ,CAAC;AAEF,IAAY,0BAIX;AAJD,WAAY,0BAA0B;IAClC,+DAAiC,CAAA;IACjC,iEAAmC,CAAA;IACnC,4DAA8B,CAAA;AAClC,CAAC,EAJW,0BAA0B,GAA1B,kCAA0B,KAA1B,kCAA0B,QAIrC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/constants/index.ts"],"names":[],"mappings":";;;AAAA,IAAY,OAKX;AALD,WAAY,OAAO;IACf,0CAA+B,CAAA;IAC/B,kCAAuB,CAAA;IACvB,gCAAqB,CAAA;IACrB,oCAAyB,CAAA;AAC7B,CAAC,EALW,OAAO,GAAP,eAAO,KAAP,eAAO,QAKlB;AAED,IAAY,cAGX;AAHD,WAAY,cAAc;IACtB,qCAAmB,CAAA;IACnB,uCAAqB,CAAA;AACzB,CAAC,EAHW,cAAc,GAAd,sBAAc,KAAd,sBAAc,QAGzB;AAED,IAAY,SAYX;AAZD,WAAY,SAAS;IACjB,gCAAmB,CAAA;IACnB,4DAA+C,CAAA;IAC/C,kDAAqC,CAAA;IACrC,gDAAmC,CAAA;IACnC,0CAA6B,CAAA;IAC7B,kCAAqB,CAAA;IACrB,8BAAiB,CAAA;IACjB,4BAAe,CAAA;IACf,gCAAmB,CAAA;IACnB,gCAAmB,CAAA;IACnB,gDAAmC,CAAA;AACvC,CAAC,EAZW,SAAS,GAAT,iBAAS,KAAT,iBAAS,QAYpB;AAED,IAAY,cAMX;AAND,WAAY,cAAc;IACtB,mCAAiB,CAAA;IACjB,+BAAa,CAAA;IACb,mCAAiB,CAAA;IACjB,qCAAmB,CAAA;IACnB,qCAAmB,CAAA;AACvB,CAAC,EANW,cAAc,GAAd,sBAAc,KAAd,sBAAc,QAMzB;AAED,IAAY,gBAGX;AAHD,WAAY,gBAAgB;IACxB,uCAAmB,CAAA;IACnB,uCAAmB,CAAA;AACvB,CAAC,EAHW,gBAAgB,GAAhB,wBAAgB,KAAhB,wBAAgB,QAG3B;AAQY,QAAA,eAAe,GAA0B;IAClD,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE;QACrB,GAAG,EAAE,IAAI;QACT,IAAI,EAAE,IAAI;KACb;CACJ,CAAC;AAEF,IAAY,0BAIX;AAJD,WAAY,0BAA0B;IAClC,+DAAiC,CAAA;IACjC,iEAAmC,CAAA;IACnC,4DAA8B,CAAA;AAClC,CAAC,EAJW,0BAA0B,GAA1B,kCAA0B,KAA1B,kCAA0B,QAIrC;AAEY,QAAA,2BAA2B,GAAG;IACvC,cAAc,CAAC,IAAI;IACnB,cAAc,CAAC,MAAM;CACxB,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ENGINES, AST_TYPES, RESPONSE_LEVEL, AST_PRIMITIVES, Primitive } from '.';
|
|
1
|
+
import { ENGINES, AST_TYPES, RESPONSE_LEVEL, AST_PRIMITIVES, CUSTOM_PRIMITIVE, Primitive } from '.';
|
|
2
2
|
import { BaseError } from '../errors';
|
|
3
3
|
interface FunctionElementDefinition {
|
|
4
4
|
identifier: string;
|
|
@@ -15,6 +15,7 @@ export type EnginesFunction = {
|
|
|
15
15
|
export interface FunctionParameter extends FunctionElementDefinition {
|
|
16
16
|
optional: boolean;
|
|
17
17
|
generic?: boolean;
|
|
18
|
+
expectedPrimitive?: AST_PRIMITIVES;
|
|
18
19
|
validator: Array<ValidatorFunctionParameter>;
|
|
19
20
|
}
|
|
20
21
|
export interface ProcessNodeResult {
|
|
@@ -27,7 +28,7 @@ export interface ValidatorParameterContext {
|
|
|
27
28
|
fnNode: FunctionCallAST;
|
|
28
29
|
argument: ProcessNodeResult;
|
|
29
30
|
}
|
|
30
|
-
interface ValidatorFunctionParameter {
|
|
31
|
+
export interface ValidatorFunctionParameter {
|
|
31
32
|
(value: any, dataType: Primitive | undefined, context: ValidatorParameterContext): ValidatorResponse;
|
|
32
33
|
}
|
|
33
34
|
export interface ValidatorResponse {
|
|
@@ -43,7 +44,9 @@ export interface ValidatorParameterResponse extends ValidatorResponse {
|
|
|
43
44
|
argumentIndex: number;
|
|
44
45
|
}
|
|
45
46
|
export interface ValidatorExpectedInfo {
|
|
46
|
-
primitive:
|
|
47
|
+
primitive: Primitive;
|
|
48
|
+
customPrimitive?: CUSTOM_PRIMITIVE;
|
|
49
|
+
customReceived?: CUSTOM_PRIMITIVE;
|
|
47
50
|
type?: AST_TYPES;
|
|
48
51
|
}
|
|
49
52
|
export interface TranspilationResponse {
|
|
@@ -5,7 +5,8 @@ export declare enum ERROR_LIST {
|
|
|
5
5
|
missingString = "missingString",
|
|
6
6
|
missingNumber = "missingNumber",
|
|
7
7
|
missingDate = "missingDate",
|
|
8
|
-
|
|
8
|
+
matchRange = "matchRange",
|
|
9
|
+
integerNumber = "integerNumber",
|
|
9
10
|
missingArg = "missingArg",
|
|
10
11
|
missingParenthesis = "missingParenthesis",
|
|
11
12
|
unknownFunction = "unknownFunction",
|
|
@@ -9,7 +9,8 @@ var ERROR_LIST;
|
|
|
9
9
|
ERROR_LIST["missingString"] = "missingString";
|
|
10
10
|
ERROR_LIST["missingNumber"] = "missingNumber";
|
|
11
11
|
ERROR_LIST["missingDate"] = "missingDate";
|
|
12
|
-
ERROR_LIST["
|
|
12
|
+
ERROR_LIST["matchRange"] = "matchRange";
|
|
13
|
+
ERROR_LIST["integerNumber"] = "integerNumber";
|
|
13
14
|
ERROR_LIST["missingArg"] = "missingArg";
|
|
14
15
|
ERROR_LIST["missingParenthesis"] = "missingParenthesis";
|
|
15
16
|
ERROR_LIST["unknownFunction"] = "unknownFunction";
|
|
@@ -52,9 +53,13 @@ exports.ERROR_DICTIONARY = {
|
|
|
52
53
|
message: 'Element has to be a Date',
|
|
53
54
|
code: 'MISSING_DATE',
|
|
54
55
|
},
|
|
55
|
-
[ERROR_LIST.
|
|
56
|
-
message: 'Element
|
|
57
|
-
code: '
|
|
56
|
+
[ERROR_LIST.matchRange]: {
|
|
57
|
+
message: 'Element does not match with a valid range',
|
|
58
|
+
code: 'MATCH_RANGE',
|
|
59
|
+
},
|
|
60
|
+
[ERROR_LIST.integerNumber]: {
|
|
61
|
+
message: 'Element has to be a integer Number',
|
|
62
|
+
code: 'INTEGER_NUMBER',
|
|
58
63
|
},
|
|
59
64
|
[ERROR_LIST.missingArg]: {
|
|
60
65
|
message: 'Missing arguments',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dictionary.js","sourceRoot":"","sources":["../../../src/errors/dictionary.ts"],"names":[],"mappings":";;;AAAA,IAAY,
|
|
1
|
+
{"version":3,"file":"dictionary.js","sourceRoot":"","sources":["../../../src/errors/dictionary.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { FunctionCallAST, FunctionDefinition, FunctionParameter, ProcessNodeResult, ValidatorParameterResponse, ValidatorResponse } from '../constants/interfaces';
|
|
1
|
+
import { FunctionCallAST, FunctionDefinition, FunctionParameter, ProcessNodeResult, ValidatorExpectedInfo, ValidatorParameterResponse, ValidatorResponse } from '../constants/interfaces';
|
|
3
2
|
import { FunctionError } from './definitions';
|
|
4
|
-
interface MismatchDetail {
|
|
5
|
-
primitive: AST_PRIMITIVES;
|
|
6
|
-
type?: AST_TYPES;
|
|
3
|
+
interface MismatchDetail extends ValidatorExpectedInfo {
|
|
7
4
|
from?: number;
|
|
8
5
|
to?: number;
|
|
9
6
|
optional?: boolean;
|
|
@@ -29,6 +29,14 @@ function validateParameters(definition, args, validators = []) {
|
|
|
29
29
|
const param = parameters[parameterCount];
|
|
30
30
|
const paramValidators = validators.filter((fv) => fv.argumentIndex === argumentIndex);
|
|
31
31
|
const expectedPrimitive = transformParamInMismatchExpected(param, paramValidators, recursiveOptionals);
|
|
32
|
+
if (expectedPrimitive.customReceived) {
|
|
33
|
+
const currentReceived = received[argumentIndex];
|
|
34
|
+
if (currentReceived) {
|
|
35
|
+
currentReceived.customPrimitive =
|
|
36
|
+
expectedPrimitive.customReceived;
|
|
37
|
+
}
|
|
38
|
+
delete expectedPrimitive.customReceived;
|
|
39
|
+
}
|
|
32
40
|
expected.push(expectedPrimitive);
|
|
33
41
|
parameterCount++;
|
|
34
42
|
argumentIndex++;
|
|
@@ -60,26 +68,10 @@ function getExpectedInfoFromParam(param, paramValidators) {
|
|
|
60
68
|
if (firstExpected)
|
|
61
69
|
return firstExpected.mismatchData;
|
|
62
70
|
const primitive = getParamTypeFromMap(param);
|
|
63
|
-
return { primitive };
|
|
71
|
+
return { primitive: primitive };
|
|
64
72
|
}
|
|
65
73
|
function getParamTypeFromMap(param) {
|
|
66
|
-
if (param.validator.length === 0) {
|
|
67
|
-
return constants_1.AST_PRIMITIVES.UNKNOWN;
|
|
68
|
-
}
|
|
69
|
-
const primitiveArray = param.validator.map((validator) => {
|
|
70
|
-
const name = validator.name;
|
|
71
|
-
return mapParamValidator(name);
|
|
72
|
-
});
|
|
73
|
-
return primitiveArray[0];
|
|
74
|
-
}
|
|
75
|
-
function mapParamValidator(name) {
|
|
76
74
|
var _a;
|
|
77
|
-
return (_a =
|
|
75
|
+
return (_a = param.expectedPrimitive) !== null && _a !== void 0 ? _a : constants_1.AST_PRIMITIVES.UNKNOWN;
|
|
78
76
|
}
|
|
79
|
-
const FUNCTION_PRIMITIVE_MAPPER = {
|
|
80
|
-
isStringParam: constants_1.AST_PRIMITIVES.STRING,
|
|
81
|
-
isNumberParam: constants_1.AST_PRIMITIVES.NUMBER,
|
|
82
|
-
isDateParam: constants_1.AST_PRIMITIVES.DATE,
|
|
83
|
-
isBooleanExpression: constants_1.AST_PRIMITIVES.BOOLEAN,
|
|
84
|
-
};
|
|
85
77
|
//# sourceMappingURL=mismatch.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mismatch.js","sourceRoot":"","sources":["../../../src/errors/mismatch.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"mismatch.js","sourceRoot":"","sources":["../../../src/errors/mismatch.ts"],"names":[],"mappings":";;;AAAA,4CAA8C;AAU9C,oEAAgE;AAChE,+CAA8C;AAC9C,6CAA4D;AAoB5D,MAAa,yBACT,SAAQ,2BAAa;IAGrB,YAAY,QAAkB;QAC1B,KAAK,CACD,QAAQ,CAAC,IAAI,EACb,6BAAgB,CAAC,uBAAU,CAAC,yBAAyB,CAAC,CACzD,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,yCAAyC;IAC5E,CAAC;CAMJ;AAhBD,8DAgBC;AAED,SAAgB,kBAAkB,CAC9B,UAA8B,EAC9B,IAA8B,EAC9B,aAA2C,EAAE;IAM7C,MAAM,QAAQ,GAAqB,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QAChD,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;QACzC,MAAM,eAAe,GAAG,IAAA,sCAAiB,EAAC,SAAS,CAAC;YAChD,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,0BAAc,CAAC,OAAO,CAAC;QAC7B,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,IAAI,EAAE,CAAC;IAC/C,MAAM,QAAQ,GAA4B,EAAE,CAAC;IAC7C,IAAI,cAAc,GAAG,CAAC,CAAC;IACvB,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,IAAI,kBAAkB,GAAG,KAAK,CAAC;IAC/B,OAAO,cAAc,GAAG,UAAU,CAAC,MAAM,EAAE;QACvC,MAAM,KAAK,GAAG,UAAU,CAAC,cAAc,CAAC,CAAC;QACzC,MAAM,eAAe,GAAG,UAAU,CAAC,MAAM,CACrC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,aAAa,KAAK,aAAa,CAC7C,CAAC;QACF,MAAM,iBAAiB,GAAG,gCAAgC,CACtD,KAAK,EACL,eAAe,EACf,kBAAkB,CACrB,CAAC;QACF,IAAI,iBAAiB,CAAC,cAAc,EAAE;YAClC,MAAM,eAAe,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAC;YAChD,IAAI,eAAe,EAAE;gBACjB,eAAe,CAAC,eAAe;oBAC3B,iBAAiB,CAAC,cAAc,CAAC;aACxC;YACD,OAAO,iBAAiB,CAAC,cAAc,CAAC;SAC3C;QACD,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACjC,cAAc,EAAE,CAAC;QACjB,aAAa,EAAE,CAAC;QAEhB,MAAM,sBAAsB,GAAG,cAAc,KAAK,UAAU,CAAC,MAAM,CAAC;QACpE,MAAM,gBAAgB,GAAG,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;QAC3D,MAAM,WAAW,GAAG,OAAO,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,gBAAgB,CAAA,KAAK,QAAQ,CAAC;QACrE,IAAI,sBAAsB,IAAI,WAAW,IAAI,gBAAgB,EAAE;YAC3D,cAAc,GAAG,UAAU,CAAC,gBAA0B,CAAC;YACvD,kBAAkB,GAAG,IAAI,CAAC;SAC7B;KACJ;IACD,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACvD,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;AAC7C,CAAC;AAtDD,gDAsDC;AAED,SAAS,gCAAgC,CACrC,KAAwB,EACxB,eAA6C,EAC7C,cAAwB;IAExB,MAAM,MAAM,GAAG;QACX,QAAQ,EAAE,cAAc,KAAK,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ;KACtE,CAAC;IACF,MAAM,YAAY,GAAG,wBAAwB,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;IACtE,qDACO,MAAM,GACN,YAAY,GACZ,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,EAClD;AACN,CAAC;AAED,SAAS,wBAAwB,CAC7B,KAAwB,EACxB,eAA6C;IAE7C,MAAM,eAAe,GAAG,eAAe,CAAC,IAAI,CACxC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,YAAY,CAC5C,CAAC;IACF,IAAI,eAAe,EAAE;QACjB,OAAO,eAAe,CAAC,YAAqC,CAAC;KAChE;IAED,MAAM,aAAa,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IACxE,IAAI,aAAa;QACb,OAAO,aAAa,CAAC,YAAqC,CAAC;IAE/D,MAAM,SAAS,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAC7C,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;AACpC,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAwB;;IACjD,OAAO,MAAA,KAAK,CAAC,iBAAiB,mCAAI,0BAAc,CAAC,OAAO,CAAC;AAC7D,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abs.js","sourceRoot":"","sources":["../../../src/functions/abs.ts"],"names":[],"mappings":";;;AAAA,4CAA8C;AAE9C,oCAAyC;AAEzC;;GAEG;AACU,QAAA,GAAG,GAAuB;IACnC,UAAU,EAAE,KAAK;IACjB,UAAU,EAAE;QACR;YACI,UAAU,EAAE,OAAO;YACnB,QAAQ,EAAE,KAAK;YACf,SAAS,EAAE,CAAC,qBAAa,CAAC;SAC7B;KACJ;IACD,UAAU,EAAE;QACR,aAAa;QACb,SAAS;QACT,QAAQ;QACR,UAAU;KACb;IACD,eAAe,EAAE,0BAAc,CAAC,MAAM;CACzC,CAAC;AAEF,SAAS,aAAa,CAAC,KAAa;IAChC,OAAO,YAAY,KAAK,GAAG,CAAC;AAChC,CAAC;AAED,SAAS,GAAG,CAAC,KAAa;IACtB,OAAO,OAAO,KAAK,GAAG,CAAC;AAC3B,CAAC;AAED,SAAS,SAAS,CAAC,KAAa;IAC5B,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC;AACtB,CAAC;AAED,SAAS,QAAQ,CAAC,KAAa;IAC3B,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC;AACtB,CAAC;AAED,SAAS,UAAU,CAAC,KAAa;IAC7B,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC;AACtB,CAAC"}
|
|
1
|
+
{"version":3,"file":"abs.js","sourceRoot":"","sources":["../../../src/functions/abs.ts"],"names":[],"mappings":";;;AAAA,4CAA8C;AAE9C,oCAAyC;AAEzC;;GAEG;AACU,QAAA,GAAG,GAAuB;IACnC,UAAU,EAAE,KAAK;IACjB,UAAU,EAAE;QACR;YACI,UAAU,EAAE,OAAO;YACnB,QAAQ,EAAE,KAAK;YACf,iBAAiB,EAAE,0BAAc,CAAC,MAAM;YACxC,SAAS,EAAE,CAAC,qBAAa,CAAC;SAC7B;KACJ;IACD,UAAU,EAAE;QACR,aAAa;QACb,SAAS;QACT,QAAQ;QACR,UAAU;KACb;IACD,eAAe,EAAE,0BAAc,CAAC,MAAM;CACzC,CAAC;AAEF,SAAS,aAAa,CAAC,KAAa;IAChC,OAAO,YAAY,KAAK,GAAG,CAAC;AAChC,CAAC;AAED,SAAS,GAAG,CAAC,KAAa;IACtB,OAAO,OAAO,KAAK,GAAG,CAAC;AAC3B,CAAC;AAED,SAAS,SAAS,CAAC,KAAa;IAC5B,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC;AACtB,CAAC;AAED,SAAS,QAAQ,CAAC,KAAa;IAC3B,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC;AACtB,CAAC;AAED,SAAS,UAAU,CAAC,KAAa;IAC7B,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC;AACtB,CAAC"}
|
|
@@ -13,16 +13,19 @@ exports.AND = {
|
|
|
13
13
|
{
|
|
14
14
|
identifier: 'LOGICAL_EXPRESSION',
|
|
15
15
|
optional: false,
|
|
16
|
+
expectedPrimitive: constants_1.AST_PRIMITIVES.BOOLEAN,
|
|
16
17
|
validator: [isBooleanExpression_1.isBooleanExpression],
|
|
17
18
|
},
|
|
18
19
|
{
|
|
19
20
|
identifier: 'LOGICAL_EXPRESSION',
|
|
20
21
|
optional: false,
|
|
22
|
+
expectedPrimitive: constants_1.AST_PRIMITIVES.BOOLEAN,
|
|
21
23
|
validator: [isBooleanExpression_1.isBooleanExpression],
|
|
22
24
|
},
|
|
23
25
|
{
|
|
24
26
|
identifier: 'LOGICAL_EXPRESSION',
|
|
25
27
|
optional: true,
|
|
28
|
+
expectedPrimitive: constants_1.AST_PRIMITIVES.BOOLEAN,
|
|
26
29
|
validator: [isBooleanExpression_1.isBooleanExpression],
|
|
27
30
|
},
|
|
28
31
|
],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"and.js","sourceRoot":"","sources":["../../../src/functions/and.ts"],"names":[],"mappings":";;;AAAA,4CAA8C;AAE9C,sEAAmE;AAEnE;;GAEG;AACU,QAAA,GAAG,GAAuB;IACnC,UAAU,EAAE,KAAK;IACjB,gBAAgB,EAAE,CAAC;IACnB,UAAU,EAAE;QACR;YACI,UAAU,EAAE,oBAAoB;YAChC,QAAQ,EAAE,KAAK;YACf,SAAS,EAAE,CAAC,yCAAmB,CAAC;SACnC;QACD;YACI,UAAU,EAAE,oBAAoB;YAChC,QAAQ,EAAE,KAAK;YACf,SAAS,EAAE,CAAC,yCAAmB,CAAC;SACnC;QACD;YACI,UAAU,EAAE,oBAAoB;YAChC,QAAQ,EAAE,IAAI;YACd,SAAS,EAAE,CAAC,yCAAmB,CAAC;SACnC;KACJ;IACD,UAAU,EAAE;QACR,aAAa;QACb,SAAS;QACT,QAAQ;QACR,UAAU;KACb;IACD,eAAe,EAAE,0BAAc,CAAC,OAAO;CAC1C,CAAC;AAEF,SAAS,aAAa,CAAC,GAAG,IAAW;IACjC,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;AACpC,CAAC;AAED,SAAS,GAAG,CAAC,GAAG,IAAW;IACvB,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;AACrC,CAAC;AAED,SAAS,SAAS,CAAC,GAAG,IAAW;IAC7B,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;AACxB,CAAC;AAED,SAAS,QAAQ,CAAC,GAAG,IAAW;IAC5B,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;AACxB,CAAC;AAED,SAAS,UAAU,CAAC,GAAG,IAAW;IAC9B,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;AACxB,CAAC"}
|
|
1
|
+
{"version":3,"file":"and.js","sourceRoot":"","sources":["../../../src/functions/and.ts"],"names":[],"mappings":";;;AAAA,4CAA8C;AAE9C,sEAAmE;AAEnE;;GAEG;AACU,QAAA,GAAG,GAAuB;IACnC,UAAU,EAAE,KAAK;IACjB,gBAAgB,EAAE,CAAC;IACnB,UAAU,EAAE;QACR;YACI,UAAU,EAAE,oBAAoB;YAChC,QAAQ,EAAE,KAAK;YACf,iBAAiB,EAAE,0BAAc,CAAC,OAAO;YACzC,SAAS,EAAE,CAAC,yCAAmB,CAAC;SACnC;QACD;YACI,UAAU,EAAE,oBAAoB;YAChC,QAAQ,EAAE,KAAK;YACf,iBAAiB,EAAE,0BAAc,CAAC,OAAO;YACzC,SAAS,EAAE,CAAC,yCAAmB,CAAC;SACnC;QACD;YACI,UAAU,EAAE,oBAAoB;YAChC,QAAQ,EAAE,IAAI;YACd,iBAAiB,EAAE,0BAAc,CAAC,OAAO;YACzC,SAAS,EAAE,CAAC,yCAAmB,CAAC;SACnC;KACJ;IACD,UAAU,EAAE;QACR,aAAa;QACb,SAAS;QACT,QAAQ;QACR,UAAU;KACb;IACD,eAAe,EAAE,0BAAc,CAAC,OAAO;CAC1C,CAAC;AAEF,SAAS,aAAa,CAAC,GAAG,IAAW;IACjC,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;AACpC,CAAC;AAED,SAAS,GAAG,CAAC,GAAG,IAAW;IACvB,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;AACrC,CAAC;AAED,SAAS,SAAS,CAAC,GAAG,IAAW;IAC7B,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;AACxB,CAAC;AAED,SAAS,QAAQ,CAAC,GAAG,IAAW;IAC5B,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;AACxB,CAAC;AAED,SAAS,UAAU,CAAC,GAAG,IAAW;IAC9B,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;AACxB,CAAC"}
|
|
@@ -13,16 +13,19 @@ exports.CONCATENATE = {
|
|
|
13
13
|
{
|
|
14
14
|
identifier: 'STRING_1',
|
|
15
15
|
optional: false,
|
|
16
|
+
expectedPrimitive: constants_1.AST_PRIMITIVES.STRING,
|
|
16
17
|
validator: [utils_1.isStringParam],
|
|
17
18
|
},
|
|
18
19
|
{
|
|
19
20
|
identifier: 'STRING_2',
|
|
20
21
|
optional: false,
|
|
22
|
+
expectedPrimitive: constants_1.AST_PRIMITIVES.STRING,
|
|
21
23
|
validator: [utils_1.isStringParam],
|
|
22
24
|
},
|
|
23
25
|
{
|
|
24
26
|
identifier: 'STRING_N',
|
|
25
27
|
optional: true,
|
|
28
|
+
expectedPrimitive: constants_1.AST_PRIMITIVES.STRING,
|
|
26
29
|
validator: [utils_1.isStringParam],
|
|
27
30
|
},
|
|
28
31
|
],
|
|
@@ -32,7 +35,7 @@ exports.CONCATENATE = {
|
|
|
32
35
|
redshift,
|
|
33
36
|
postgresql,
|
|
34
37
|
},
|
|
35
|
-
primitiveResult: constants_1.AST_PRIMITIVES.
|
|
38
|
+
primitiveResult: constants_1.AST_PRIMITIVES.STRING,
|
|
36
39
|
};
|
|
37
40
|
function elasticsearch(...args) {
|
|
38
41
|
return `(${args.join(' + ')})`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"concatenate.js","sourceRoot":"","sources":["../../../src/functions/concatenate.ts"],"names":[],"mappings":";;;AAAA,4CAA8C;AAE9C,oCAAyC;AAEzC;;GAEG;AACU,QAAA,WAAW,GAAuB;IAC3C,UAAU,EAAE,aAAa;IACzB,gBAAgB,EAAE,CAAC;IACnB,UAAU,EAAE;QACR;YACI,UAAU,EAAE,UAAU;YACtB,QAAQ,EAAE,KAAK;YACf,SAAS,EAAE,CAAC,qBAAa,CAAC;SAC7B;QACD;YACI,UAAU,EAAE,UAAU;YACtB,QAAQ,EAAE,KAAK;YACf,SAAS,EAAE,CAAC,qBAAa,CAAC;SAC7B;QACD;YACI,UAAU,EAAE,UAAU;YACtB,QAAQ,EAAE,IAAI;YACd,SAAS,EAAE,CAAC,qBAAa,CAAC;SAC7B;KACJ;IACD,UAAU,EAAE;QACR,aAAa;QACb,SAAS;QACT,QAAQ;QACR,UAAU;KACb;IACD,eAAe,EAAE,0BAAc,CAAC,
|
|
1
|
+
{"version":3,"file":"concatenate.js","sourceRoot":"","sources":["../../../src/functions/concatenate.ts"],"names":[],"mappings":";;;AAAA,4CAA8C;AAE9C,oCAAyC;AAEzC;;GAEG;AACU,QAAA,WAAW,GAAuB;IAC3C,UAAU,EAAE,aAAa;IACzB,gBAAgB,EAAE,CAAC;IACnB,UAAU,EAAE;QACR;YACI,UAAU,EAAE,UAAU;YACtB,QAAQ,EAAE,KAAK;YACf,iBAAiB,EAAE,0BAAc,CAAC,MAAM;YACxC,SAAS,EAAE,CAAC,qBAAa,CAAC;SAC7B;QACD;YACI,UAAU,EAAE,UAAU;YACtB,QAAQ,EAAE,KAAK;YACf,iBAAiB,EAAE,0BAAc,CAAC,MAAM;YACxC,SAAS,EAAE,CAAC,qBAAa,CAAC;SAC7B;QACD;YACI,UAAU,EAAE,UAAU;YACtB,QAAQ,EAAE,IAAI;YACd,iBAAiB,EAAE,0BAAc,CAAC,MAAM;YACxC,SAAS,EAAE,CAAC,qBAAa,CAAC;SAC7B;KACJ;IACD,UAAU,EAAE;QACR,aAAa;QACb,SAAS;QACT,QAAQ;QACR,UAAU;KACb;IACD,eAAe,EAAE,0BAAc,CAAC,MAAM;CACzC,CAAC;AAEF,SAAS,aAAa,CAAC,GAAG,IAAW;IACjC,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;AACnC,CAAC;AAED,SAAS,GAAG,CAAC,GAAG,IAAW;IACvB,OAAO,UAAU,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AACxC,CAAC;AAED,SAAS,SAAS,CAAC,GAAG,IAAW;IAC7B,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;AACxB,CAAC;AAED,2GAA2G;AAC3G,SAAS,QAAQ,CAAC,GAAG,IAAW;IAC5B,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;AACpC,CAAC;AAED,SAAS,UAAU,CAAC,GAAG,IAAW;IAC9B,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;AACxB,CAAC"}
|
|
@@ -3,8 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.DATEADD = void 0;
|
|
4
4
|
const constants_1 = require("../constants");
|
|
5
5
|
const utils_1 = require("../utils");
|
|
6
|
-
const
|
|
6
|
+
const greaterThanOrEqualToReference_1 = require("../utils/greaterThanOrEqualToReference");
|
|
7
7
|
const isAnAllowedValue_1 = require("../utils/isAnAllowedValue");
|
|
8
|
+
const isInteger_1 = require("../utils/isInteger");
|
|
8
9
|
/**
|
|
9
10
|
* `DATEADD` Adds a specific date part value to a given date.
|
|
10
11
|
*/
|
|
@@ -14,11 +15,13 @@ exports.DATEADD = {
|
|
|
14
15
|
{
|
|
15
16
|
identifier: 'DATE',
|
|
16
17
|
optional: false,
|
|
18
|
+
expectedPrimitive: constants_1.AST_PRIMITIVES.DATE,
|
|
17
19
|
validator: [utils_1.isDateParam],
|
|
18
20
|
},
|
|
19
21
|
{
|
|
20
22
|
identifier: 'UNIT',
|
|
21
23
|
optional: false,
|
|
24
|
+
expectedPrimitive: constants_1.AST_PRIMITIVES.STRING,
|
|
22
25
|
validator: [
|
|
23
26
|
utils_1.isStringParam,
|
|
24
27
|
(0, isAnAllowedValue_1.isAnAllowedValue)(['Y', 'M', 'D', 'H', 'MI', 'S']),
|
|
@@ -27,7 +30,12 @@ exports.DATEADD = {
|
|
|
27
30
|
{
|
|
28
31
|
identifier: 'INTERVAL',
|
|
29
32
|
optional: false,
|
|
30
|
-
|
|
33
|
+
expectedPrimitive: constants_1.AST_PRIMITIVES.NUMBER,
|
|
34
|
+
validator: [
|
|
35
|
+
utils_1.isNumberParam,
|
|
36
|
+
(0, greaterThanOrEqualToReference_1.greaterThanOrEqualToReference)(0),
|
|
37
|
+
isInteger_1.isInteger,
|
|
38
|
+
],
|
|
31
39
|
},
|
|
32
40
|
],
|
|
33
41
|
transpiler: {
|
|
@@ -42,37 +50,37 @@ function elasticsearch(date, unit, interval) {
|
|
|
42
50
|
unit = (0, utils_1.removeQuotes)(unit);
|
|
43
51
|
switch (unit) {
|
|
44
52
|
case 'Y':
|
|
45
|
-
return `${date}.plusYears(${interval})`;
|
|
53
|
+
return `${date}.plusYears((long) Math.floor(${interval}))`;
|
|
46
54
|
case 'M':
|
|
47
|
-
return `${date}.plusMonths(${interval})`;
|
|
55
|
+
return `${date}.plusMonths((long) Math.floor(${interval}))`;
|
|
48
56
|
case 'D':
|
|
49
|
-
return `${date}.plusDays(${interval})`;
|
|
57
|
+
return `${date}.plusDays((long) Math.floor(${interval}))`;
|
|
50
58
|
case 'H':
|
|
51
|
-
return `${date}.plusHours(${interval})`;
|
|
59
|
+
return `${date}.plusHours((long) Math.floor(${interval}))`;
|
|
52
60
|
case 'MI':
|
|
53
|
-
return `${date}.plusMinutes(${interval})`;
|
|
61
|
+
return `${date}.plusMinutes((long) Math.floor(${interval}))`;
|
|
54
62
|
case 'S':
|
|
55
|
-
return `${date}.plusSeconds(${interval})`;
|
|
63
|
+
return `${date}.plusSeconds((long) Math.floor(${interval}))`;
|
|
56
64
|
default:
|
|
57
65
|
return '';
|
|
58
66
|
}
|
|
59
67
|
}
|
|
60
68
|
function SQL(date, unit, interval) {
|
|
61
69
|
unit = (0, utils_1.removeQuotes)(unit);
|
|
62
|
-
const sqlDateAdd = (
|
|
70
|
+
const sqlDateAdd = (_date, _unit, _interval) => `DATEADD(${_unit}, FLOOR(${_interval})::INTEGER, ${_date})`;
|
|
63
71
|
switch (unit) {
|
|
64
72
|
case 'Y':
|
|
65
|
-
return sqlDateAdd(date, `${interval}
|
|
73
|
+
return sqlDateAdd(date, `month`, `${interval} * 12`); // Year to month conversion to get the same result for leap years. Redshift behavior is different for leap year example `2016-02-29` https://docs.aws.amazon.com/redshift/latest/dg/r_DATEADD_function.html
|
|
66
74
|
case 'M':
|
|
67
|
-
return sqlDateAdd(date,
|
|
75
|
+
return sqlDateAdd(date, `month`, interval);
|
|
68
76
|
case 'D':
|
|
69
|
-
return sqlDateAdd(date,
|
|
77
|
+
return sqlDateAdd(date, `day`, interval);
|
|
70
78
|
case 'H':
|
|
71
|
-
return sqlDateAdd(date,
|
|
79
|
+
return sqlDateAdd(date, `hour`, interval);
|
|
72
80
|
case 'MI':
|
|
73
|
-
return sqlDateAdd(date,
|
|
81
|
+
return sqlDateAdd(date, `minute`, interval);
|
|
74
82
|
case 'S':
|
|
75
|
-
return sqlDateAdd(date,
|
|
83
|
+
return sqlDateAdd(date, `second`, interval);
|
|
76
84
|
default:
|
|
77
85
|
return '';
|
|
78
86
|
}
|
|
@@ -81,26 +89,26 @@ function snowflake(date, unit, interval) {
|
|
|
81
89
|
return SQL(date, unit, interval);
|
|
82
90
|
}
|
|
83
91
|
function redshift(date, unit, interval) {
|
|
92
|
+
return SQL(date, unit, interval);
|
|
93
|
+
}
|
|
94
|
+
function postgresql(date, unit, interval) {
|
|
84
95
|
unit = (0, utils_1.removeQuotes)(unit);
|
|
85
|
-
const sqlDateAdd = (
|
|
96
|
+
const sqlDateAdd = (_date, _unit) => `${_date} + interval ${_unit}`;
|
|
86
97
|
switch (unit) {
|
|
87
98
|
case 'Y':
|
|
88
|
-
return sqlDateAdd(date, `
|
|
99
|
+
return sqlDateAdd(date, `'1 year' * FLOOR(${interval})::INTEGER`);
|
|
89
100
|
case 'M':
|
|
90
|
-
return sqlDateAdd(date, `month
|
|
101
|
+
return sqlDateAdd(date, `'1 month' * FLOOR(${interval})::INTEGER`);
|
|
91
102
|
case 'D':
|
|
92
|
-
return sqlDateAdd(date, `day
|
|
103
|
+
return sqlDateAdd(date, `'1 day' * FLOOR(${interval})::INTEGER`);
|
|
93
104
|
case 'H':
|
|
94
|
-
return sqlDateAdd(date, `hour
|
|
105
|
+
return sqlDateAdd(date, `'1 hour' * FLOOR(${interval})::INTEGER`);
|
|
95
106
|
case 'MI':
|
|
96
|
-
return sqlDateAdd(date, `minute
|
|
107
|
+
return sqlDateAdd(date, `'1 minute' * FLOOR(${interval})::INTEGER`);
|
|
97
108
|
case 'S':
|
|
98
|
-
return sqlDateAdd(date, `second
|
|
109
|
+
return sqlDateAdd(date, `'1 second' * FLOOR(${interval})::INTEGER`);
|
|
99
110
|
default:
|
|
100
111
|
return '';
|
|
101
112
|
}
|
|
102
113
|
}
|
|
103
|
-
function postgresql(date, unit, interval) {
|
|
104
|
-
return SQL(date, unit, interval);
|
|
105
|
-
}
|
|
106
114
|
//# sourceMappingURL=dateadd.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dateadd.js","sourceRoot":"","sources":["../../../src/functions/dateadd.ts"],"names":[],"mappings":";;;AACA,4CAA8C;AAC9C,oCAKkB;AAClB,
|
|
1
|
+
{"version":3,"file":"dateadd.js","sourceRoot":"","sources":["../../../src/functions/dateadd.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,16 +15,19 @@ exports.DATEDIF = {
|
|
|
15
15
|
{
|
|
16
16
|
identifier: 'START_DATE',
|
|
17
17
|
optional: false,
|
|
18
|
+
expectedPrimitive: constants_1.AST_PRIMITIVES.DATE,
|
|
18
19
|
validator: [utils_1.isDateParam],
|
|
19
20
|
},
|
|
20
21
|
{
|
|
21
22
|
identifier: 'END_DATE',
|
|
22
23
|
optional: false,
|
|
24
|
+
expectedPrimitive: constants_1.AST_PRIMITIVES.DATE,
|
|
23
25
|
validator: [utils_1.isDateParam],
|
|
24
26
|
},
|
|
25
27
|
{
|
|
26
28
|
identifier: 'UNIT',
|
|
27
29
|
optional: false,
|
|
30
|
+
expectedPrimitive: constants_1.AST_PRIMITIVES.STRING,
|
|
28
31
|
validator: [utils_1.isStringParam, (0, isAnAllowedValue_1.isAnAllowedValue)(['Y', 'M', 'D'])],
|
|
29
32
|
},
|
|
30
33
|
],
|
|
@@ -48,10 +51,12 @@ function snowflake(start, end, unit) {
|
|
|
48
51
|
return SQL(start, end, unit);
|
|
49
52
|
}
|
|
50
53
|
function redshift(start, end, unit) {
|
|
51
|
-
|
|
54
|
+
const result = SQL(start, end, unit);
|
|
55
|
+
return `CAST(${result} AS INT)`;
|
|
52
56
|
}
|
|
53
57
|
function postgresql(start, end, unit) {
|
|
54
58
|
unit = (0, utils_1.removeQuotes)(unit);
|
|
55
|
-
|
|
59
|
+
const result = (0, scripts_2.dateDifPostgres)(start, end, unit);
|
|
60
|
+
return `CAST(${result} AS INT)`;
|
|
56
61
|
}
|
|
57
62
|
//# sourceMappingURL=datedif.js.map
|