@rkmodules/rules 0.0.109 → 0.0.111

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
  }),
@@ -1934,10 +1972,65 @@ var groupOr = {
1934
1972
  }); },
1935
1973
  };
1936
1974
 
1975
+ var groupStats = {
1976
+ name: "groupStats",
1977
+ label: "Group stats",
1978
+ description: "Returns statistics about a group of numbers",
1979
+ inputs: {
1980
+ tree: "number",
1981
+ },
1982
+ outputs: {
1983
+ min: "number",
1984
+ max: "number",
1985
+ avg: "number",
1986
+ std: "number",
1987
+ sum: "number",
1988
+ count: "number",
1989
+ },
1990
+ impl: function (inputs) { return __awaiter(void 0, void 0, void 0, function () {
1991
+ var stats;
1992
+ return __generator(this, function (_a) {
1993
+ stats = mapTreeBranch(inputs.tree || {}, function (branch) {
1994
+ var numbers = branch.filter(function (val) { return typeof val === "number"; });
1995
+ var min = Infinity;
1996
+ var max = -Infinity;
1997
+ var avg = 0;
1998
+ var std = 0;
1999
+ var variance = 0;
2000
+ var sum = 0;
2001
+ var count = numbers.length;
2002
+ numbers.forEach(function (val) {
2003
+ if (val < min)
2004
+ min = val;
2005
+ if (val > max)
2006
+ max = val;
2007
+ sum += val;
2008
+ avg += val / count;
2009
+ });
2010
+ numbers.forEach(function (val) {
2011
+ variance += Math.pow((val - avg), 2) / count;
2012
+ });
2013
+ std = Math.sqrt(variance);
2014
+ return [{ min: min, max: max, avg: avg, std: std, sum: sum, count: count }];
2015
+ });
2016
+ // split out into separate outputs
2017
+ return [2 /*return*/, {
2018
+ min: mapTreeBranch(stats, function (branch) { return [branch[0].min]; }),
2019
+ max: mapTreeBranch(stats, function (branch) { return [branch[0].max]; }),
2020
+ avg: mapTreeBranch(stats, function (branch) { return [branch[0].avg]; }),
2021
+ std: mapTreeBranch(stats, function (branch) { return [branch[0].std]; }),
2022
+ sum: mapTreeBranch(stats, function (branch) { return [branch[0].sum]; }),
2023
+ count: mapTreeBranch(stats, function (branch) { return [branch[0].count]; }),
2024
+ }];
2025
+ });
2026
+ }); },
2027
+ };
2028
+
1937
2029
  var _a$2;
1938
2030
  var primitives$2 = (_a$2 = {},
1939
2031
  _a$2[groupAnd.name] = groupAnd,
1940
2032
  _a$2[groupOr.name] = groupOr,
2033
+ _a$2[groupStats.name] = groupStats,
1941
2034
  _a$2);
1942
2035
 
1943
2036
  var inputs = {
@@ -5291,6 +5384,7 @@ var InputText = React.memo(function (_a) {
5291
5384
  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 }));
5292
5385
  });
5293
5386
  function Control(_a) {
5387
+ var _b;
5294
5388
  var value = _a.value, vardef = _a.vardef, onChange = _a.onChange;
5295
5389
  var customControls = useControls();
5296
5390
  if (vardef.type in customControls) {
@@ -5305,8 +5399,13 @@ function Control(_a) {
5305
5399
  return React.createElement(InputString, { value: value !== null && value !== void 0 ? value : "", onChange: onChange });
5306
5400
  case "text":
5307
5401
  return React.createElement(InputText, { value: value !== null && value !== void 0 ? value : "", onChange: onChange });
5308
- case "number":
5309
- 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(); } }));
5402
+ case "number": {
5403
+ if (!vardef.allowEmpty) {
5404
+ value = (_b = value !== null && value !== void 0 ? value : vardef.default) !== null && _b !== void 0 ? _b : 0;
5405
+ }
5406
+ value = value ? Number(value) : value;
5407
+ 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(); } }));
5408
+ }
5310
5409
  case "boolean":
5311
5410
  return (React.createElement("input", { type: "checkbox", checked: Boolean(value), onChange: function (e) { return onChange === null || onChange === void 0 ? void 0 : onChange(e.target.checked); } }));
5312
5411
  default: