@lotics/app-sdk 0.115.3 → 0.115.4
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/index.js +23 -14
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -31520,33 +31520,37 @@ function buildDependencyGraph(formulaFields, allFields) {
|
|
|
31520
31520
|
}
|
|
31521
31521
|
return { sortedFields: result, circularDependencies };
|
|
31522
31522
|
}
|
|
31523
|
-
function readsFieldsOnlyThroughEmptinessPredicates(node) {
|
|
31523
|
+
function readsFieldsOnlyThroughEmptinessPredicates(node, taken) {
|
|
31524
|
+
const reads = (child) => readsFieldsOnlyThroughEmptinessPredicates(child, taken);
|
|
31524
31525
|
if (node === void 0) return true;
|
|
31525
31526
|
if (isFieldRead(node)) return false;
|
|
31526
31527
|
switch (node.type) {
|
|
31527
31528
|
case "Invoke": {
|
|
31528
31529
|
const args = node.arguments ?? [];
|
|
31529
31530
|
const predicate = node.method === void 0 && node.receiver.type === "ID" && EMPTINESS_PREDICATES.has(node.receiver.value);
|
|
31530
|
-
return (predicate ||
|
|
31531
|
-
(arg) => predicate && isFieldRead(arg) ||
|
|
31531
|
+
return (predicate || reads(node.receiver)) && args.every(
|
|
31532
|
+
(arg) => predicate && isFieldRead(arg) || reads(arg)
|
|
31532
31533
|
);
|
|
31533
31534
|
}
|
|
31534
31535
|
case "Unary":
|
|
31535
|
-
return
|
|
31536
|
+
return reads(node.child);
|
|
31536
31537
|
case "Binary":
|
|
31537
|
-
return
|
|
31538
|
+
return reads(node.left) && reads(node.right);
|
|
31538
31539
|
case "Getter":
|
|
31539
|
-
return
|
|
31540
|
+
return reads(node.receiver);
|
|
31540
31541
|
case "Index":
|
|
31541
|
-
return
|
|
31542
|
-
case "Ternary":
|
|
31543
|
-
|
|
31542
|
+
return reads(node.receiver) && reads(node.argument);
|
|
31543
|
+
case "Ternary": {
|
|
31544
|
+
if (!reads(node.condition)) return false;
|
|
31545
|
+
const decided = node.condition === void 0 || taken === void 0 ? void 0 : taken(node.condition);
|
|
31546
|
+
return decided === true ? reads(node.trueExpr) : decided === false ? reads(node.falseExpr) : reads(node.trueExpr) && reads(node.falseExpr);
|
|
31547
|
+
}
|
|
31544
31548
|
case "List":
|
|
31545
|
-
return (node.items ?? []).every(
|
|
31549
|
+
return (node.items ?? []).every((item) => reads(item));
|
|
31546
31550
|
case "Map":
|
|
31547
|
-
return Object.values(node.entries ?? {}).every(
|
|
31551
|
+
return Object.values(node.entries ?? {}).every((entry) => reads(entry));
|
|
31548
31552
|
case "ArrowFunction":
|
|
31549
|
-
return
|
|
31553
|
+
return reads(node.body);
|
|
31550
31554
|
case "ID":
|
|
31551
31555
|
return node.value !== "data";
|
|
31552
31556
|
case "Literal":
|
|
@@ -31559,8 +31563,13 @@ function isFieldRead(node) {
|
|
|
31559
31563
|
}
|
|
31560
31564
|
function evaluateFormulaWithJS(preparedExpression, data, timezone, everyReferenceEmpty) {
|
|
31561
31565
|
try {
|
|
31562
|
-
if (everyReferenceEmpty
|
|
31563
|
-
|
|
31566
|
+
if (everyReferenceEmpty) {
|
|
31567
|
+
const helpers = createTimezoneAwareFunctions(timezone);
|
|
31568
|
+
const taken = (condition2) => {
|
|
31569
|
+
const answer = condition2.evaluate({ ...data, ...helpers });
|
|
31570
|
+
return typeof answer === "boolean" ? answer : void 0;
|
|
31571
|
+
};
|
|
31572
|
+
if (!readsFieldsOnlyThroughEmptinessPredicates(parseExpression(preparedExpression), taken)) return null;
|
|
31564
31573
|
}
|
|
31565
31574
|
const result = evaluateJsExpression(preparedExpression, data, void 0, timezone);
|
|
31566
31575
|
if (result === null || result === void 0) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lotics/app-sdk",
|
|
3
|
-
"version": "0.115.
|
|
3
|
+
"version": "0.115.4",
|
|
4
4
|
"description": "The SDK a Lotics custom-code app reads and writes through \u2014 typed hooks over the host bridge, cell readers, mount() and AppRouter",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|