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