@mojir/lits 2.1.22 → 2.1.23

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.
@@ -898,91 +898,6 @@ function approxEqual(a, b, epsilon) {
898
898
  function approxZero(value) {
899
899
  return Math.abs(value) < EPSILON;
900
900
  }
901
- function paramCountAccepts(paramsCount, nbrOfParams) {
902
- if (typeof paramsCount === 'number') {
903
- return paramsCount === nbrOfParams;
904
- }
905
- var min = paramsCount.min, max = paramsCount.max, even = paramsCount.even, odd = paramsCount.odd;
906
- if (even && nbrOfParams % 2 !== 0) {
907
- return false;
908
- }
909
- if (odd && nbrOfParams % 2 !== 1) {
910
- return false;
911
- }
912
- if (typeof min === 'number' && nbrOfParams < min) {
913
- return false;
914
- }
915
- if (typeof max === 'number' && nbrOfParams > max) {
916
- return false;
917
- }
918
- return true;
919
- }
920
- function paramCountAcceptsMin(paramsCount, nbrOfParams) {
921
- if (typeof paramsCount === 'number') {
922
- return nbrOfParams >= paramsCount;
923
- }
924
- var min = paramsCount.min;
925
- if (typeof min === 'number' && nbrOfParams < min) {
926
- return false;
927
- }
928
- return true;
929
- }
930
- function getCommonParamCount(params) {
931
- return params.reduce(function (acc, param) {
932
- if (acc === null) {
933
- return null;
934
- }
935
- var paramCount = (typeof param === 'number' || isColl(param)) ? 1 : param.paramCount;
936
- if (typeof acc === 'number' && typeof paramCount === 'number') {
937
- return acc === paramCount ? acc : null;
938
- }
939
- if (typeof paramCount === 'number') {
940
- if (paramCountAccepts(acc, paramCount)) {
941
- return paramCount;
942
- }
943
- return null;
944
- }
945
- if (typeof acc === 'number') {
946
- if (paramCountAccepts(paramCount, acc)) {
947
- return acc;
948
- }
949
- return null;
950
- }
951
- var aMin = paramCount.min, aMax = paramCount.max, aEven = paramCount.even, aOdd = paramCount.odd;
952
- var bMin = acc.min, bMax = acc.max, bEven = acc.even, bOdd = acc.odd;
953
- var min = typeof aMin === 'number' && typeof bMin === 'number'
954
- ? Math.max(aMin, bMin)
955
- : typeof aMin === 'number' ? aMin : typeof bMin === 'number' ? bMin : undefined;
956
- var max = typeof aMax === 'number' && typeof bMax === 'number'
957
- ? Math.min(aMax, bMax)
958
- : typeof aMax === 'number' ? aMax : typeof bMax === 'number' ? bMax : undefined;
959
- var even = aEven !== null && aEven !== void 0 ? aEven : bEven;
960
- var odd = aOdd !== null && aOdd !== void 0 ? aOdd : bOdd;
961
- if (min !== undefined && max !== undefined && min > max) {
962
- return null;
963
- }
964
- if (even && odd) {
965
- return null;
966
- }
967
- if (odd && min !== undefined && min < 1) {
968
- return null;
969
- }
970
- return { min: min, max: max, even: even, odd: odd };
971
- }, {});
972
- }
973
- function getParamCount(param) {
974
- return (typeof param === 'number' || isColl(param)) ? 1 : param.paramCount;
975
- }
976
- function paramCountMinus(paramCount, count) {
977
- if (typeof paramCount === 'number') {
978
- return paramCount - count;
979
- }
980
- var min = paramCount.min === undefined ? undefined : paramCount.min - count;
981
- var max = paramCount.max === undefined ? undefined : paramCount.max - count;
982
- var even = paramCount.even === undefined ? undefined : count % 2 === 0 ? true : undefined;
983
- var odd = paramCount.odd === undefined ? undefined : count % 2 === 0 ? true : undefined;
984
- return { min: min, max: max, even: even, odd: odd };
985
- }
986
901
 
987
902
  // isArray not needed, use Array.isArary
988
903
  function asArray(value, sourceCodeInfo) {
@@ -4613,6 +4528,98 @@ function applyPlaceholders(templateString, placeholders, sourceCodeInfo) {
4613
4528
  return templateString;
4614
4529
  }
4615
4530
 
4531
+ function paramCountAccepts(paramsCount, nbrOfParams) {
4532
+ if (typeof paramsCount === 'number') {
4533
+ return paramsCount === nbrOfParams;
4534
+ }
4535
+ var min = paramsCount.min, max = paramsCount.max, even = paramsCount.even, odd = paramsCount.odd;
4536
+ if (even && nbrOfParams % 2 !== 0) {
4537
+ return false;
4538
+ }
4539
+ if (odd && nbrOfParams % 2 !== 1) {
4540
+ return false;
4541
+ }
4542
+ if (typeof min === 'number' && nbrOfParams < min) {
4543
+ return false;
4544
+ }
4545
+ if (typeof max === 'number' && nbrOfParams > max) {
4546
+ return false;
4547
+ }
4548
+ return true;
4549
+ }
4550
+ function paramCountAcceptsMin(paramsCount, nbrOfParams) {
4551
+ if (typeof paramsCount === 'number') {
4552
+ return nbrOfParams >= paramsCount;
4553
+ }
4554
+ var min = paramsCount.min;
4555
+ if (typeof min === 'number' && nbrOfParams < min) {
4556
+ return false;
4557
+ }
4558
+ return true;
4559
+ }
4560
+ function getCommonParamCountFromFunctions(params) {
4561
+ return params.reduce(function (acc, param) {
4562
+ if (acc === null) {
4563
+ return null;
4564
+ }
4565
+ var paramCount = (typeof param === 'number' || isColl(param)) ? 1 : param.paramCount;
4566
+ if (typeof acc === 'number' && typeof paramCount === 'number') {
4567
+ return acc === paramCount ? acc : null;
4568
+ }
4569
+ if (typeof paramCount === 'number') {
4570
+ if (paramCountAccepts(acc, paramCount)) {
4571
+ return paramCount;
4572
+ }
4573
+ return null;
4574
+ }
4575
+ if (typeof acc === 'number') {
4576
+ if (paramCountAccepts(paramCount, acc)) {
4577
+ return acc;
4578
+ }
4579
+ return null;
4580
+ }
4581
+ var aMin = paramCount.min, aMax = paramCount.max, aEven = paramCount.even, aOdd = paramCount.odd;
4582
+ var bMin = acc.min, bMax = acc.max, bEven = acc.even, bOdd = acc.odd;
4583
+ var min = typeof aMin === 'number' && typeof bMin === 'number'
4584
+ ? Math.max(aMin, bMin)
4585
+ : typeof aMin === 'number' ? aMin : typeof bMin === 'number' ? bMin : undefined;
4586
+ var max = typeof aMax === 'number' && typeof bMax === 'number'
4587
+ ? Math.min(aMax, bMax)
4588
+ : typeof aMax === 'number' ? aMax : typeof bMax === 'number' ? bMax : undefined;
4589
+ var even = aEven !== null && aEven !== void 0 ? aEven : bEven;
4590
+ var odd = aOdd !== null && aOdd !== void 0 ? aOdd : bOdd;
4591
+ if (even && odd) {
4592
+ return null;
4593
+ }
4594
+ if (even) {
4595
+ if (typeof min === 'number' && min % 2 !== 0) {
4596
+ min += 1;
4597
+ }
4598
+ if (typeof max === 'number' && max % 2 !== 0) {
4599
+ max -= 1;
4600
+ }
4601
+ }
4602
+ if (odd) {
4603
+ if (typeof min === 'number' && min % 2 === 0) {
4604
+ min += 1;
4605
+ }
4606
+ if (typeof max === 'number' && max % 2 === 0) {
4607
+ max -= 1;
4608
+ }
4609
+ }
4610
+ if (typeof min === 'number' && typeof max === 'number' && min > max) {
4611
+ return null;
4612
+ }
4613
+ if (typeof min === 'number' && min === max) {
4614
+ return min;
4615
+ }
4616
+ return { min: min, max: max, even: even, odd: odd };
4617
+ }, {});
4618
+ }
4619
+ function getParamCountFromFunction(param) {
4620
+ return (typeof param === 'number' || isColl(param)) ? 1 : param.paramCount;
4621
+ }
4622
+
4616
4623
  var functionalNormalExpression = {
4617
4624
  '|>': {
4618
4625
  evaluate: function (_a, sourceCodeInfo, contextStack, _b) {
@@ -4652,7 +4659,7 @@ var functionalNormalExpression = {
4652
4659
  _a.sourceCodeInfo = sourceCodeInfo,
4653
4660
  _a.functionType = 'Comp',
4654
4661
  _a.params = params,
4655
- _a.paramCount = params.length > 0 ? getParamCount(params.at(-1)) : 1,
4662
+ _a.paramCount = params.length > 0 ? getParamCountFromFunction(params.at(-1)) : 1,
4656
4663
  _a;
4657
4664
  },
4658
4665
  paramCount: {},
@@ -4675,7 +4682,7 @@ var functionalNormalExpression = {
4675
4682
  evaluate: function (params, sourceCodeInfo) {
4676
4683
  var _a;
4677
4684
  params.forEach(function (param) { return assertFunctionLike(param, sourceCodeInfo); });
4678
- var paramCount = getCommonParamCount(params);
4685
+ var paramCount = getCommonParamCountFromFunctions(params);
4679
4686
  if (paramCount === null) {
4680
4687
  throw new LitsError('All functions must accept the same number of arguments', sourceCodeInfo);
4681
4688
  }
@@ -4699,7 +4706,7 @@ var functionalNormalExpression = {
4699
4706
  _b.sourceCodeInfo = sourceCodeInfo,
4700
4707
  _b.functionType = 'Complement',
4701
4708
  _b.function = fun,
4702
- _b.paramCount = getParamCount(fun),
4709
+ _b.paramCount = getParamCountFromFunction(fun),
4703
4710
  _b;
4704
4711
  },
4705
4712
  paramCount: 1,
@@ -4741,7 +4748,7 @@ var functionalNormalExpression = {
4741
4748
  _b.functionType = 'Fnull',
4742
4749
  _b.function = fun,
4743
4750
  _b.params = params,
4744
- _b.paramCount = getParamCount(fun),
4751
+ _b.paramCount = getParamCountFromFunction(fun),
4745
4752
  _b;
4746
4753
  },
4747
4754
  paramCount: { min: 2 },
@@ -11849,8 +11856,7 @@ var defnSpecialExpression = {
11849
11856
  assertNameNotDefined(functionSymbol[1], contextStack, builtin, node[2]);
11850
11857
  var evaluatedFunction = evaluateFunction(fn, contextStack, builtin, getUndefinedSymbols, evaluateNode);
11851
11858
  var min = evaluatedFunction[0].filter(function (arg) { return arg[0] !== bindingTargetTypes.rest && arg[1][1] === undefined; }).length;
11852
- var max = evaluatedFunction[0].some(function (arg) { return arg[0] === bindingTargetTypes.rest; }) ? undefined : evaluatedFunction[0].length;
11853
- var paramCount = min === max ? min : { min: min, max: max };
11859
+ var paramCount = { min: min };
11854
11860
  var litsFunction = (_b = {},
11855
11861
  _b[FUNCTION_SYMBOL] = true,
11856
11862
  _b.sourceCodeInfo = node[2],
@@ -12823,7 +12829,7 @@ function evaluateNormalExpression(node, contextStack) {
12823
12829
  _a.params = params,
12824
12830
  _a.placeholders = placeholders,
12825
12831
  _a.sourceCodeInfo = sourceCodeInfo,
12826
- _a.paramCount = paramCountMinus(getParamCount(fn), params.length),
12832
+ _a.paramCount = placeholders.length,
12827
12833
  _a);
12828
12834
  return partialFunction;
12829
12835
  }
@@ -12851,7 +12857,7 @@ function evaluateNormalExpression(node, contextStack) {
12851
12857
  _b.params = params,
12852
12858
  _b.placeholders = placeholders,
12853
12859
  _b.sourceCodeInfo = sourceCodeInfo,
12854
- _b.paramCount = paramCountMinus(getParamCount(fn), params.length),
12860
+ _b.paramCount = placeholders.length,
12855
12861
  _b);
12856
12862
  return partialFunction;
12857
12863
  }
@@ -13101,7 +13107,8 @@ function createContextStack(params) {
13101
13107
  nativeJsFunctions: params.jsFunctions
13102
13108
  && Object.entries(params.jsFunctions).reduce(function (acc, _a) {
13103
13109
  var _b;
13104
- var _c = __read(_a, 2), name = _c[0], jsFunction = _c[1];
13110
+ var _c;
13111
+ var _d = __read(_a, 2), name = _d[0], jsFunction = _d[1];
13105
13112
  if (specialExpressionKeys.includes(name)) {
13106
13113
  console.warn("Cannot shadow special expression \"".concat(name, "\", ignoring."));
13107
13114
  return acc;
@@ -13116,7 +13123,7 @@ function createContextStack(params) {
13116
13123
  name: name
13117
13124
  },
13118
13125
  _b[FUNCTION_SYMBOL] = true,
13119
- _b.paramCount = {},
13126
+ _b.paramCount = (_c = jsFunction.paramCount) !== null && _c !== void 0 ? _c : {},
13120
13127
  _b);
13121
13128
  return acc;
13122
13129
  }, {}),