@mojir/lits 2.1.22 → 2.1.24
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 +104 -98
- package/dist/cli/src/Lits/Lits.d.ts +2 -0
- package/dist/cli/src/utils/index.d.ts +0 -9
- package/dist/cli/src/utils/paramCount.d.ts +7 -0
- package/dist/index.esm.js +104 -110
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +103 -110
- package/dist/index.js.map +1 -1
- package/dist/lits.iife.js +103 -110
- package/dist/lits.iife.js.map +1 -1
- package/dist/src/Lits/Lits.d.ts +2 -0
- package/dist/src/index.d.ts +1 -1
- package/dist/src/utils/index.d.ts +0 -9
- package/dist/src/utils/paramCount.d.ts +7 -0
- package/dist/testFramework.esm.js +103 -97
- package/dist/testFramework.esm.js.map +1 -1
- package/dist/testFramework.js +103 -97
- package/dist/testFramework.js.map +1 -1
- package/package.json +1 -1
package/dist/cli/cli.js
CHANGED
|
@@ -92,7 +92,7 @@ typeof SuppressedError === "function" ? SuppressedError : function (error, suppr
|
|
|
92
92
|
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
|
93
93
|
};
|
|
94
94
|
|
|
95
|
-
var version = "2.1.
|
|
95
|
+
var version = "2.1.24";
|
|
96
96
|
|
|
97
97
|
function getCodeMarker(sourceCodeInfo) {
|
|
98
98
|
if (!sourceCodeInfo.position || !sourceCodeInfo.code)
|
|
@@ -918,91 +918,6 @@ function approxEqual(a, b, epsilon) {
|
|
|
918
918
|
function approxZero(value) {
|
|
919
919
|
return Math.abs(value) < EPSILON;
|
|
920
920
|
}
|
|
921
|
-
function paramCountAccepts(paramsCount, nbrOfParams) {
|
|
922
|
-
if (typeof paramsCount === 'number') {
|
|
923
|
-
return paramsCount === nbrOfParams;
|
|
924
|
-
}
|
|
925
|
-
var min = paramsCount.min, max = paramsCount.max, even = paramsCount.even, odd = paramsCount.odd;
|
|
926
|
-
if (even && nbrOfParams % 2 !== 0) {
|
|
927
|
-
return false;
|
|
928
|
-
}
|
|
929
|
-
if (odd && nbrOfParams % 2 !== 1) {
|
|
930
|
-
return false;
|
|
931
|
-
}
|
|
932
|
-
if (typeof min === 'number' && nbrOfParams < min) {
|
|
933
|
-
return false;
|
|
934
|
-
}
|
|
935
|
-
if (typeof max === 'number' && nbrOfParams > max) {
|
|
936
|
-
return false;
|
|
937
|
-
}
|
|
938
|
-
return true;
|
|
939
|
-
}
|
|
940
|
-
function paramCountAcceptsMin(paramsCount, nbrOfParams) {
|
|
941
|
-
if (typeof paramsCount === 'number') {
|
|
942
|
-
return nbrOfParams >= paramsCount;
|
|
943
|
-
}
|
|
944
|
-
var min = paramsCount.min;
|
|
945
|
-
if (typeof min === 'number' && nbrOfParams < min) {
|
|
946
|
-
return false;
|
|
947
|
-
}
|
|
948
|
-
return true;
|
|
949
|
-
}
|
|
950
|
-
function getCommonParamCount(params) {
|
|
951
|
-
return params.reduce(function (acc, param) {
|
|
952
|
-
if (acc === null) {
|
|
953
|
-
return null;
|
|
954
|
-
}
|
|
955
|
-
var paramCount = (typeof param === 'number' || isColl(param)) ? 1 : param.paramCount;
|
|
956
|
-
if (typeof acc === 'number' && typeof paramCount === 'number') {
|
|
957
|
-
return acc === paramCount ? acc : null;
|
|
958
|
-
}
|
|
959
|
-
if (typeof paramCount === 'number') {
|
|
960
|
-
if (paramCountAccepts(acc, paramCount)) {
|
|
961
|
-
return paramCount;
|
|
962
|
-
}
|
|
963
|
-
return null;
|
|
964
|
-
}
|
|
965
|
-
if (typeof acc === 'number') {
|
|
966
|
-
if (paramCountAccepts(paramCount, acc)) {
|
|
967
|
-
return acc;
|
|
968
|
-
}
|
|
969
|
-
return null;
|
|
970
|
-
}
|
|
971
|
-
var aMin = paramCount.min, aMax = paramCount.max, aEven = paramCount.even, aOdd = paramCount.odd;
|
|
972
|
-
var bMin = acc.min, bMax = acc.max, bEven = acc.even, bOdd = acc.odd;
|
|
973
|
-
var min = typeof aMin === 'number' && typeof bMin === 'number'
|
|
974
|
-
? Math.max(aMin, bMin)
|
|
975
|
-
: typeof aMin === 'number' ? aMin : typeof bMin === 'number' ? bMin : undefined;
|
|
976
|
-
var max = typeof aMax === 'number' && typeof bMax === 'number'
|
|
977
|
-
? Math.min(aMax, bMax)
|
|
978
|
-
: typeof aMax === 'number' ? aMax : typeof bMax === 'number' ? bMax : undefined;
|
|
979
|
-
var even = aEven !== null && aEven !== void 0 ? aEven : bEven;
|
|
980
|
-
var odd = aOdd !== null && aOdd !== void 0 ? aOdd : bOdd;
|
|
981
|
-
if (min !== undefined && max !== undefined && min > max) {
|
|
982
|
-
return null;
|
|
983
|
-
}
|
|
984
|
-
if (even && odd) {
|
|
985
|
-
return null;
|
|
986
|
-
}
|
|
987
|
-
if (odd && min !== undefined && min < 1) {
|
|
988
|
-
return null;
|
|
989
|
-
}
|
|
990
|
-
return { min: min, max: max, even: even, odd: odd };
|
|
991
|
-
}, {});
|
|
992
|
-
}
|
|
993
|
-
function getParamCount(param) {
|
|
994
|
-
return (typeof param === 'number' || isColl(param)) ? 1 : param.paramCount;
|
|
995
|
-
}
|
|
996
|
-
function paramCountMinus(paramCount, count) {
|
|
997
|
-
if (typeof paramCount === 'number') {
|
|
998
|
-
return paramCount - count;
|
|
999
|
-
}
|
|
1000
|
-
var min = paramCount.min === undefined ? undefined : paramCount.min - count;
|
|
1001
|
-
var max = paramCount.max === undefined ? undefined : paramCount.max - count;
|
|
1002
|
-
var even = paramCount.even === undefined ? undefined : count % 2 === 0 ? true : undefined;
|
|
1003
|
-
var odd = paramCount.odd === undefined ? undefined : count % 2 === 0 ? true : undefined;
|
|
1004
|
-
return { min: min, max: max, even: even, odd: odd };
|
|
1005
|
-
}
|
|
1006
921
|
|
|
1007
922
|
// isArray not needed, use Array.isArary
|
|
1008
923
|
function asArray(value, sourceCodeInfo) {
|
|
@@ -4633,6 +4548,98 @@ function applyPlaceholders(templateString, placeholders, sourceCodeInfo) {
|
|
|
4633
4548
|
return templateString;
|
|
4634
4549
|
}
|
|
4635
4550
|
|
|
4551
|
+
function paramCountAccepts(paramsCount, nbrOfParams) {
|
|
4552
|
+
if (typeof paramsCount === 'number') {
|
|
4553
|
+
return paramsCount === nbrOfParams;
|
|
4554
|
+
}
|
|
4555
|
+
var min = paramsCount.min, max = paramsCount.max, even = paramsCount.even, odd = paramsCount.odd;
|
|
4556
|
+
if (even && nbrOfParams % 2 !== 0) {
|
|
4557
|
+
return false;
|
|
4558
|
+
}
|
|
4559
|
+
if (odd && nbrOfParams % 2 !== 1) {
|
|
4560
|
+
return false;
|
|
4561
|
+
}
|
|
4562
|
+
if (typeof min === 'number' && nbrOfParams < min) {
|
|
4563
|
+
return false;
|
|
4564
|
+
}
|
|
4565
|
+
if (typeof max === 'number' && nbrOfParams > max) {
|
|
4566
|
+
return false;
|
|
4567
|
+
}
|
|
4568
|
+
return true;
|
|
4569
|
+
}
|
|
4570
|
+
function paramCountAcceptsMin(paramsCount, nbrOfParams) {
|
|
4571
|
+
if (typeof paramsCount === 'number') {
|
|
4572
|
+
return nbrOfParams >= paramsCount;
|
|
4573
|
+
}
|
|
4574
|
+
var min = paramsCount.min;
|
|
4575
|
+
if (typeof min === 'number' && nbrOfParams < min) {
|
|
4576
|
+
return false;
|
|
4577
|
+
}
|
|
4578
|
+
return true;
|
|
4579
|
+
}
|
|
4580
|
+
function getCommonParamCountFromFunctions(params) {
|
|
4581
|
+
return params.reduce(function (acc, param) {
|
|
4582
|
+
if (acc === null) {
|
|
4583
|
+
return null;
|
|
4584
|
+
}
|
|
4585
|
+
var paramCount = (typeof param === 'number' || isColl(param)) ? 1 : param.paramCount;
|
|
4586
|
+
if (typeof acc === 'number' && typeof paramCount === 'number') {
|
|
4587
|
+
return acc === paramCount ? acc : null;
|
|
4588
|
+
}
|
|
4589
|
+
if (typeof paramCount === 'number') {
|
|
4590
|
+
if (paramCountAccepts(acc, paramCount)) {
|
|
4591
|
+
return paramCount;
|
|
4592
|
+
}
|
|
4593
|
+
return null;
|
|
4594
|
+
}
|
|
4595
|
+
if (typeof acc === 'number') {
|
|
4596
|
+
if (paramCountAccepts(paramCount, acc)) {
|
|
4597
|
+
return acc;
|
|
4598
|
+
}
|
|
4599
|
+
return null;
|
|
4600
|
+
}
|
|
4601
|
+
var aMin = paramCount.min, aMax = paramCount.max, aEven = paramCount.even, aOdd = paramCount.odd;
|
|
4602
|
+
var bMin = acc.min, bMax = acc.max, bEven = acc.even, bOdd = acc.odd;
|
|
4603
|
+
var min = typeof aMin === 'number' && typeof bMin === 'number'
|
|
4604
|
+
? Math.max(aMin, bMin)
|
|
4605
|
+
: typeof aMin === 'number' ? aMin : typeof bMin === 'number' ? bMin : undefined;
|
|
4606
|
+
var max = typeof aMax === 'number' && typeof bMax === 'number'
|
|
4607
|
+
? Math.min(aMax, bMax)
|
|
4608
|
+
: typeof aMax === 'number' ? aMax : typeof bMax === 'number' ? bMax : undefined;
|
|
4609
|
+
var even = aEven !== null && aEven !== void 0 ? aEven : bEven;
|
|
4610
|
+
var odd = aOdd !== null && aOdd !== void 0 ? aOdd : bOdd;
|
|
4611
|
+
if (even && odd) {
|
|
4612
|
+
return null;
|
|
4613
|
+
}
|
|
4614
|
+
if (even) {
|
|
4615
|
+
if (typeof min === 'number' && min % 2 !== 0) {
|
|
4616
|
+
min += 1;
|
|
4617
|
+
}
|
|
4618
|
+
if (typeof max === 'number' && max % 2 !== 0) {
|
|
4619
|
+
max -= 1;
|
|
4620
|
+
}
|
|
4621
|
+
}
|
|
4622
|
+
if (odd) {
|
|
4623
|
+
if (typeof min === 'number' && min % 2 === 0) {
|
|
4624
|
+
min += 1;
|
|
4625
|
+
}
|
|
4626
|
+
if (typeof max === 'number' && max % 2 === 0) {
|
|
4627
|
+
max -= 1;
|
|
4628
|
+
}
|
|
4629
|
+
}
|
|
4630
|
+
if (typeof min === 'number' && typeof max === 'number' && min > max) {
|
|
4631
|
+
return null;
|
|
4632
|
+
}
|
|
4633
|
+
if (typeof min === 'number' && min === max) {
|
|
4634
|
+
return min;
|
|
4635
|
+
}
|
|
4636
|
+
return { min: min, max: max, even: even, odd: odd };
|
|
4637
|
+
}, {});
|
|
4638
|
+
}
|
|
4639
|
+
function getParamCountFromFunction(param) {
|
|
4640
|
+
return (typeof param === 'number' || isColl(param)) ? 1 : param.paramCount;
|
|
4641
|
+
}
|
|
4642
|
+
|
|
4636
4643
|
var functionalNormalExpression = {
|
|
4637
4644
|
'|>': {
|
|
4638
4645
|
evaluate: function (_a, sourceCodeInfo, contextStack, _b) {
|
|
@@ -4672,7 +4679,7 @@ var functionalNormalExpression = {
|
|
|
4672
4679
|
_a.sourceCodeInfo = sourceCodeInfo,
|
|
4673
4680
|
_a.functionType = 'Comp',
|
|
4674
4681
|
_a.params = params,
|
|
4675
|
-
_a.paramCount = params.length > 0 ?
|
|
4682
|
+
_a.paramCount = params.length > 0 ? getParamCountFromFunction(params.at(-1)) : 1,
|
|
4676
4683
|
_a;
|
|
4677
4684
|
},
|
|
4678
4685
|
paramCount: {},
|
|
@@ -4695,7 +4702,7 @@ var functionalNormalExpression = {
|
|
|
4695
4702
|
evaluate: function (params, sourceCodeInfo) {
|
|
4696
4703
|
var _a;
|
|
4697
4704
|
params.forEach(function (param) { return assertFunctionLike(param, sourceCodeInfo); });
|
|
4698
|
-
var paramCount =
|
|
4705
|
+
var paramCount = getCommonParamCountFromFunctions(params);
|
|
4699
4706
|
if (paramCount === null) {
|
|
4700
4707
|
throw new LitsError('All functions must accept the same number of arguments', sourceCodeInfo);
|
|
4701
4708
|
}
|
|
@@ -4719,7 +4726,7 @@ var functionalNormalExpression = {
|
|
|
4719
4726
|
_b.sourceCodeInfo = sourceCodeInfo,
|
|
4720
4727
|
_b.functionType = 'Complement',
|
|
4721
4728
|
_b.function = fun,
|
|
4722
|
-
_b.paramCount =
|
|
4729
|
+
_b.paramCount = getParamCountFromFunction(fun),
|
|
4723
4730
|
_b;
|
|
4724
4731
|
},
|
|
4725
4732
|
paramCount: 1,
|
|
@@ -4761,7 +4768,7 @@ var functionalNormalExpression = {
|
|
|
4761
4768
|
_b.functionType = 'Fnull',
|
|
4762
4769
|
_b.function = fun,
|
|
4763
4770
|
_b.params = params,
|
|
4764
|
-
_b.paramCount =
|
|
4771
|
+
_b.paramCount = getParamCountFromFunction(fun),
|
|
4765
4772
|
_b;
|
|
4766
4773
|
},
|
|
4767
4774
|
paramCount: { min: 2 },
|
|
@@ -11869,8 +11876,7 @@ var defnSpecialExpression = {
|
|
|
11869
11876
|
assertNameNotDefined(functionSymbol[1], contextStack, builtin, node[2]);
|
|
11870
11877
|
var evaluatedFunction = evaluateFunction(fn, contextStack, builtin, getUndefinedSymbols, evaluateNode);
|
|
11871
11878
|
var min = evaluatedFunction[0].filter(function (arg) { return arg[0] !== bindingTargetTypes.rest && arg[1][1] === undefined; }).length;
|
|
11872
|
-
var
|
|
11873
|
-
var paramCount = min === max ? min : { min: min, max: max };
|
|
11879
|
+
var paramCount = { min: min };
|
|
11874
11880
|
var litsFunction = (_b = {},
|
|
11875
11881
|
_b[FUNCTION_SYMBOL] = true,
|
|
11876
11882
|
_b.sourceCodeInfo = node[2],
|
|
@@ -12843,7 +12849,7 @@ function evaluateNormalExpression(node, contextStack) {
|
|
|
12843
12849
|
_a.params = params,
|
|
12844
12850
|
_a.placeholders = placeholders,
|
|
12845
12851
|
_a.sourceCodeInfo = sourceCodeInfo,
|
|
12846
|
-
_a.paramCount =
|
|
12852
|
+
_a.paramCount = placeholders.length,
|
|
12847
12853
|
_a);
|
|
12848
12854
|
return partialFunction;
|
|
12849
12855
|
}
|
|
@@ -12871,7 +12877,7 @@ function evaluateNormalExpression(node, contextStack) {
|
|
|
12871
12877
|
_b.params = params,
|
|
12872
12878
|
_b.placeholders = placeholders,
|
|
12873
12879
|
_b.sourceCodeInfo = sourceCodeInfo,
|
|
12874
|
-
_b.paramCount =
|
|
12880
|
+
_b.paramCount = placeholders.length,
|
|
12875
12881
|
_b);
|
|
12876
12882
|
return partialFunction;
|
|
12877
12883
|
}
|
|
@@ -13121,7 +13127,8 @@ function createContextStack(params) {
|
|
|
13121
13127
|
nativeJsFunctions: params.jsFunctions
|
|
13122
13128
|
&& Object.entries(params.jsFunctions).reduce(function (acc, _a) {
|
|
13123
13129
|
var _b;
|
|
13124
|
-
var _c
|
|
13130
|
+
var _c;
|
|
13131
|
+
var _d = __read(_a, 2), name = _d[0], jsFunction = _d[1];
|
|
13125
13132
|
if (specialExpressionKeys.includes(name)) {
|
|
13126
13133
|
console.warn("Cannot shadow special expression \"".concat(name, "\", ignoring."));
|
|
13127
13134
|
return acc;
|
|
@@ -13136,7 +13143,7 @@ function createContextStack(params) {
|
|
|
13136
13143
|
name: name
|
|
13137
13144
|
},
|
|
13138
13145
|
_b[FUNCTION_SYMBOL] = true,
|
|
13139
|
-
_b.paramCount = {},
|
|
13146
|
+
_b.paramCount = (_c = jsFunction.paramCount) !== null && _c !== void 0 ? _c : {},
|
|
13140
13147
|
_b);
|
|
13141
13148
|
return acc;
|
|
13142
13149
|
}, {}),
|
|
@@ -13834,8 +13841,7 @@ function createNamedNormalExpressionNode(symbolNode, params, sourceCodeInfo) {
|
|
|
13834
13841
|
return node;
|
|
13835
13842
|
}
|
|
13836
13843
|
function createAccessorNode(left, right, sourceCodeInfo) {
|
|
13837
|
-
|
|
13838
|
-
return withSourceCodeInfo([NodeTypes.NormalExpression, [left, [right]]], sourceCodeInfo);
|
|
13844
|
+
return withSourceCodeInfo([NodeTypes.NormalExpression, [[NodeTypes.NormalBuiltinSymbol, normalExpressionTypes.get], [left, right]]], sourceCodeInfo);
|
|
13839
13845
|
}
|
|
13840
13846
|
function fromBinaryOperatorToNode(operator, symbolNode, left, right, sourceCodeInfo) {
|
|
13841
13847
|
var operatorName = operator[1];
|
|
@@ -3,6 +3,7 @@ import type { Any } from '../interface';
|
|
|
3
3
|
import type { Ast, LitsFunction } from '../parser/types';
|
|
4
4
|
import type { TokenStream } from '../tokenizer/tokenize';
|
|
5
5
|
import { AutoCompleter } from '../AutoCompleter/AutoCompleter';
|
|
6
|
+
import type { ParamCount } from '../builtin/interface';
|
|
6
7
|
import { Cache } from './Cache';
|
|
7
8
|
export interface LitsRuntimeInfo {
|
|
8
9
|
astCache: Cache | null;
|
|
@@ -11,6 +12,7 @@ export interface LitsRuntimeInfo {
|
|
|
11
12
|
}
|
|
12
13
|
export interface JsFunction {
|
|
13
14
|
fn: (...args: any[]) => unknown;
|
|
15
|
+
paramCount?: ParamCount;
|
|
14
16
|
}
|
|
15
17
|
export interface ContextParams {
|
|
16
18
|
globalContext?: Context;
|
|
@@ -1,22 +1,13 @@
|
|
|
1
1
|
import type { Any, Coll } from '../interface';
|
|
2
|
-
import type { FunctionLike, NativeJsFunction, NormalExpressionNodeWithName } from '../parser/types';
|
|
3
2
|
import type { SourceCodeInfo } from '../tokenizer/token';
|
|
4
|
-
import type { ParamCount } from '../builtin/interface';
|
|
5
3
|
export declare function collHasKey(coll: unknown, key: string | number): boolean;
|
|
6
4
|
export declare function compare<T extends string | number>(a: T, b: T, sourceCodeInfo: SourceCodeInfo | undefined): number;
|
|
7
5
|
export declare function deepEqual(a: unknown, b: unknown, sourceCodeInfo?: SourceCodeInfo): boolean;
|
|
8
6
|
export declare function toNonNegativeInteger(num: number): number;
|
|
9
7
|
export declare function toAny(value: unknown): Any;
|
|
10
8
|
export declare function cloneColl<T extends Coll>(value: T): T;
|
|
11
|
-
export declare function createNativeJsFunction(fn: (...args: any[]) => unknown, name?: string): NativeJsFunction;
|
|
12
9
|
export declare function joinSets<T>(...results: Set<T>[]): Set<T>;
|
|
13
10
|
export declare function addToSet<T>(target: Set<T>, source: Set<T>): void;
|
|
14
11
|
export declare const EPSILON = 1e-10;
|
|
15
12
|
export declare function approxEqual(a: number, b: number, epsilon?: number): boolean;
|
|
16
13
|
export declare function approxZero(value: number): boolean;
|
|
17
|
-
export declare function mergeParamCounts(count: ParamCount, node: NormalExpressionNodeWithName): void;
|
|
18
|
-
export declare function assertNumberOfParams(count: ParamCount, node: NormalExpressionNodeWithName): void;
|
|
19
|
-
export declare function paramCountAcceptsMin(paramsCount: ParamCount, nbrOfParams: number): boolean;
|
|
20
|
-
export declare function getCommonParamCount(params: FunctionLike[]): ParamCount | null;
|
|
21
|
-
export declare function getParamCount(param: FunctionLike): ParamCount;
|
|
22
|
-
export declare function paramCountMinus(paramCount: ParamCount, count: number): ParamCount;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ParamCount } from '../builtin/interface';
|
|
2
|
+
import type { FunctionLike, NormalExpressionNodeWithName } from '../parser/types';
|
|
3
|
+
export declare function paramCountAccepts(paramsCount: ParamCount, nbrOfParams: number): boolean;
|
|
4
|
+
export declare function paramCountAcceptsMin(paramsCount: ParamCount, nbrOfParams: number): boolean;
|
|
5
|
+
export declare function getCommonParamCountFromFunctions(params: FunctionLike[]): ParamCount | null;
|
|
6
|
+
export declare function getParamCountFromFunction(param: FunctionLike): ParamCount;
|
|
7
|
+
export declare function assertNumberOfParams(count: ParamCount, node: NormalExpressionNodeWithName): void;
|
package/dist/index.esm.js
CHANGED
|
@@ -745,18 +745,6 @@ function clone(value) {
|
|
|
745
745
|
function cloneColl(value) {
|
|
746
746
|
return clone(value);
|
|
747
747
|
}
|
|
748
|
-
function createNativeJsFunction(fn, name) {
|
|
749
|
-
var _a;
|
|
750
|
-
return _a = {},
|
|
751
|
-
_a[FUNCTION_SYMBOL] = true,
|
|
752
|
-
_a.nativeFn = {
|
|
753
|
-
fn: fn,
|
|
754
|
-
},
|
|
755
|
-
_a.name = name,
|
|
756
|
-
_a.functionType = 'NativeJsFunction',
|
|
757
|
-
_a.paramCount = {},
|
|
758
|
-
_a;
|
|
759
|
-
}
|
|
760
748
|
function joinSets() {
|
|
761
749
|
var e_1, _a;
|
|
762
750
|
var results = [];
|
|
@@ -801,91 +789,6 @@ function approxEqual(a, b, epsilon) {
|
|
|
801
789
|
function approxZero(value) {
|
|
802
790
|
return Math.abs(value) < EPSILON;
|
|
803
791
|
}
|
|
804
|
-
function paramCountAccepts(paramsCount, nbrOfParams) {
|
|
805
|
-
if (typeof paramsCount === 'number') {
|
|
806
|
-
return paramsCount === nbrOfParams;
|
|
807
|
-
}
|
|
808
|
-
var min = paramsCount.min, max = paramsCount.max, even = paramsCount.even, odd = paramsCount.odd;
|
|
809
|
-
if (even && nbrOfParams % 2 !== 0) {
|
|
810
|
-
return false;
|
|
811
|
-
}
|
|
812
|
-
if (odd && nbrOfParams % 2 !== 1) {
|
|
813
|
-
return false;
|
|
814
|
-
}
|
|
815
|
-
if (typeof min === 'number' && nbrOfParams < min) {
|
|
816
|
-
return false;
|
|
817
|
-
}
|
|
818
|
-
if (typeof max === 'number' && nbrOfParams > max) {
|
|
819
|
-
return false;
|
|
820
|
-
}
|
|
821
|
-
return true;
|
|
822
|
-
}
|
|
823
|
-
function paramCountAcceptsMin(paramsCount, nbrOfParams) {
|
|
824
|
-
if (typeof paramsCount === 'number') {
|
|
825
|
-
return nbrOfParams >= paramsCount;
|
|
826
|
-
}
|
|
827
|
-
var min = paramsCount.min;
|
|
828
|
-
if (typeof min === 'number' && nbrOfParams < min) {
|
|
829
|
-
return false;
|
|
830
|
-
}
|
|
831
|
-
return true;
|
|
832
|
-
}
|
|
833
|
-
function getCommonParamCount(params) {
|
|
834
|
-
return params.reduce(function (acc, param) {
|
|
835
|
-
if (acc === null) {
|
|
836
|
-
return null;
|
|
837
|
-
}
|
|
838
|
-
var paramCount = (typeof param === 'number' || isColl(param)) ? 1 : param.paramCount;
|
|
839
|
-
if (typeof acc === 'number' && typeof paramCount === 'number') {
|
|
840
|
-
return acc === paramCount ? acc : null;
|
|
841
|
-
}
|
|
842
|
-
if (typeof paramCount === 'number') {
|
|
843
|
-
if (paramCountAccepts(acc, paramCount)) {
|
|
844
|
-
return paramCount;
|
|
845
|
-
}
|
|
846
|
-
return null;
|
|
847
|
-
}
|
|
848
|
-
if (typeof acc === 'number') {
|
|
849
|
-
if (paramCountAccepts(paramCount, acc)) {
|
|
850
|
-
return acc;
|
|
851
|
-
}
|
|
852
|
-
return null;
|
|
853
|
-
}
|
|
854
|
-
var aMin = paramCount.min, aMax = paramCount.max, aEven = paramCount.even, aOdd = paramCount.odd;
|
|
855
|
-
var bMin = acc.min, bMax = acc.max, bEven = acc.even, bOdd = acc.odd;
|
|
856
|
-
var min = typeof aMin === 'number' && typeof bMin === 'number'
|
|
857
|
-
? Math.max(aMin, bMin)
|
|
858
|
-
: typeof aMin === 'number' ? aMin : typeof bMin === 'number' ? bMin : undefined;
|
|
859
|
-
var max = typeof aMax === 'number' && typeof bMax === 'number'
|
|
860
|
-
? Math.min(aMax, bMax)
|
|
861
|
-
: typeof aMax === 'number' ? aMax : typeof bMax === 'number' ? bMax : undefined;
|
|
862
|
-
var even = aEven !== null && aEven !== void 0 ? aEven : bEven;
|
|
863
|
-
var odd = aOdd !== null && aOdd !== void 0 ? aOdd : bOdd;
|
|
864
|
-
if (min !== undefined && max !== undefined && min > max) {
|
|
865
|
-
return null;
|
|
866
|
-
}
|
|
867
|
-
if (even && odd) {
|
|
868
|
-
return null;
|
|
869
|
-
}
|
|
870
|
-
if (odd && min !== undefined && min < 1) {
|
|
871
|
-
return null;
|
|
872
|
-
}
|
|
873
|
-
return { min: min, max: max, even: even, odd: odd };
|
|
874
|
-
}, {});
|
|
875
|
-
}
|
|
876
|
-
function getParamCount(param) {
|
|
877
|
-
return (typeof param === 'number' || isColl(param)) ? 1 : param.paramCount;
|
|
878
|
-
}
|
|
879
|
-
function paramCountMinus(paramCount, count) {
|
|
880
|
-
if (typeof paramCount === 'number') {
|
|
881
|
-
return paramCount - count;
|
|
882
|
-
}
|
|
883
|
-
var min = paramCount.min === undefined ? undefined : paramCount.min - count;
|
|
884
|
-
var max = paramCount.max === undefined ? undefined : paramCount.max - count;
|
|
885
|
-
var even = paramCount.even === undefined ? undefined : count % 2 === 0 ? true : undefined;
|
|
886
|
-
var odd = paramCount.odd === undefined ? undefined : count % 2 === 0 ? true : undefined;
|
|
887
|
-
return { min: min, max: max, even: even, odd: odd };
|
|
888
|
-
}
|
|
889
792
|
|
|
890
793
|
// isArray not needed, use Array.isArary
|
|
891
794
|
function asArray(value, sourceCodeInfo) {
|
|
@@ -4516,6 +4419,98 @@ function applyPlaceholders(templateString, placeholders, sourceCodeInfo) {
|
|
|
4516
4419
|
return templateString;
|
|
4517
4420
|
}
|
|
4518
4421
|
|
|
4422
|
+
function paramCountAccepts(paramsCount, nbrOfParams) {
|
|
4423
|
+
if (typeof paramsCount === 'number') {
|
|
4424
|
+
return paramsCount === nbrOfParams;
|
|
4425
|
+
}
|
|
4426
|
+
var min = paramsCount.min, max = paramsCount.max, even = paramsCount.even, odd = paramsCount.odd;
|
|
4427
|
+
if (even && nbrOfParams % 2 !== 0) {
|
|
4428
|
+
return false;
|
|
4429
|
+
}
|
|
4430
|
+
if (odd && nbrOfParams % 2 !== 1) {
|
|
4431
|
+
return false;
|
|
4432
|
+
}
|
|
4433
|
+
if (typeof min === 'number' && nbrOfParams < min) {
|
|
4434
|
+
return false;
|
|
4435
|
+
}
|
|
4436
|
+
if (typeof max === 'number' && nbrOfParams > max) {
|
|
4437
|
+
return false;
|
|
4438
|
+
}
|
|
4439
|
+
return true;
|
|
4440
|
+
}
|
|
4441
|
+
function paramCountAcceptsMin(paramsCount, nbrOfParams) {
|
|
4442
|
+
if (typeof paramsCount === 'number') {
|
|
4443
|
+
return nbrOfParams >= paramsCount;
|
|
4444
|
+
}
|
|
4445
|
+
var min = paramsCount.min;
|
|
4446
|
+
if (typeof min === 'number' && nbrOfParams < min) {
|
|
4447
|
+
return false;
|
|
4448
|
+
}
|
|
4449
|
+
return true;
|
|
4450
|
+
}
|
|
4451
|
+
function getCommonParamCountFromFunctions(params) {
|
|
4452
|
+
return params.reduce(function (acc, param) {
|
|
4453
|
+
if (acc === null) {
|
|
4454
|
+
return null;
|
|
4455
|
+
}
|
|
4456
|
+
var paramCount = (typeof param === 'number' || isColl(param)) ? 1 : param.paramCount;
|
|
4457
|
+
if (typeof acc === 'number' && typeof paramCount === 'number') {
|
|
4458
|
+
return acc === paramCount ? acc : null;
|
|
4459
|
+
}
|
|
4460
|
+
if (typeof paramCount === 'number') {
|
|
4461
|
+
if (paramCountAccepts(acc, paramCount)) {
|
|
4462
|
+
return paramCount;
|
|
4463
|
+
}
|
|
4464
|
+
return null;
|
|
4465
|
+
}
|
|
4466
|
+
if (typeof acc === 'number') {
|
|
4467
|
+
if (paramCountAccepts(paramCount, acc)) {
|
|
4468
|
+
return acc;
|
|
4469
|
+
}
|
|
4470
|
+
return null;
|
|
4471
|
+
}
|
|
4472
|
+
var aMin = paramCount.min, aMax = paramCount.max, aEven = paramCount.even, aOdd = paramCount.odd;
|
|
4473
|
+
var bMin = acc.min, bMax = acc.max, bEven = acc.even, bOdd = acc.odd;
|
|
4474
|
+
var min = typeof aMin === 'number' && typeof bMin === 'number'
|
|
4475
|
+
? Math.max(aMin, bMin)
|
|
4476
|
+
: typeof aMin === 'number' ? aMin : typeof bMin === 'number' ? bMin : undefined;
|
|
4477
|
+
var max = typeof aMax === 'number' && typeof bMax === 'number'
|
|
4478
|
+
? Math.min(aMax, bMax)
|
|
4479
|
+
: typeof aMax === 'number' ? aMax : typeof bMax === 'number' ? bMax : undefined;
|
|
4480
|
+
var even = aEven !== null && aEven !== void 0 ? aEven : bEven;
|
|
4481
|
+
var odd = aOdd !== null && aOdd !== void 0 ? aOdd : bOdd;
|
|
4482
|
+
if (even && odd) {
|
|
4483
|
+
return null;
|
|
4484
|
+
}
|
|
4485
|
+
if (even) {
|
|
4486
|
+
if (typeof min === 'number' && min % 2 !== 0) {
|
|
4487
|
+
min += 1;
|
|
4488
|
+
}
|
|
4489
|
+
if (typeof max === 'number' && max % 2 !== 0) {
|
|
4490
|
+
max -= 1;
|
|
4491
|
+
}
|
|
4492
|
+
}
|
|
4493
|
+
if (odd) {
|
|
4494
|
+
if (typeof min === 'number' && min % 2 === 0) {
|
|
4495
|
+
min += 1;
|
|
4496
|
+
}
|
|
4497
|
+
if (typeof max === 'number' && max % 2 === 0) {
|
|
4498
|
+
max -= 1;
|
|
4499
|
+
}
|
|
4500
|
+
}
|
|
4501
|
+
if (typeof min === 'number' && typeof max === 'number' && min > max) {
|
|
4502
|
+
return null;
|
|
4503
|
+
}
|
|
4504
|
+
if (typeof min === 'number' && min === max) {
|
|
4505
|
+
return min;
|
|
4506
|
+
}
|
|
4507
|
+
return { min: min, max: max, even: even, odd: odd };
|
|
4508
|
+
}, {});
|
|
4509
|
+
}
|
|
4510
|
+
function getParamCountFromFunction(param) {
|
|
4511
|
+
return (typeof param === 'number' || isColl(param)) ? 1 : param.paramCount;
|
|
4512
|
+
}
|
|
4513
|
+
|
|
4519
4514
|
var functionalNormalExpression = {
|
|
4520
4515
|
'|>': {
|
|
4521
4516
|
evaluate: function (_a, sourceCodeInfo, contextStack, _b) {
|
|
@@ -4555,7 +4550,7 @@ var functionalNormalExpression = {
|
|
|
4555
4550
|
_a.sourceCodeInfo = sourceCodeInfo,
|
|
4556
4551
|
_a.functionType = 'Comp',
|
|
4557
4552
|
_a.params = params,
|
|
4558
|
-
_a.paramCount = params.length > 0 ?
|
|
4553
|
+
_a.paramCount = params.length > 0 ? getParamCountFromFunction(params.at(-1)) : 1,
|
|
4559
4554
|
_a;
|
|
4560
4555
|
},
|
|
4561
4556
|
paramCount: {},
|
|
@@ -4578,7 +4573,7 @@ var functionalNormalExpression = {
|
|
|
4578
4573
|
evaluate: function (params, sourceCodeInfo) {
|
|
4579
4574
|
var _a;
|
|
4580
4575
|
params.forEach(function (param) { return assertFunctionLike(param, sourceCodeInfo); });
|
|
4581
|
-
var paramCount =
|
|
4576
|
+
var paramCount = getCommonParamCountFromFunctions(params);
|
|
4582
4577
|
if (paramCount === null) {
|
|
4583
4578
|
throw new LitsError('All functions must accept the same number of arguments', sourceCodeInfo);
|
|
4584
4579
|
}
|
|
@@ -4602,7 +4597,7 @@ var functionalNormalExpression = {
|
|
|
4602
4597
|
_b.sourceCodeInfo = sourceCodeInfo,
|
|
4603
4598
|
_b.functionType = 'Complement',
|
|
4604
4599
|
_b.function = fun,
|
|
4605
|
-
_b.paramCount =
|
|
4600
|
+
_b.paramCount = getParamCountFromFunction(fun),
|
|
4606
4601
|
_b;
|
|
4607
4602
|
},
|
|
4608
4603
|
paramCount: 1,
|
|
@@ -4644,7 +4639,7 @@ var functionalNormalExpression = {
|
|
|
4644
4639
|
_b.functionType = 'Fnull',
|
|
4645
4640
|
_b.function = fun,
|
|
4646
4641
|
_b.params = params,
|
|
4647
|
-
_b.paramCount =
|
|
4642
|
+
_b.paramCount = getParamCountFromFunction(fun),
|
|
4648
4643
|
_b;
|
|
4649
4644
|
},
|
|
4650
4645
|
paramCount: { min: 2 },
|
|
@@ -11817,8 +11812,7 @@ var defnSpecialExpression = {
|
|
|
11817
11812
|
assertNameNotDefined(functionSymbol[1], contextStack, builtin, node[2]);
|
|
11818
11813
|
var evaluatedFunction = evaluateFunction(fn, contextStack, builtin, getUndefinedSymbols, evaluateNode);
|
|
11819
11814
|
var min = evaluatedFunction[0].filter(function (arg) { return arg[0] !== bindingTargetTypes.rest && arg[1][1] === undefined; }).length;
|
|
11820
|
-
var
|
|
11821
|
-
var paramCount = min === max ? min : { min: min, max: max };
|
|
11815
|
+
var paramCount = { min: min };
|
|
11822
11816
|
var litsFunction = (_b = {},
|
|
11823
11817
|
_b[FUNCTION_SYMBOL] = true,
|
|
11824
11818
|
_b.sourceCodeInfo = node[2],
|
|
@@ -12881,7 +12875,7 @@ function evaluateNormalExpression(node, contextStack) {
|
|
|
12881
12875
|
_a.params = params,
|
|
12882
12876
|
_a.placeholders = placeholders,
|
|
12883
12877
|
_a.sourceCodeInfo = sourceCodeInfo,
|
|
12884
|
-
_a.paramCount =
|
|
12878
|
+
_a.paramCount = placeholders.length,
|
|
12885
12879
|
_a);
|
|
12886
12880
|
return partialFunction;
|
|
12887
12881
|
}
|
|
@@ -12909,7 +12903,7 @@ function evaluateNormalExpression(node, contextStack) {
|
|
|
12909
12903
|
_b.params = params,
|
|
12910
12904
|
_b.placeholders = placeholders,
|
|
12911
12905
|
_b.sourceCodeInfo = sourceCodeInfo,
|
|
12912
|
-
_b.paramCount =
|
|
12906
|
+
_b.paramCount = placeholders.length,
|
|
12913
12907
|
_b);
|
|
12914
12908
|
return partialFunction;
|
|
12915
12909
|
}
|
|
@@ -13159,7 +13153,8 @@ function createContextStack(params) {
|
|
|
13159
13153
|
nativeJsFunctions: params.jsFunctions
|
|
13160
13154
|
&& Object.entries(params.jsFunctions).reduce(function (acc, _a) {
|
|
13161
13155
|
var _b;
|
|
13162
|
-
var _c
|
|
13156
|
+
var _c;
|
|
13157
|
+
var _d = __read(_a, 2), name = _d[0], jsFunction = _d[1];
|
|
13163
13158
|
if (specialExpressionKeys.includes(name)) {
|
|
13164
13159
|
console.warn("Cannot shadow special expression \"".concat(name, "\", ignoring."));
|
|
13165
13160
|
return acc;
|
|
@@ -13174,7 +13169,7 @@ function createContextStack(params) {
|
|
|
13174
13169
|
name: name
|
|
13175
13170
|
},
|
|
13176
13171
|
_b[FUNCTION_SYMBOL] = true,
|
|
13177
|
-
_b.paramCount = {},
|
|
13172
|
+
_b.paramCount = (_c = jsFunction.paramCount) !== null && _c !== void 0 ? _c : {},
|
|
13178
13173
|
_b);
|
|
13179
13174
|
return acc;
|
|
13180
13175
|
}, {}),
|
|
@@ -13872,8 +13867,7 @@ function createNamedNormalExpressionNode(symbolNode, params, sourceCodeInfo) {
|
|
|
13872
13867
|
return node;
|
|
13873
13868
|
}
|
|
13874
13869
|
function createAccessorNode(left, right, sourceCodeInfo) {
|
|
13875
|
-
|
|
13876
|
-
return withSourceCodeInfo([NodeTypes.NormalExpression, [left, [right]]], sourceCodeInfo);
|
|
13870
|
+
return withSourceCodeInfo([NodeTypes.NormalExpression, [[NodeTypes.NormalBuiltinSymbol, normalExpressionTypes.get], [left, right]]], sourceCodeInfo);
|
|
13877
13871
|
}
|
|
13878
13872
|
function fromBinaryOperatorToNode(operator, symbolNode, left, right, sourceCodeInfo) {
|
|
13879
13873
|
var operatorName = operator[1];
|
|
@@ -31199,5 +31193,5 @@ Object.values(apiReference).forEach(function (ref) {
|
|
|
31199
31193
|
ref.title = ref.title.replace(/"/g, '"');
|
|
31200
31194
|
});
|
|
31201
31195
|
|
|
31202
|
-
export { Lits, apiReference, asLitsFunction, asNativeJsFunction, asUserDefinedFunction, assertLitsFunction, assertNativeJsFunction, assertUserDefinedFunction,
|
|
31196
|
+
export { Lits, apiReference, asLitsFunction, asNativeJsFunction, asUserDefinedFunction, assertLitsFunction, assertNativeJsFunction, assertUserDefinedFunction, isApiName, isBuiltinFunction, isDataType, isDatatypeReference, isFunctionReference, isGrid, isLitsError, isLitsFunction, isMatrix, isNativeJsFunction, isShorthandReference, isUserDefinedFunction, isVector, normalExpressionKeys, specialExpressionKeys };
|
|
31203
31197
|
//# sourceMappingURL=index.esm.js.map
|