@rkmodules/rules 0.0.67 → 0.0.69

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.cjs.js CHANGED
@@ -138,7 +138,7 @@ var DISCARD = Symbol("DISCARD");
138
138
  * @param tree
139
139
  * @returns
140
140
  */
141
- function simplifyTree(tree) {
141
+ function simplifyTree$1(tree) {
142
142
  var keys = Object.keys(tree);
143
143
  if (keys.length <= 1)
144
144
  return tree; // ✅ Don't simplify if only one path
@@ -254,6 +254,9 @@ function broadCast(value) {
254
254
  function getBranch(tree, path) {
255
255
  return tree[path];
256
256
  }
257
+ function getPaths(tree) {
258
+ return Object.keys(tree);
259
+ }
257
260
  /**
258
261
  * maps a tree, the tree branches are flatmapped, so if an array is returned for each item in the list, a flat list is returned
259
262
  * @param tree
@@ -653,6 +656,8 @@ var add$1 = {
653
656
  return __generator(this, function (_a) {
654
657
  return [2 /*return*/, {
655
658
  sum: binaryOnTree(inputs.a, inputs.b, function (itemA, itemB) {
659
+ if (itemA === undefined || itemB === undefined)
660
+ return DISCARD;
656
661
  return itemA + itemB;
657
662
  }, true),
658
663
  }];
@@ -819,6 +824,29 @@ function getUnboundSymbols(expr, scope, extraBound) {
819
824
  return Array.from(free).sort();
820
825
  }
821
826
 
827
+ var cosDeg = {
828
+ name: "cosDeg",
829
+ label: "Cosine",
830
+ description: "Cosine of angle in degrees",
831
+ inputs: {
832
+ a: { type: "number", default: 0 },
833
+ },
834
+ outputs: {
835
+ cos: "number",
836
+ },
837
+ impl: function (inputs) { return __awaiter(void 0, void 0, void 0, function () {
838
+ return __generator(this, function (_a) {
839
+ return [2 /*return*/, {
840
+ cos: mapTree(inputs.a, function (angle) {
841
+ if (angle === undefined)
842
+ return DISCARD;
843
+ return Math.cos((angle * Math.PI) / 180);
844
+ }),
845
+ }];
846
+ });
847
+ }); },
848
+ };
849
+
822
850
  var divide = {
823
851
  name: "divide",
824
852
  label: "Divide",
@@ -834,6 +862,8 @@ var divide = {
834
862
  return __generator(this, function (_a) {
835
863
  return [2 /*return*/, {
836
864
  quotient: binaryOnTree(inputs.a, inputs.b, function (itemA, itemB) {
865
+ if (itemA === undefined || itemB === undefined)
866
+ return DISCARD;
837
867
  if (itemB === 0)
838
868
  return DISCARD;
839
869
  return itemA / itemB;
@@ -843,6 +873,36 @@ var divide = {
843
873
  }); },
844
874
  };
845
875
 
876
+ var equalTo = {
877
+ name: "equalTo",
878
+ label: "Equal to",
879
+ description: "Compare equal and not equal",
880
+ inputs: {
881
+ a: { type: "number", default: 0 },
882
+ b: { type: "number", default: 0 },
883
+ },
884
+ outputs: {
885
+ eq: "boolean",
886
+ neq: "boolean",
887
+ },
888
+ impl: function (inputs) { return __awaiter(void 0, void 0, void 0, function () {
889
+ return __generator(this, function (_a) {
890
+ return [2 /*return*/, {
891
+ eq: binaryOnTree(inputs.a, inputs.b, function (itemA, itemB) {
892
+ if (itemA === undefined || itemB === undefined)
893
+ return DISCARD;
894
+ return itemA === itemB;
895
+ }, true),
896
+ neq: binaryOnTree(inputs.a, inputs.b, function (itemA, itemB) {
897
+ if (itemA === undefined || itemB === undefined)
898
+ return DISCARD;
899
+ return itemA !== itemB;
900
+ }, true),
901
+ }];
902
+ });
903
+ }); },
904
+ };
905
+
846
906
  var greaterThan = {
847
907
  name: "greaterThan",
848
908
  label: "Greater Than",
@@ -903,6 +963,30 @@ var lessThan = {
903
963
  }); },
904
964
  };
905
965
 
966
+ var modulo = {
967
+ name: "modulo",
968
+ label: "Modulo",
969
+ description: "Division remainder of two numbers",
970
+ inputs: {
971
+ a: { type: "number", default: 1 },
972
+ b: { type: "number", default: 1 },
973
+ },
974
+ outputs: {
975
+ mod: "number",
976
+ },
977
+ impl: function (inputs) { return __awaiter(void 0, void 0, void 0, function () {
978
+ return __generator(this, function (_a) {
979
+ return [2 /*return*/, {
980
+ mod: binaryOnTree(inputs.a, inputs.b, function (itemA, itemB) {
981
+ if (itemA === undefined || itemB === undefined)
982
+ return DISCARD;
983
+ return itemA % itemB;
984
+ }, true),
985
+ }];
986
+ });
987
+ }); },
988
+ };
989
+
906
990
  var multiply = {
907
991
  name: "multiply",
908
992
  label: "Multiply",
@@ -918,6 +1002,8 @@ var multiply = {
918
1002
  return __generator(this, function (_a) {
919
1003
  return [2 /*return*/, {
920
1004
  product: binaryOnTree(inputs.a, inputs.b, function (itemA, itemB) {
1005
+ if (itemA === undefined || itemB === undefined)
1006
+ return DISCARD;
921
1007
  return itemA * itemB;
922
1008
  }, true),
923
1009
  }];
@@ -925,6 +1011,78 @@ var multiply = {
925
1011
  }); },
926
1012
  };
927
1013
 
1014
+ var pow = {
1015
+ name: "pow",
1016
+ label: "Power",
1017
+ description: "Power a number",
1018
+ inputs: {
1019
+ x: { type: "number", default: 0 },
1020
+ n: { type: "number", default: 2 },
1021
+ },
1022
+ outputs: {
1023
+ pow: "number",
1024
+ },
1025
+ impl: function (inputs) { return __awaiter(void 0, void 0, void 0, function () {
1026
+ return __generator(this, function (_a) {
1027
+ return [2 /*return*/, {
1028
+ pow: binaryOnTree(inputs.x, inputs.n, function (x, n) {
1029
+ if (x === undefined || n === undefined)
1030
+ return DISCARD;
1031
+ return Math.pow(x, n);
1032
+ }),
1033
+ }];
1034
+ });
1035
+ }); },
1036
+ };
1037
+
1038
+ var sinDeg = {
1039
+ name: "sinDeg",
1040
+ label: "Sine",
1041
+ description: "Sine of angle in degrees",
1042
+ inputs: {
1043
+ a: { type: "number", default: 0 },
1044
+ },
1045
+ outputs: {
1046
+ sin: "number",
1047
+ },
1048
+ impl: function (inputs) { return __awaiter(void 0, void 0, void 0, function () {
1049
+ return __generator(this, function (_a) {
1050
+ return [2 /*return*/, {
1051
+ sin: mapTree(inputs.a, function (angle) {
1052
+ if (angle === undefined)
1053
+ return DISCARD;
1054
+ return Math.sin((angle * Math.PI) / 180);
1055
+ }),
1056
+ }];
1057
+ });
1058
+ }); },
1059
+ };
1060
+
1061
+ var sqrt = {
1062
+ name: "sqrt",
1063
+ label: "Square root",
1064
+ description: "Square root of a number",
1065
+ inputs: {
1066
+ x: { type: "number", default: 0 },
1067
+ },
1068
+ outputs: {
1069
+ sqrt: "number",
1070
+ },
1071
+ impl: function (inputs) { return __awaiter(void 0, void 0, void 0, function () {
1072
+ return __generator(this, function (_a) {
1073
+ return [2 /*return*/, {
1074
+ sqrt: mapTree(inputs.x, function (x) {
1075
+ if (x === undefined)
1076
+ return DISCARD;
1077
+ if (x < 0)
1078
+ return DISCARD;
1079
+ return Math.sqrt(x);
1080
+ }),
1081
+ }];
1082
+ });
1083
+ }); },
1084
+ };
1085
+
928
1086
  var subtract$1 = {
929
1087
  name: "subtract",
930
1088
  label: "Subtract",
@@ -940,6 +1098,8 @@ var subtract$1 = {
940
1098
  return __generator(this, function (_a) {
941
1099
  return [2 /*return*/, {
942
1100
  difference: binaryOnTree(inputs.a, inputs.b, function (itemA, itemB) {
1101
+ if (itemA === undefined || itemB === undefined)
1102
+ return DISCARD;
943
1103
  return itemA - itemB;
944
1104
  }, true),
945
1105
  }];
@@ -947,15 +1107,45 @@ var subtract$1 = {
947
1107
  }); },
948
1108
  };
949
1109
 
1110
+ var tanDeg = {
1111
+ name: "tanDeg",
1112
+ label: "Tangent",
1113
+ description: "Tangent of angle in degrees",
1114
+ inputs: {
1115
+ a: { type: "number", default: 0 },
1116
+ },
1117
+ outputs: {
1118
+ tan: "number",
1119
+ },
1120
+ impl: function (inputs) { return __awaiter(void 0, void 0, void 0, function () {
1121
+ return __generator(this, function (_a) {
1122
+ return [2 /*return*/, {
1123
+ tan: mapTree(inputs.a, function (angle) {
1124
+ if (angle === undefined)
1125
+ return DISCARD;
1126
+ return Math.tan((angle * Math.PI) / 180);
1127
+ }),
1128
+ }];
1129
+ });
1130
+ }); },
1131
+ };
1132
+
950
1133
  var _a$5;
951
1134
  var primitives$5 = (_a$5 = {},
952
1135
  _a$5[calc.name] = calc,
1136
+ _a$5[equalTo.name] = equalTo,
953
1137
  _a$5[lessThan.name] = lessThan,
954
1138
  _a$5[greaterThan.name] = greaterThan,
955
1139
  _a$5[add$1.name] = add$1,
956
1140
  _a$5[subtract$1.name] = subtract$1,
957
1141
  _a$5[multiply.name] = multiply,
958
1142
  _a$5[divide.name] = divide,
1143
+ _a$5[modulo.name] = modulo,
1144
+ _a$5[sinDeg.name] = sinDeg,
1145
+ _a$5[cosDeg.name] = cosDeg,
1146
+ _a$5[tanDeg.name] = tanDeg,
1147
+ _a$5[sqrt.name] = sqrt,
1148
+ _a$5[pow.name] = pow,
959
1149
  _a$5);
960
1150
 
961
1151
  var filterList = {
@@ -966,24 +1156,35 @@ var filterList = {
966
1156
  list: "any",
967
1157
  keep: "boolean",
968
1158
  },
1159
+ params: {
1160
+ removeEmpty: { type: "boolean", default: false },
1161
+ },
969
1162
  outputs: {
970
1163
  list: "any",
971
1164
  others: "any",
972
1165
  },
973
- impl: function (inputs) { return __awaiter(void 0, void 0, void 0, function () {
1166
+ impl: function (inputs, params) { return __awaiter(void 0, void 0, void 0, function () {
974
1167
  return __generator(this, function (_a) {
975
1168
  return [2 /*return*/, {
976
1169
  list: binaryOnTreeBranch(inputs.list || {}, inputs.keep || {}, function (branchA, branchB) {
977
- return branchA.filter(function (item, index) {
1170
+ var result = branchA.filter(function (item, index) {
978
1171
  return (branchB[Math.min(index, branchB.length - 1)] ===
979
1172
  true);
980
1173
  });
1174
+ if (!result.length && params.removeEmpty) {
1175
+ return DISCARD;
1176
+ }
1177
+ return result;
981
1178
  }),
982
1179
  others: binaryOnTreeBranch(inputs.list || {}, inputs.keep || {}, function (branchA, branchB) {
983
- return branchA.filter(function (item, index) {
1180
+ var result = branchA.filter(function (item, index) {
984
1181
  return (branchB[Math.min(index, branchB.length - 1)] ===
985
1182
  false);
986
1183
  });
1184
+ if (!result.length && params.removeEmpty) {
1185
+ return DISCARD;
1186
+ }
1187
+ return result;
987
1188
  }),
988
1189
  }];
989
1190
  });
@@ -1123,6 +1324,45 @@ var shiftList = {
1123
1324
  }); },
1124
1325
  };
1125
1326
 
1327
+ var cartesianGroups = {
1328
+ name: "cartesianGroups",
1329
+ label: "Cartesian Groups",
1330
+ description: "Duplicate groups such that all pairings are created.",
1331
+ inputs: {
1332
+ treeA: "any",
1333
+ treeB: "any",
1334
+ },
1335
+ params: {},
1336
+ outputs: {
1337
+ treeA: "any",
1338
+ treeB: "any",
1339
+ },
1340
+ impl: function (inputs, params) { return __awaiter(void 0, void 0, void 0, function () {
1341
+ var pathsA, pathsB, treeA, treeB;
1342
+ return __generator(this, function (_a) {
1343
+ if (!inputs.treeA || !inputs.treeB) {
1344
+ return [2 /*return*/, {}];
1345
+ }
1346
+ pathsA = getPaths(inputs.treeA);
1347
+ pathsB = getPaths(inputs.treeB);
1348
+ treeA = {};
1349
+ treeB = {};
1350
+ pathsB.forEach(function (pathB, ib) {
1351
+ pathsA.forEach(function (pathA, ia) {
1352
+ var pa = "".concat(ib, ";").concat(pathA);
1353
+ treeA[pa] = inputs.treeA[pathA];
1354
+ var pb = "".concat(pathB, ";").concat(ia);
1355
+ treeB[pb] = inputs.treeB[pathB];
1356
+ });
1357
+ });
1358
+ return [2 /*return*/, {
1359
+ treeA: treeA,
1360
+ treeB: treeB,
1361
+ }];
1362
+ });
1363
+ }); },
1364
+ };
1365
+
1126
1366
  var _a$4;
1127
1367
  var primitives$4 = (_a$4 = {},
1128
1368
  _a$4[splitGroup.name] = splitGroup,
@@ -1131,6 +1371,7 @@ var primitives$4 = (_a$4 = {},
1131
1371
  _a$4[listLength.name] = listLength,
1132
1372
  _a$4[filterList.name] = filterList,
1133
1373
  _a$4[shiftList.name] = shiftList,
1374
+ _a$4[cartesianGroups.name] = cartesianGroups,
1134
1375
  _a$4);
1135
1376
 
1136
1377
  var series = {
@@ -1202,9 +1443,32 @@ var mergeTree = {
1202
1443
  }); },
1203
1444
  };
1204
1445
 
1446
+ var simplifyTree = {
1447
+ name: "simplifyTree",
1448
+ label: "Simplify Tree",
1449
+ description: "Simplify a tree by removing redundant groups.",
1450
+ inputs: {
1451
+ tree: "any",
1452
+ },
1453
+ outputs: {
1454
+ tree: "any",
1455
+ },
1456
+ impl: function (inputs) { return __awaiter(void 0, void 0, void 0, function () {
1457
+ return __generator(this, function (_a) {
1458
+ if (!inputs.tree) {
1459
+ return [2 /*return*/, {}];
1460
+ }
1461
+ return [2 /*return*/, {
1462
+ tree: simplifyTree$1(inputs.tree),
1463
+ }];
1464
+ });
1465
+ }); },
1466
+ };
1467
+
1205
1468
  var _a$2;
1206
1469
  var primitives$2 = (_a$2 = {},
1207
1470
  _a$2[mergeTree.name] = mergeTree,
1471
+ _a$2[simplifyTree.name] = simplifyTree,
1208
1472
  _a$2);
1209
1473
 
1210
1474
  var groupAnd = {
@@ -1220,7 +1484,7 @@ var groupAnd = {
1220
1484
  impl: function (inputs) { return __awaiter(void 0, void 0, void 0, function () {
1221
1485
  return __generator(this, function (_a) {
1222
1486
  return [2 /*return*/, {
1223
- result: mapTreeBranch(inputs.tree, function (branch) {
1487
+ result: mapTreeBranch(inputs.tree || {}, function (branch) {
1224
1488
  return [branch.reduce(function (acc, val) { return acc && val; }, true)];
1225
1489
  }),
1226
1490
  }];
@@ -1241,7 +1505,7 @@ var groupOr = {
1241
1505
  impl: function (inputs) { return __awaiter(void 0, void 0, void 0, function () {
1242
1506
  return __generator(this, function (_a) {
1243
1507
  return [2 /*return*/, {
1244
- result: mapTreeBranch(inputs.tree, function (branch) {
1508
+ result: mapTreeBranch(inputs.tree || {}, function (branch) {
1245
1509
  return [branch.reduce(function (acc, val) { return acc || val; }, false)];
1246
1510
  }),
1247
1511
  }];
@@ -6165,6 +6429,7 @@ exports.binaryOnTreeBranch = binaryOnTreeBranch;
6165
6429
  exports.broadCast = broadCast;
6166
6430
  exports.expandTree = expandTree;
6167
6431
  exports.getBranch = getBranch;
6432
+ exports.getPaths = getPaths;
6168
6433
  exports.getReferences = getReferences;
6169
6434
  exports.getValue = getValue$1;
6170
6435
  exports.graftTree = graftTree;
@@ -6181,7 +6446,7 @@ exports.normalizeVarDef = normalizeVarDef;
6181
6446
  exports.parseReference = parseReference;
6182
6447
  exports.primitives = primitives;
6183
6448
  exports.sameShape = sameShape;
6184
- exports.simplifyTree = simplifyTree;
6449
+ exports.simplifyTree = simplifyTree$1;
6185
6450
  exports.toArray = toArray;
6186
6451
  exports.topSort = topSort;
6187
6452
  exports.treeSize = treeSize;