@mojir/lits 2.1.21 → 2.1.22
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/cli/cli.js +127 -13
- package/dist/cli/src/builtin/interface.d.ts +3 -3
- package/dist/cli/src/builtin/specialExpressions/functions.d.ts +1 -1
- package/dist/cli/src/parser/types.d.ts +2 -0
- package/dist/cli/src/typeGuards/index.d.ts +3 -3
- package/dist/cli/src/utils/index.d.ts +8 -1
- package/dist/index.esm.js +127 -12
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +127 -12
- package/dist/index.js.map +1 -1
- package/dist/lits.iife.js +127 -12
- package/dist/lits.iife.js.map +1 -1
- package/dist/src/builtin/interface.d.ts +3 -3
- package/dist/src/builtin/specialExpressions/functions.d.ts +1 -1
- package/dist/src/parser/types.d.ts +2 -0
- package/dist/src/typeGuards/index.d.ts +3 -3
- package/dist/src/utils/index.d.ts +8 -1
- package/dist/testFramework.esm.js +126 -12
- package/dist/testFramework.esm.js.map +1 -1
- package/dist/testFramework.js +126 -12
- package/dist/testFramework.js.map +1 -1
- package/package.json +1 -1
package/dist/lits.iife.js
CHANGED
|
@@ -757,6 +757,7 @@ var Lits = (function (exports) {
|
|
|
757
757
|
},
|
|
758
758
|
_a.name = name,
|
|
759
759
|
_a.functionType = 'NativeJsFunction',
|
|
760
|
+
_a.paramCount = {},
|
|
760
761
|
_a;
|
|
761
762
|
}
|
|
762
763
|
function joinSets() {
|
|
@@ -803,6 +804,91 @@ var Lits = (function (exports) {
|
|
|
803
804
|
function approxZero(value) {
|
|
804
805
|
return Math.abs(value) < EPSILON;
|
|
805
806
|
}
|
|
807
|
+
function paramCountAccepts(paramsCount, nbrOfParams) {
|
|
808
|
+
if (typeof paramsCount === 'number') {
|
|
809
|
+
return paramsCount === nbrOfParams;
|
|
810
|
+
}
|
|
811
|
+
var min = paramsCount.min, max = paramsCount.max, even = paramsCount.even, odd = paramsCount.odd;
|
|
812
|
+
if (even && nbrOfParams % 2 !== 0) {
|
|
813
|
+
return false;
|
|
814
|
+
}
|
|
815
|
+
if (odd && nbrOfParams % 2 !== 1) {
|
|
816
|
+
return false;
|
|
817
|
+
}
|
|
818
|
+
if (typeof min === 'number' && nbrOfParams < min) {
|
|
819
|
+
return false;
|
|
820
|
+
}
|
|
821
|
+
if (typeof max === 'number' && nbrOfParams > max) {
|
|
822
|
+
return false;
|
|
823
|
+
}
|
|
824
|
+
return true;
|
|
825
|
+
}
|
|
826
|
+
function paramCountAcceptsMin(paramsCount, nbrOfParams) {
|
|
827
|
+
if (typeof paramsCount === 'number') {
|
|
828
|
+
return nbrOfParams >= paramsCount;
|
|
829
|
+
}
|
|
830
|
+
var min = paramsCount.min;
|
|
831
|
+
if (typeof min === 'number' && nbrOfParams < min) {
|
|
832
|
+
return false;
|
|
833
|
+
}
|
|
834
|
+
return true;
|
|
835
|
+
}
|
|
836
|
+
function getCommonParamCount(params) {
|
|
837
|
+
return params.reduce(function (acc, param) {
|
|
838
|
+
if (acc === null) {
|
|
839
|
+
return null;
|
|
840
|
+
}
|
|
841
|
+
var paramCount = (typeof param === 'number' || isColl(param)) ? 1 : param.paramCount;
|
|
842
|
+
if (typeof acc === 'number' && typeof paramCount === 'number') {
|
|
843
|
+
return acc === paramCount ? acc : null;
|
|
844
|
+
}
|
|
845
|
+
if (typeof paramCount === 'number') {
|
|
846
|
+
if (paramCountAccepts(acc, paramCount)) {
|
|
847
|
+
return paramCount;
|
|
848
|
+
}
|
|
849
|
+
return null;
|
|
850
|
+
}
|
|
851
|
+
if (typeof acc === 'number') {
|
|
852
|
+
if (paramCountAccepts(paramCount, acc)) {
|
|
853
|
+
return acc;
|
|
854
|
+
}
|
|
855
|
+
return null;
|
|
856
|
+
}
|
|
857
|
+
var aMin = paramCount.min, aMax = paramCount.max, aEven = paramCount.even, aOdd = paramCount.odd;
|
|
858
|
+
var bMin = acc.min, bMax = acc.max, bEven = acc.even, bOdd = acc.odd;
|
|
859
|
+
var min = typeof aMin === 'number' && typeof bMin === 'number'
|
|
860
|
+
? Math.max(aMin, bMin)
|
|
861
|
+
: typeof aMin === 'number' ? aMin : typeof bMin === 'number' ? bMin : undefined;
|
|
862
|
+
var max = typeof aMax === 'number' && typeof bMax === 'number'
|
|
863
|
+
? Math.min(aMax, bMax)
|
|
864
|
+
: typeof aMax === 'number' ? aMax : typeof bMax === 'number' ? bMax : undefined;
|
|
865
|
+
var even = aEven !== null && aEven !== void 0 ? aEven : bEven;
|
|
866
|
+
var odd = aOdd !== null && aOdd !== void 0 ? aOdd : bOdd;
|
|
867
|
+
if (min !== undefined && max !== undefined && min > max) {
|
|
868
|
+
return null;
|
|
869
|
+
}
|
|
870
|
+
if (even && odd) {
|
|
871
|
+
return null;
|
|
872
|
+
}
|
|
873
|
+
if (odd && min !== undefined && min < 1) {
|
|
874
|
+
return null;
|
|
875
|
+
}
|
|
876
|
+
return { min: min, max: max, even: even, odd: odd };
|
|
877
|
+
}, {});
|
|
878
|
+
}
|
|
879
|
+
function getParamCount(param) {
|
|
880
|
+
return (typeof param === 'number' || isColl(param)) ? 1 : param.paramCount;
|
|
881
|
+
}
|
|
882
|
+
function paramCountMinus(paramCount, count) {
|
|
883
|
+
if (typeof paramCount === 'number') {
|
|
884
|
+
return paramCount - count;
|
|
885
|
+
}
|
|
886
|
+
var min = paramCount.min === undefined ? undefined : paramCount.min - count;
|
|
887
|
+
var max = paramCount.max === undefined ? undefined : paramCount.max - count;
|
|
888
|
+
var even = paramCount.even === undefined ? undefined : count % 2 === 0 ? true : undefined;
|
|
889
|
+
var odd = paramCount.odd === undefined ? undefined : count % 2 === 0 ? true : undefined;
|
|
890
|
+
return { min: min, max: max, even: even, odd: odd };
|
|
891
|
+
}
|
|
806
892
|
|
|
807
893
|
// isArray not needed, use Array.isArary
|
|
808
894
|
function asArray(value, sourceCodeInfo) {
|
|
@@ -4466,11 +4552,13 @@ var Lits = (function (exports) {
|
|
|
4466
4552
|
'comp': {
|
|
4467
4553
|
evaluate: function (params, sourceCodeInfo) {
|
|
4468
4554
|
var _a;
|
|
4555
|
+
params.forEach(function (param) { return assertFunctionLike(param, sourceCodeInfo); });
|
|
4469
4556
|
return _a = {},
|
|
4470
4557
|
_a[FUNCTION_SYMBOL] = true,
|
|
4471
4558
|
_a.sourceCodeInfo = sourceCodeInfo,
|
|
4472
4559
|
_a.functionType = 'Comp',
|
|
4473
4560
|
_a.params = params,
|
|
4561
|
+
_a.paramCount = params.length > 0 ? getParamCount(params.at(-1)) : 1,
|
|
4474
4562
|
_a;
|
|
4475
4563
|
},
|
|
4476
4564
|
paramCount: {},
|
|
@@ -4484,6 +4572,7 @@ var Lits = (function (exports) {
|
|
|
4484
4572
|
_b.sourceCodeInfo = sourceCodeInfo,
|
|
4485
4573
|
_b.functionType = 'Constantly',
|
|
4486
4574
|
_b.value = toAny(value),
|
|
4575
|
+
_b.paramCount = {},
|
|
4487
4576
|
_b;
|
|
4488
4577
|
},
|
|
4489
4578
|
paramCount: 1,
|
|
@@ -4491,11 +4580,17 @@ var Lits = (function (exports) {
|
|
|
4491
4580
|
'juxt': {
|
|
4492
4581
|
evaluate: function (params, sourceCodeInfo) {
|
|
4493
4582
|
var _a;
|
|
4583
|
+
params.forEach(function (param) { return assertFunctionLike(param, sourceCodeInfo); });
|
|
4584
|
+
var paramCount = getCommonParamCount(params);
|
|
4585
|
+
if (paramCount === null) {
|
|
4586
|
+
throw new LitsError('All functions must accept the same number of arguments', sourceCodeInfo);
|
|
4587
|
+
}
|
|
4494
4588
|
return _a = {},
|
|
4495
4589
|
_a[FUNCTION_SYMBOL] = true,
|
|
4496
4590
|
_a.sourceCodeInfo = sourceCodeInfo,
|
|
4497
4591
|
_a.functionType = 'Juxt',
|
|
4498
4592
|
_a.params = params,
|
|
4593
|
+
_a.paramCount = paramCount,
|
|
4499
4594
|
_a;
|
|
4500
4595
|
},
|
|
4501
4596
|
paramCount: { min: 1 },
|
|
@@ -4504,11 +4599,13 @@ var Lits = (function (exports) {
|
|
|
4504
4599
|
evaluate: function (_a, sourceCodeInfo) {
|
|
4505
4600
|
var _b;
|
|
4506
4601
|
var _c = __read(_a, 1), fn = _c[0];
|
|
4602
|
+
var fun = asFunctionLike(fn, sourceCodeInfo);
|
|
4507
4603
|
return _b = {},
|
|
4508
4604
|
_b[FUNCTION_SYMBOL] = true,
|
|
4509
4605
|
_b.sourceCodeInfo = sourceCodeInfo,
|
|
4510
4606
|
_b.functionType = 'Complement',
|
|
4511
|
-
_b.function =
|
|
4607
|
+
_b.function = fun,
|
|
4608
|
+
_b.paramCount = getParamCount(fun),
|
|
4512
4609
|
_b;
|
|
4513
4610
|
},
|
|
4514
4611
|
paramCount: 1,
|
|
@@ -4521,6 +4618,7 @@ var Lits = (function (exports) {
|
|
|
4521
4618
|
_a.sourceCodeInfo = sourceCodeInfo,
|
|
4522
4619
|
_a.functionType = 'EveryPred',
|
|
4523
4620
|
_a.params = params,
|
|
4621
|
+
_a.paramCount = 1,
|
|
4524
4622
|
_a;
|
|
4525
4623
|
},
|
|
4526
4624
|
paramCount: { min: 1 },
|
|
@@ -4533,6 +4631,7 @@ var Lits = (function (exports) {
|
|
|
4533
4631
|
_a.sourceCodeInfo = sourceCodeInfo,
|
|
4534
4632
|
_a.functionType = 'SomePred',
|
|
4535
4633
|
_a.params = params,
|
|
4634
|
+
_a.paramCount = 1,
|
|
4536
4635
|
_a;
|
|
4537
4636
|
},
|
|
4538
4637
|
paramCount: { min: 1 },
|
|
@@ -4541,12 +4640,14 @@ var Lits = (function (exports) {
|
|
|
4541
4640
|
evaluate: function (_a, sourceCodeInfo) {
|
|
4542
4641
|
var _b;
|
|
4543
4642
|
var _c = __read(_a), fn = _c[0], params = _c.slice(1);
|
|
4643
|
+
var fun = asFunctionLike(fn, sourceCodeInfo);
|
|
4544
4644
|
return _b = {},
|
|
4545
4645
|
_b[FUNCTION_SYMBOL] = true,
|
|
4546
4646
|
_b.sourceCodeInfo = sourceCodeInfo,
|
|
4547
4647
|
_b.functionType = 'Fnull',
|
|
4548
|
-
_b.function =
|
|
4648
|
+
_b.function = fun,
|
|
4549
4649
|
_b.params = params,
|
|
4650
|
+
_b.paramCount = getParamCount(fun),
|
|
4550
4651
|
_b;
|
|
4551
4652
|
},
|
|
4552
4653
|
paramCount: { min: 2 },
|
|
@@ -11686,12 +11787,16 @@ var Lits = (function (exports) {
|
|
|
11686
11787
|
assertUserDefinedSymbolNode(functionSymbol, node[2]);
|
|
11687
11788
|
assertNameNotDefined(functionSymbol[1], contextStack, builtin, node[2]);
|
|
11688
11789
|
var evaluatedFunction = evaluateFunction(fn, contextStack, builtin, getUndefinedSymbols, evaluateNode);
|
|
11790
|
+
var min = evaluatedFunction[0].filter(function (arg) { return arg[0] !== bindingTargetTypes.rest && arg[1][1] === undefined; }).length;
|
|
11791
|
+
var max = evaluatedFunction[0].some(function (arg) { return arg[0] === bindingTargetTypes.rest; }) ? undefined : evaluatedFunction[0].length;
|
|
11792
|
+
var paramCount = min === max ? min : { min: min, max: max };
|
|
11689
11793
|
var litsFunction = (_b = {},
|
|
11690
11794
|
_b[FUNCTION_SYMBOL] = true,
|
|
11691
11795
|
_b.sourceCodeInfo = node[2],
|
|
11692
11796
|
_b.functionType = 'UserDefined',
|
|
11693
11797
|
_b.name = functionSymbol[1],
|
|
11694
11798
|
_b.evaluatedfunction = evaluatedFunction,
|
|
11799
|
+
_b.paramCount = paramCount,
|
|
11695
11800
|
_b);
|
|
11696
11801
|
contextStack.addValues((_c = {}, _c[functionSymbol[1]] = litsFunction, _c), functionSymbol[2]);
|
|
11697
11802
|
return litsFunction;
|
|
@@ -11713,13 +11818,17 @@ var Lits = (function (exports) {
|
|
|
11713
11818
|
var _d = __read(node[1], 3), functionSymbol = _d[1], fn = _d[2];
|
|
11714
11819
|
assertUserDefinedSymbolNode(functionSymbol, node[2]);
|
|
11715
11820
|
assertNameNotDefined(functionSymbol[1], contextStack, builtin, node[2]);
|
|
11716
|
-
var
|
|
11821
|
+
var evaluatedFunction = evaluateFunction(fn, contextStack, builtin, getUndefinedSymbols, evaluateNode);
|
|
11822
|
+
var min = evaluatedFunction[0].filter(function (arg) { return arg[0] !== bindingTargetTypes.rest && arg[1][1] === undefined; }).length;
|
|
11823
|
+
var max = evaluatedFunction[0].some(function (arg) { return arg[0] === bindingTargetTypes.rest; }) ? undefined : evaluatedFunction[0].length;
|
|
11824
|
+
var paramCount = min === max ? min : { min: min, max: max };
|
|
11717
11825
|
var litsFunction = (_b = {},
|
|
11718
11826
|
_b[FUNCTION_SYMBOL] = true,
|
|
11719
11827
|
_b.sourceCodeInfo = node[2],
|
|
11720
11828
|
_b.functionType = 'UserDefined',
|
|
11721
11829
|
_b.name = functionSymbol[1],
|
|
11722
|
-
_b.evaluatedfunction =
|
|
11830
|
+
_b.evaluatedfunction = evaluatedFunction,
|
|
11831
|
+
_b.paramCount = paramCount,
|
|
11723
11832
|
_b);
|
|
11724
11833
|
contextStack.exportValues((_c = {}, _c[functionSymbol[1]] = litsFunction, _c), functionSymbol[2]);
|
|
11725
11834
|
return litsFunction;
|
|
@@ -11741,12 +11850,16 @@ var Lits = (function (exports) {
|
|
|
11741
11850
|
var builtin = _a.builtin, getUndefinedSymbols = _a.getUndefinedSymbols, evaluateNode = _a.evaluateNode;
|
|
11742
11851
|
var fn = node[1][1];
|
|
11743
11852
|
var evaluatedFunction = evaluateFunction(fn, contextStack, builtin, getUndefinedSymbols, evaluateNode);
|
|
11853
|
+
var min = evaluatedFunction[0].filter(function (arg) { return arg[0] !== bindingTargetTypes.rest && arg[1][1] === undefined; }).length;
|
|
11854
|
+
var max = evaluatedFunction[0].some(function (arg) { return arg[0] === bindingTargetTypes.rest; }) ? undefined : evaluatedFunction[0].length;
|
|
11855
|
+
var paramCount = min === max ? min : { min: min, max: max };
|
|
11744
11856
|
var litsFunction = (_b = {},
|
|
11745
11857
|
_b[FUNCTION_SYMBOL] = true,
|
|
11746
11858
|
_b.sourceCodeInfo = node[2],
|
|
11747
11859
|
_b.functionType = 'UserDefined',
|
|
11748
11860
|
_b.name = undefined,
|
|
11749
11861
|
_b.evaluatedfunction = evaluatedFunction,
|
|
11862
|
+
_b.paramCount = paramCount,
|
|
11750
11863
|
_b);
|
|
11751
11864
|
return litsFunction;
|
|
11752
11865
|
},
|
|
@@ -12452,12 +12565,6 @@ var Lits = (function (exports) {
|
|
|
12452
12565
|
}
|
|
12453
12566
|
}
|
|
12454
12567
|
|
|
12455
|
-
function checkParams(evaluatedFunction, nbrOfParams, sourceCodeInfo) {
|
|
12456
|
-
var minArity = evaluatedFunction[0].filter(function (arg) { return arg[0] !== bindingTargetTypes.rest && arg[1][1] === undefined; }).length;
|
|
12457
|
-
if (nbrOfParams < minArity) {
|
|
12458
|
-
throw new LitsError("Unexpected number of arguments. Expected at least ".concat(minArity, ", got ").concat(nbrOfParams, "."), sourceCodeInfo);
|
|
12459
|
-
}
|
|
12460
|
-
}
|
|
12461
12568
|
var functionExecutors = {
|
|
12462
12569
|
NativeJsFunction: function (fn, params, sourceCodeInfo) {
|
|
12463
12570
|
var _a;
|
|
@@ -12477,7 +12584,10 @@ var Lits = (function (exports) {
|
|
|
12477
12584
|
var evaluateNode = _a.evaluateNode;
|
|
12478
12585
|
var _loop_1 = function () {
|
|
12479
12586
|
var e_1, _b;
|
|
12480
|
-
|
|
12587
|
+
if (!paramCountAcceptsMin(fn.paramCount, params.length)) {
|
|
12588
|
+
throw new LitsError("Expected ".concat(fn.paramCount, " arguments, got ").concat(params.length, "."), sourceCodeInfo);
|
|
12589
|
+
}
|
|
12590
|
+
// checkParams(fn.evaluatedfunction, params.length, sourceCodeInfo)
|
|
12481
12591
|
var evaluatedFunction = fn.evaluatedfunction;
|
|
12482
12592
|
var args = evaluatedFunction[0];
|
|
12483
12593
|
var nbrOfNonRestArgs = args.filter(function (arg) { return arg[0] !== bindingTargetTypes.rest; }).length;
|
|
@@ -12774,6 +12884,7 @@ var Lits = (function (exports) {
|
|
|
12774
12884
|
_a.params = params,
|
|
12775
12885
|
_a.placeholders = placeholders,
|
|
12776
12886
|
_a.sourceCodeInfo = sourceCodeInfo,
|
|
12887
|
+
_a.paramCount = paramCountMinus(getParamCount(fn), params.length),
|
|
12777
12888
|
_a);
|
|
12778
12889
|
return partialFunction;
|
|
12779
12890
|
}
|
|
@@ -12796,11 +12907,12 @@ var Lits = (function (exports) {
|
|
|
12796
12907
|
if (placeholders.length > 0) {
|
|
12797
12908
|
var partialFunction = (_b = {},
|
|
12798
12909
|
_b[FUNCTION_SYMBOL] = true,
|
|
12799
|
-
_b.function =
|
|
12910
|
+
_b.function = fn,
|
|
12800
12911
|
_b.functionType = 'Partial',
|
|
12801
12912
|
_b.params = params,
|
|
12802
12913
|
_b.placeholders = placeholders,
|
|
12803
12914
|
_b.sourceCodeInfo = sourceCodeInfo,
|
|
12915
|
+
_b.paramCount = paramCountMinus(getParamCount(fn), params.length),
|
|
12804
12916
|
_b);
|
|
12805
12917
|
return partialFunction;
|
|
12806
12918
|
}
|
|
@@ -13022,11 +13134,13 @@ var Lits = (function (exports) {
|
|
|
13022
13134
|
}
|
|
13023
13135
|
if (isNormalBuiltinSymbolNode(node)) {
|
|
13024
13136
|
var type = node[1];
|
|
13137
|
+
var normalExpression = allNormalExpressions[type];
|
|
13025
13138
|
return _b = {},
|
|
13026
13139
|
_b[FUNCTION_SYMBOL] = true,
|
|
13027
13140
|
_b.functionType = 'Builtin',
|
|
13028
13141
|
_b.normalBuitinSymbolType = type,
|
|
13029
13142
|
_b.sourceCodeInfo = node[2],
|
|
13143
|
+
_b.paramCount = normalExpression.paramCount,
|
|
13030
13144
|
_b;
|
|
13031
13145
|
}
|
|
13032
13146
|
var lookUpResult = this.lookUp(node);
|
|
@@ -13063,6 +13177,7 @@ var Lits = (function (exports) {
|
|
|
13063
13177
|
name: name
|
|
13064
13178
|
},
|
|
13065
13179
|
_b[FUNCTION_SYMBOL] = true,
|
|
13180
|
+
_b.paramCount = {},
|
|
13066
13181
|
_b);
|
|
13067
13182
|
return acc;
|
|
13068
13183
|
}, {}),
|