@rkmodules/rules 0.0.110 → 0.0.112

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.esm.js CHANGED
@@ -502,6 +502,31 @@ function toArray(a) {
502
502
  return Object.values(a).flat();
503
503
  }
504
504
 
505
+ var getType = {
506
+ name: "getType",
507
+ label: "Get Type",
508
+ description: "Gets the type of a value as a string",
509
+ inputs: {
510
+ input: { type: "any" },
511
+ },
512
+ outputs: {
513
+ type: "string",
514
+ },
515
+ impl: function (inputs, params) { return __awaiter(void 0, void 0, void 0, function () {
516
+ return __generator(this, function (_a) {
517
+ return [2 /*return*/, {
518
+ type: mapTree(inputs.input, function (x) {
519
+ if (x === undefined)
520
+ return "empty";
521
+ if (x === null)
522
+ return "empty";
523
+ return typeof x;
524
+ }),
525
+ }];
526
+ });
527
+ }); },
528
+ };
529
+
505
530
  // utilities
506
531
  /**
507
532
  * merges two trees by concatenating the branches with the same path
@@ -736,8 +761,17 @@ var primitives$8 = (_a$8 = {},
736
761
  _a$8[getValue.name] = getValue,
737
762
  _a$8[log.name] = log,
738
763
  _a$8[value.name] = value,
764
+ _a$8[getType.name] = getType,
739
765
  _a$8);
740
766
 
767
+ function isNumber() {
768
+ var ns = [];
769
+ for (var _i = 0; _i < arguments.length; _i++) {
770
+ ns[_i] = arguments[_i];
771
+ }
772
+ return ns.every(function (n) { return typeof n === "number" && !isNaN(n); });
773
+ }
774
+
741
775
  var add$1 = {
742
776
  name: "add",
743
777
  label: "Add",
@@ -753,7 +787,7 @@ var add$1 = {
753
787
  return __generator(this, function (_a) {
754
788
  return [2 /*return*/, {
755
789
  sum: binaryOnTree(inputs.a, inputs.b, function (itemA, itemB) {
756
- if (itemA === undefined || itemB === undefined)
790
+ if (!isNumber(itemA, itemB))
757
791
  return DISCARD;
758
792
  return itemA + itemB;
759
793
  }, true),
@@ -935,7 +969,7 @@ var cosDeg = {
935
969
  return __generator(this, function (_a) {
936
970
  return [2 /*return*/, {
937
971
  cos: mapTree(inputs.a, function (angle) {
938
- if (angle === undefined)
972
+ if (!isNumber(angle))
939
973
  return DISCARD;
940
974
  return Math.cos((angle * Math.PI) / 180);
941
975
  }),
@@ -959,7 +993,7 @@ var divide = {
959
993
  return __generator(this, function (_a) {
960
994
  return [2 /*return*/, {
961
995
  quotient: binaryOnTree(inputs.a, inputs.b, function (itemA, itemB) {
962
- if (itemA === undefined || itemB === undefined)
996
+ if (!isNumber(itemA, itemB))
963
997
  return DISCARD;
964
998
  if (itemB === 0)
965
999
  return DISCARD;
@@ -986,12 +1020,12 @@ var equalTo = {
986
1020
  return __generator(this, function (_a) {
987
1021
  return [2 /*return*/, {
988
1022
  eq: binaryOnTree(inputs.a, inputs.b, function (itemA, itemB) {
989
- if (itemA === undefined || itemB === undefined)
1023
+ if (!isNumber(itemA, itemB))
990
1024
  return DISCARD;
991
1025
  return itemA === itemB;
992
1026
  }, true),
993
1027
  neq: binaryOnTree(inputs.a, inputs.b, function (itemA, itemB) {
994
- if (itemA === undefined || itemB === undefined)
1028
+ if (!isNumber(itemA, itemB))
995
1029
  return DISCARD;
996
1030
  return itemA !== itemB;
997
1031
  }, true),
@@ -1016,12 +1050,12 @@ var greaterThan = {
1016
1050
  return __generator(this, function (_a) {
1017
1051
  return [2 /*return*/, {
1018
1052
  gt: binaryOnTree(inputs.a, inputs.b, function (itemA, itemB) {
1019
- if (itemA === undefined || itemB === undefined)
1053
+ if (!isNumber(itemA, itemB))
1020
1054
  return DISCARD;
1021
1055
  return itemA > itemB;
1022
1056
  }, true),
1023
1057
  gte: binaryOnTree(inputs.a, inputs.b, function (itemA, itemB) {
1024
- if (itemA === undefined || itemB === undefined)
1058
+ if (!isNumber(itemA, itemB))
1025
1059
  return DISCARD;
1026
1060
  return itemA >= itemB;
1027
1061
  }, true),
@@ -1046,12 +1080,12 @@ var lessThan = {
1046
1080
  return __generator(this, function (_a) {
1047
1081
  return [2 /*return*/, {
1048
1082
  lt: binaryOnTree(inputs.a, inputs.b, function (itemA, itemB) {
1049
- if (itemA === undefined || itemB === undefined)
1083
+ if (!isNumber(itemA, itemB))
1050
1084
  return DISCARD;
1051
1085
  return itemA < itemB;
1052
1086
  }, true),
1053
1087
  lte: binaryOnTree(inputs.a, inputs.b, function (itemA, itemB) {
1054
- if (itemA === undefined || itemB === undefined)
1088
+ if (!isNumber(itemA, itemB))
1055
1089
  return DISCARD;
1056
1090
  return itemA <= itemB;
1057
1091
  }, true),
@@ -1075,7 +1109,7 @@ var modulo = {
1075
1109
  return __generator(this, function (_a) {
1076
1110
  return [2 /*return*/, {
1077
1111
  mod: binaryOnTree(inputs.a, inputs.b, function (itemA, itemB) {
1078
- if (itemA === undefined || itemB === undefined)
1112
+ if (!isNumber(itemA, itemB))
1079
1113
  return DISCARD;
1080
1114
  return itemA % itemB;
1081
1115
  }, true),
@@ -1099,7 +1133,7 @@ var multiply = {
1099
1133
  return __generator(this, function (_a) {
1100
1134
  return [2 /*return*/, {
1101
1135
  product: binaryOnTree(inputs.a, inputs.b, function (itemA, itemB) {
1102
- if (itemA === undefined || itemB === undefined)
1136
+ if (!isNumber(itemA, itemB))
1103
1137
  return DISCARD;
1104
1138
  return itemA * itemB;
1105
1139
  }, true),
@@ -1123,7 +1157,7 @@ var pow = {
1123
1157
  return __generator(this, function (_a) {
1124
1158
  return [2 /*return*/, {
1125
1159
  pow: binaryOnTree(inputs.x, inputs.n, function (x, n) {
1126
- if (x === undefined || n === undefined)
1160
+ if (!isNumber(x, n))
1127
1161
  return DISCARD;
1128
1162
  return Math.pow(x, n);
1129
1163
  }, true),
@@ -1146,7 +1180,7 @@ var sinDeg = {
1146
1180
  return __generator(this, function (_a) {
1147
1181
  return [2 /*return*/, {
1148
1182
  sin: mapTree(inputs.a, function (angle) {
1149
- if (angle === undefined)
1183
+ if (!isNumber(angle))
1150
1184
  return DISCARD;
1151
1185
  return Math.sin((angle * Math.PI) / 180);
1152
1186
  }),
@@ -1169,7 +1203,7 @@ var sqrt = {
1169
1203
  return __generator(this, function (_a) {
1170
1204
  return [2 /*return*/, {
1171
1205
  sqrt: mapTree(inputs.x, function (x) {
1172
- if (x === undefined)
1206
+ if (!isNumber(x))
1173
1207
  return DISCARD;
1174
1208
  if (x < 0)
1175
1209
  return DISCARD;
@@ -1195,7 +1229,7 @@ var subtract$1 = {
1195
1229
  return __generator(this, function (_a) {
1196
1230
  return [2 /*return*/, {
1197
1231
  difference: binaryOnTree(inputs.a, inputs.b, function (itemA, itemB) {
1198
- if (itemA === undefined || itemB === undefined)
1232
+ if (!isNumber(itemA, itemB))
1199
1233
  return DISCARD;
1200
1234
  return itemA - itemB;
1201
1235
  }, true),
@@ -1218,7 +1252,7 @@ var tanDeg = {
1218
1252
  return __generator(this, function (_a) {
1219
1253
  return [2 /*return*/, {
1220
1254
  tan: mapTree(inputs.a, function (angle) {
1221
- if (angle === undefined)
1255
+ if (!isNumber(angle))
1222
1256
  return DISCARD;
1223
1257
  return Math.tan((angle * Math.PI) / 180);
1224
1258
  }),
@@ -1246,7 +1280,7 @@ var ceil = {
1246
1280
  f = Math.pow(10, params.decimals || 0);
1247
1281
  return [2 /*return*/, {
1248
1282
  ceil: mapTree(inputs.x, function (x) {
1249
- if (x === undefined)
1283
+ if (!isNumber(x))
1250
1284
  return DISCARD;
1251
1285
  return Math.ceil(f * x) / f;
1252
1286
  }),
@@ -1274,7 +1308,7 @@ var floor = {
1274
1308
  f = Math.pow(10, params.decimals || 0);
1275
1309
  return [2 /*return*/, {
1276
1310
  floor: mapTree(inputs.x, function (x) {
1277
- if (x === undefined)
1311
+ if (!isNumber(x))
1278
1312
  return DISCARD;
1279
1313
  return Math.floor(f * x) / f;
1280
1314
  }),
@@ -1302,7 +1336,7 @@ var round = {
1302
1336
  f = Math.pow(10, params.decimals || 0);
1303
1337
  return [2 /*return*/, {
1304
1338
  round: mapTree(inputs.x, function (x) {
1305
- if (x === undefined)
1339
+ if (!isNumber(x))
1306
1340
  return DISCARD;
1307
1341
  return Math.round(f * x) / f;
1308
1342
  }),
@@ -1662,7 +1696,11 @@ var listInput = {
1662
1696
  allLines = allLines.map(function (line) { return line.toLowerCase() === "true"; });
1663
1697
  }
1664
1698
  else if (allLines.every(function (line) { return isNumStr(line); })) {
1665
- allLines = allLines.map(function (line) { return Number(line); });
1699
+ allLines = allLines.map(function (line) {
1700
+ if (!line)
1701
+ return undefined;
1702
+ return Number(line);
1703
+ });
1666
1704
  }
1667
1705
  return allLines;
1668
1706
  }),
@@ -1840,12 +1878,118 @@ var groupAll = {
1840
1878
  }); },
1841
1879
  };
1842
1880
 
1881
+ var normalizeTree = {
1882
+ name: "normalizeTree",
1883
+ label: "Normalize Groups",
1884
+ description: "Normalize a tree to consequtive groups and removed empty groups.",
1885
+ inputs: {
1886
+ tree: "any",
1887
+ },
1888
+ outputs: {
1889
+ tree: "any",
1890
+ },
1891
+ impl: function (inputs) { return __awaiter(void 0, void 0, void 0, function () {
1892
+ var normalized;
1893
+ return __generator(this, function (_a) {
1894
+ if (!inputs.tree) {
1895
+ return [2 /*return*/, {}];
1896
+ }
1897
+ normalized = normalizePaths(inputs.tree);
1898
+ return [2 /*return*/, {
1899
+ tree: mapTreeBranch(normalized, function (branch) {
1900
+ if (!branch.length) {
1901
+ return DISCARD;
1902
+ }
1903
+ return branch;
1904
+ }),
1905
+ }];
1906
+ });
1907
+ }); },
1908
+ };
1909
+
1910
+ var filterTree = {
1911
+ name: "filterTree",
1912
+ label: "Filter Tree",
1913
+ description: "Filter groups by path matchers",
1914
+ inputs: {
1915
+ tree: "any",
1916
+ query: { type: "string", default: "*" },
1917
+ },
1918
+ outputs: {
1919
+ tree: "any",
1920
+ },
1921
+ impl: function (inputs, params) { return __awaiter(void 0, void 0, void 0, function () {
1922
+ var queries;
1923
+ return __generator(this, function (_a) {
1924
+ queries = toArray(inputs.query || {}).map(function (q) {
1925
+ return q
1926
+ .trim()
1927
+ .split(";")
1928
+ .map(function (part) {
1929
+ return new RegExp("^" + part.replace(/\*/g, ".*") + "$");
1930
+ });
1931
+ });
1932
+ return [2 /*return*/, {
1933
+ tree: mapTreeBranch(inputs.tree || {}, function (branch, path) {
1934
+ var pathSegments = path.split(";");
1935
+ var match = queries.some(function (query) {
1936
+ return query.every(function (regex, i) {
1937
+ if (!regex.test(pathSegments[i] || "")) {
1938
+ return false;
1939
+ }
1940
+ return true;
1941
+ });
1942
+ });
1943
+ if (match) {
1944
+ return branch;
1945
+ }
1946
+ else {
1947
+ return DISCARD;
1948
+ }
1949
+ }),
1950
+ }];
1951
+ });
1952
+ }); },
1953
+ };
1954
+
1955
+ var treeItem = {
1956
+ name: "treeItem",
1957
+ label: "Tree Item",
1958
+ description: "Retrieve the groups from a tree at specified indexes",
1959
+ inputs: {
1960
+ tree: "any",
1961
+ index: { type: "number", default: 0 },
1962
+ },
1963
+ outputs: {
1964
+ tree: "any",
1965
+ },
1966
+ impl: function (inputs, params) { return __awaiter(void 0, void 0, void 0, function () {
1967
+ var indices;
1968
+ return __generator(this, function (_a) {
1969
+ indices = toArray(inputs.index || {});
1970
+ return [2 /*return*/, {
1971
+ tree: mapTreeBranch(inputs.tree || {}, function (branch, path, index) {
1972
+ if (indices.includes(index)) {
1973
+ return branch;
1974
+ }
1975
+ else {
1976
+ return DISCARD;
1977
+ }
1978
+ }),
1979
+ }];
1980
+ });
1981
+ }); },
1982
+ };
1983
+
1843
1984
  var _a$4;
1844
1985
  var primitives$4 = (_a$4 = {},
1845
1986
  _a$4[splitGroup.name] = splitGroup,
1846
1987
  _a$4[mergeGroup.name] = mergeGroup,
1847
1988
  _a$4[groupAll.name] = groupAll,
1989
+ _a$4[filterTree.name] = filterTree,
1990
+ _a$4[treeItem.name] = treeItem,
1848
1991
  _a$4[simplifyTree.name] = simplifyTree,
1992
+ _a$4[normalizeTree.name] = normalizeTree,
1849
1993
  _a$4[cartesianGroups.name] = cartesianGroups,
1850
1994
  _a$4[mergeTree.name] = mergeTree,
1851
1995
  _a$4);
@@ -1951,14 +2095,15 @@ var groupStats = {
1951
2095
  var stats;
1952
2096
  return __generator(this, function (_a) {
1953
2097
  stats = mapTreeBranch(inputs.tree || {}, function (branch) {
2098
+ var numbers = branch.filter(function (val) { return typeof val === "number"; });
1954
2099
  var min = Infinity;
1955
2100
  var max = -Infinity;
1956
2101
  var avg = 0;
1957
2102
  var std = 0;
1958
2103
  var variance = 0;
1959
2104
  var sum = 0;
1960
- var count = branch.length;
1961
- branch.forEach(function (val) {
2105
+ var count = numbers.length;
2106
+ numbers.forEach(function (val) {
1962
2107
  if (val < min)
1963
2108
  min = val;
1964
2109
  if (val > max)
@@ -1966,7 +2111,7 @@ var groupStats = {
1966
2111
  sum += val;
1967
2112
  avg += val / count;
1968
2113
  });
1969
- branch.forEach(function (val) {
2114
+ numbers.forEach(function (val) {
1970
2115
  variance += Math.pow((val - avg), 2) / count;
1971
2116
  });
1972
2117
  std = Math.sqrt(variance);
@@ -5343,6 +5488,7 @@ var InputText = React.memo(function (_a) {
5343
5488
  return (React.createElement("textarea", { value: inner, onChange: function (e) { return setInner(e.target.value); }, onBlur: handleBlur, onKeyDown: handleKey, onMouseDown: function (e) { return e.stopPropagation(); }, rows: 4 }));
5344
5489
  });
5345
5490
  function Control(_a) {
5491
+ var _b;
5346
5492
  var value = _a.value, vardef = _a.vardef, onChange = _a.onChange;
5347
5493
  var customControls = useControls();
5348
5494
  if (vardef.type in customControls) {
@@ -5357,8 +5503,13 @@ function Control(_a) {
5357
5503
  return React.createElement(InputString, { value: value !== null && value !== void 0 ? value : "", onChange: onChange });
5358
5504
  case "text":
5359
5505
  return React.createElement(InputText, { value: value !== null && value !== void 0 ? value : "", onChange: onChange });
5360
- case "number":
5361
- return (React.createElement(InputNumber, { value: Number(value) || 0, onChange: onChange, step: vardef.step, min: vardef.min, max: vardef.max, inputMode: "numeric", onMouseDown: function (e) { return e.stopPropagation(); } }));
5506
+ case "number": {
5507
+ if (!vardef.allowEmpty) {
5508
+ value = (_b = value !== null && value !== void 0 ? value : vardef.default) !== null && _b !== void 0 ? _b : 0;
5509
+ }
5510
+ value = value ? Number(value) : value;
5511
+ return (React.createElement(InputNumber, { value: value, onChange: onChange, step: vardef.step, min: vardef.min, max: vardef.max, inputMode: "numeric", onMouseDown: function (e) { return e.stopPropagation(); } }));
5512
+ }
5362
5513
  case "boolean":
5363
5514
  return (React.createElement("input", { type: "checkbox", checked: Boolean(value), onChange: function (e) { return onChange === null || onChange === void 0 ? void 0 : onChange(e.target.checked); } }));
5364
5515
  default: