@actions/expressions 0.2.0
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/LICENSE +21 -0
- package/README.md +95 -0
- package/dist/ast.d.ts +66 -0
- package/dist/ast.d.ts.map +1 -0
- package/dist/ast.js +87 -0
- package/dist/ast.js.map +1 -0
- package/dist/completion/descriptionDictionary.d.ts +15 -0
- package/dist/completion/descriptionDictionary.d.ts.map +1 -0
- package/dist/completion/descriptionDictionary.js +33 -0
- package/dist/completion/descriptionDictionary.js.map +1 -0
- package/dist/completion.d.ts +26 -0
- package/dist/completion.d.ts.map +1 -0
- package/dist/completion.js +124 -0
- package/dist/completion.js.map +1 -0
- package/dist/data/array.d.ts +13 -0
- package/dist/data/array.d.ts.map +1 -0
- package/dist/data/array.js +27 -0
- package/dist/data/array.js.map +1 -0
- package/dist/data/boolean.d.ts +10 -0
- package/dist/data/boolean.d.ts.map +1 -0
- package/dist/data/boolean.js +21 -0
- package/dist/data/boolean.js.map +1 -0
- package/dist/data/dictionary.d.ts +17 -0
- package/dist/data/dictionary.d.ts.map +1 -0
- package/dist/data/dictionary.js +48 -0
- package/dist/data/dictionary.js.map +1 -0
- package/dist/data/expressiondata.d.ts +28 -0
- package/dist/data/expressiondata.d.ts.map +1 -0
- package/dist/data/expressiondata.js +28 -0
- package/dist/data/expressiondata.js.map +1 -0
- package/dist/data/index.d.ts +10 -0
- package/dist/data/index.d.ts.map +1 -0
- package/dist/data/index.js +10 -0
- package/dist/data/index.js.map +1 -0
- package/dist/data/null.d.ts +8 -0
- package/dist/data/null.d.ts.map +1 -0
- package/dist/data/null.js +14 -0
- package/dist/data/null.js.map +1 -0
- package/dist/data/number.d.ts +10 -0
- package/dist/data/number.d.ts.map +1 -0
- package/dist/data/number.js +20 -0
- package/dist/data/number.js.map +1 -0
- package/dist/data/replacer.d.ts +7 -0
- package/dist/data/replacer.d.ts.map +1 -0
- package/dist/data/replacer.js +38 -0
- package/dist/data/replacer.js.map +1 -0
- package/dist/data/reviver.d.ts +8 -0
- package/dist/data/reviver.d.ts.map +1 -0
- package/dist/data/reviver.js +37 -0
- package/dist/data/reviver.js.map +1 -0
- package/dist/data/string.d.ts +10 -0
- package/dist/data/string.d.ts.map +1 -0
- package/dist/data/string.js +15 -0
- package/dist/data/string.js.map +1 -0
- package/dist/errors.d.ts +23 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +50 -0
- package/dist/errors.js.map +1 -0
- package/dist/evaluator.d.ts +26 -0
- package/dist/evaluator.d.ts.map +1 -0
- package/dist/evaluator.js +191 -0
- package/dist/evaluator.js.map +1 -0
- package/dist/filtered_array.d.ts +4 -0
- package/dist/filtered_array.d.ts.map +1 -0
- package/dist/filtered_array.js +4 -0
- package/dist/filtered_array.js.map +1 -0
- package/dist/funcs/contains.d.ts +3 -0
- package/dist/funcs/contains.d.ts.map +1 -0
- package/dist/funcs/contains.js +32 -0
- package/dist/funcs/contains.js.map +1 -0
- package/dist/funcs/endswith.d.ts +3 -0
- package/dist/funcs/endswith.d.ts.map +1 -0
- package/dist/funcs/endswith.js +22 -0
- package/dist/funcs/endswith.js.map +1 -0
- package/dist/funcs/format.d.ts +3 -0
- package/dist/funcs/format.d.ts.map +1 -0
- package/dist/funcs/format.js +95 -0
- package/dist/funcs/format.js.map +1 -0
- package/dist/funcs/fromjson.d.ts +3 -0
- package/dist/funcs/fromjson.d.ts.map +1 -0
- package/dist/funcs/fromjson.js +22 -0
- package/dist/funcs/fromjson.js.map +1 -0
- package/dist/funcs/info.d.ts +11 -0
- package/dist/funcs/info.d.ts.map +1 -0
- package/dist/funcs/info.js +2 -0
- package/dist/funcs/info.js.map +1 -0
- package/dist/funcs/join.d.ts +3 -0
- package/dist/funcs/join.d.ts.map +1 -0
- package/dist/funcs/join.js +28 -0
- package/dist/funcs/join.js.map +1 -0
- package/dist/funcs/startswith.d.ts +3 -0
- package/dist/funcs/startswith.d.ts.map +1 -0
- package/dist/funcs/startswith.js +22 -0
- package/dist/funcs/startswith.js.map +1 -0
- package/dist/funcs/tojson.d.ts +3 -0
- package/dist/funcs/tojson.d.ts.map +1 -0
- package/dist/funcs/tojson.js +12 -0
- package/dist/funcs/tojson.js.map +1 -0
- package/dist/funcs.d.ts +12 -0
- package/dist/funcs.d.ts.map +1 -0
- package/dist/funcs.js +43 -0
- package/dist/funcs.js.map +1 -0
- package/dist/idxHelper.d.ts +8 -0
- package/dist/idxHelper.d.ts.map +1 -0
- package/dist/idxHelper.js +19 -0
- package/dist/idxHelper.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -0
- package/dist/lexer.d.ts +68 -0
- package/dist/lexer.d.ts.map +1 -0
- package/dist/lexer.js +324 -0
- package/dist/lexer.js.map +1 -0
- package/dist/parser.d.ts +40 -0
- package/dist/parser.d.ts.map +1 -0
- package/dist/parser.js +284 -0
- package/dist/parser.js.map +1 -0
- package/dist/result.d.ts +9 -0
- package/dist/result.d.ts.map +1 -0
- package/dist/result.js +190 -0
- package/dist/result.js.map +1 -0
- package/package.json +64 -0
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { Kind, kindStr } from "./expressiondata";
|
|
2
|
+
export class Dictionary {
|
|
3
|
+
constructor(...pairs) {
|
|
4
|
+
this.keys = [];
|
|
5
|
+
this.v = [];
|
|
6
|
+
this.indexMap = {};
|
|
7
|
+
this.kind = Kind.Dictionary;
|
|
8
|
+
this.primitive = false;
|
|
9
|
+
for (const p of pairs) {
|
|
10
|
+
this.add(p.key, p.value);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
coerceString() {
|
|
14
|
+
return kindStr(this.kind);
|
|
15
|
+
}
|
|
16
|
+
number() {
|
|
17
|
+
return NaN;
|
|
18
|
+
}
|
|
19
|
+
add(key, value) {
|
|
20
|
+
if (key.toLowerCase() in this.indexMap) {
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
this.keys.push(key);
|
|
24
|
+
this.v.push(value);
|
|
25
|
+
this.indexMap[key.toLowerCase()] = this.v.length - 1;
|
|
26
|
+
}
|
|
27
|
+
get(key) {
|
|
28
|
+
const index = this.indexMap[key.toLowerCase()];
|
|
29
|
+
if (index === undefined) {
|
|
30
|
+
return undefined;
|
|
31
|
+
}
|
|
32
|
+
return this.v[index];
|
|
33
|
+
}
|
|
34
|
+
values() {
|
|
35
|
+
return this.v;
|
|
36
|
+
}
|
|
37
|
+
pairs() {
|
|
38
|
+
const result = [];
|
|
39
|
+
for (const key of this.keys) {
|
|
40
|
+
result.push({ key, value: this.v[this.indexMap[key.toLowerCase()]] });
|
|
41
|
+
}
|
|
42
|
+
return result;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
export function isDictionary(x) {
|
|
46
|
+
return x.kind === Kind.Dictionary;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=dictionary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dictionary.js","sourceRoot":"","sources":["../../src/data/dictionary.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0C,IAAI,EAAE,OAAO,EAAO,MAAM,kBAAkB,CAAC;AAE9F,MAAM,OAAO,UAAU;IAKrB,YAAY,GAAG,KAAa;QAJpB,SAAI,GAAa,EAAE,CAAC;QACpB,MAAC,GAAqB,EAAE,CAAC;QACzB,aAAQ,GAA4B,EAAE,CAAC;QAQ/B,SAAI,GAAG,IAAI,CAAC,UAAU,CAAC;QAEhC,cAAS,GAAG,KAAK,CAAC;QAPvB,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE;YACrB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;SAC1B;IACH,CAAC;IAMD,YAAY;QACV,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED,MAAM;QACJ,OAAO,GAAG,CAAC;IACb,CAAC;IAED,GAAG,CAAC,GAAW,EAAE,KAAqB;QACpC,IAAI,GAAG,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE;YACtC,OAAO;SACR;QAED,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpB,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IACvD,CAAC;IAED,GAAG,CAAC,GAAW;QACb,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;QAC/C,IAAI,KAAK,KAAK,SAAS,EAAE;YACvB,OAAO,SAAS,CAAC;SAClB;QAED,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,CAAC,CAAC;IAChB,CAAC;IAED,KAAK;QACH,MAAM,MAAM,GAAW,EAAE,CAAC;QAE1B,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE;YAC3B,MAAM,CAAC,IAAI,CAAC,EAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,EAAC,CAAC,CAAC;SACrE;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAED,MAAM,UAAU,YAAY,CAAC,CAAiB;IAC5C,OAAO,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,UAAU,CAAC;AACpC,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Dictionary } from "./dictionary";
|
|
2
|
+
import { Null } from "./null";
|
|
3
|
+
import { Array } from "./array";
|
|
4
|
+
import { StringData } from "./string";
|
|
5
|
+
import { NumberData } from "./number";
|
|
6
|
+
import { BooleanData } from "./boolean";
|
|
7
|
+
export declare enum Kind {
|
|
8
|
+
String = 0,
|
|
9
|
+
Array = 1,
|
|
10
|
+
Dictionary = 2,
|
|
11
|
+
Boolean = 3,
|
|
12
|
+
Number = 4,
|
|
13
|
+
CaseSensitiveDictionary = 5,
|
|
14
|
+
Null = 6
|
|
15
|
+
}
|
|
16
|
+
export declare function kindStr(k: Kind): string;
|
|
17
|
+
export interface ExpressionDataInterface {
|
|
18
|
+
kind: Kind;
|
|
19
|
+
primitive: boolean;
|
|
20
|
+
coerceString(): string;
|
|
21
|
+
number(): number;
|
|
22
|
+
}
|
|
23
|
+
export type ExpressionData = Array | Dictionary | StringData | BooleanData | NumberData | Null;
|
|
24
|
+
export type Pair = {
|
|
25
|
+
key: string;
|
|
26
|
+
value: ExpressionData;
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=expressiondata.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expressiondata.d.ts","sourceRoot":"","sources":["../../src/data/expressiondata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAC;AACxC,OAAO,EAAC,IAAI,EAAC,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAC,KAAK,EAAC,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAC,UAAU,EAAC,MAAM,UAAU,CAAC;AACpC,OAAO,EAAC,UAAU,EAAC,MAAM,UAAU,CAAC;AACpC,OAAO,EAAC,WAAW,EAAC,MAAM,WAAW,CAAC;AAEtC,oBAAY,IAAI;IACd,MAAM,IAAI;IACV,KAAK,IAAA;IACL,UAAU,IAAA;IACV,OAAO,IAAA;IACP,MAAM,IAAA;IACN,uBAAuB,IAAA;IACvB,IAAI,IAAA;CACL;AAED,wBAAgB,OAAO,CAAC,CAAC,EAAE,IAAI,GAAG,MAAM,CAiBvC;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,IAAI,CAAC;IACX,SAAS,EAAE,OAAO,CAAC;IAEnB,YAAY,IAAI,MAAM,CAAC;IAEvB,MAAM,IAAI,MAAM,CAAC;CAClB;AAED,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,UAAU,GAAG,UAAU,GAAG,WAAW,GAAG,UAAU,GAAG,IAAI,CAAC;AAE/F,MAAM,MAAM,IAAI,GAAG;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,cAAc,CAAC;CACvB,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export var Kind;
|
|
2
|
+
(function (Kind) {
|
|
3
|
+
Kind[Kind["String"] = 0] = "String";
|
|
4
|
+
Kind[Kind["Array"] = 1] = "Array";
|
|
5
|
+
Kind[Kind["Dictionary"] = 2] = "Dictionary";
|
|
6
|
+
Kind[Kind["Boolean"] = 3] = "Boolean";
|
|
7
|
+
Kind[Kind["Number"] = 4] = "Number";
|
|
8
|
+
Kind[Kind["CaseSensitiveDictionary"] = 5] = "CaseSensitiveDictionary";
|
|
9
|
+
Kind[Kind["Null"] = 6] = "Null";
|
|
10
|
+
})(Kind || (Kind = {}));
|
|
11
|
+
export function kindStr(k) {
|
|
12
|
+
switch (k) {
|
|
13
|
+
case Kind.Array:
|
|
14
|
+
return "Array";
|
|
15
|
+
case Kind.Boolean:
|
|
16
|
+
return "Boolean";
|
|
17
|
+
case Kind.Null:
|
|
18
|
+
return "Null";
|
|
19
|
+
case Kind.Number:
|
|
20
|
+
return "Number";
|
|
21
|
+
case Kind.Dictionary:
|
|
22
|
+
return "Object";
|
|
23
|
+
case Kind.String:
|
|
24
|
+
return "String";
|
|
25
|
+
}
|
|
26
|
+
return "unknown";
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=expressiondata.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expressiondata.js","sourceRoot":"","sources":["../../src/data/expressiondata.ts"],"names":[],"mappings":"AAOA,MAAM,CAAN,IAAY,IAQX;AARD,WAAY,IAAI;IACd,mCAAU,CAAA;IACV,iCAAK,CAAA;IACL,2CAAU,CAAA;IACV,qCAAO,CAAA;IACP,mCAAM,CAAA;IACN,qEAAuB,CAAA;IACvB,+BAAI,CAAA;AACN,CAAC,EARW,IAAI,KAAJ,IAAI,QAQf;AAED,MAAM,UAAU,OAAO,CAAC,CAAO;IAC7B,QAAQ,CAAC,EAAE;QACT,KAAK,IAAI,CAAC,KAAK;YACb,OAAO,OAAO,CAAC;QACjB,KAAK,IAAI,CAAC,OAAO;YACf,OAAO,SAAS,CAAC;QACnB,KAAK,IAAI,CAAC,IAAI;YACZ,OAAO,MAAM,CAAC;QAChB,KAAK,IAAI,CAAC,MAAM;YACd,OAAO,QAAQ,CAAC;QAClB,KAAK,IAAI,CAAC,UAAU;YAClB,OAAO,QAAQ,CAAC;QAClB,KAAK,IAAI,CAAC,MAAM;YACd,OAAO,QAAQ,CAAC;KACnB;IAED,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export { Array } from "./array";
|
|
2
|
+
export { BooleanData } from "./boolean";
|
|
3
|
+
export { Dictionary } from "./dictionary";
|
|
4
|
+
export { ExpressionData, Kind } from "./expressiondata";
|
|
5
|
+
export { Null } from "./null";
|
|
6
|
+
export { NumberData } from "./number";
|
|
7
|
+
export { replacer } from "./replacer";
|
|
8
|
+
export { reviver } from "./reviver";
|
|
9
|
+
export { StringData } from "./string";
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/data/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAC,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAC,WAAW,EAAC,MAAM,WAAW,CAAC;AACtC,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAC;AACxC,OAAO,EAAC,cAAc,EAAE,IAAI,EAAC,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAC,IAAI,EAAC,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAC,UAAU,EAAC,MAAM,UAAU,CAAC;AACpC,OAAO,EAAC,QAAQ,EAAC,MAAM,YAAY,CAAC;AACpC,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAC;AAClC,OAAO,EAAC,UAAU,EAAC,MAAM,UAAU,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export { Array } from "./array";
|
|
2
|
+
export { BooleanData } from "./boolean";
|
|
3
|
+
export { Dictionary } from "./dictionary";
|
|
4
|
+
export { Kind } from "./expressiondata";
|
|
5
|
+
export { Null } from "./null";
|
|
6
|
+
export { NumberData } from "./number";
|
|
7
|
+
export { replacer } from "./replacer";
|
|
8
|
+
export { reviver } from "./reviver";
|
|
9
|
+
export { StringData } from "./string";
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/data/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAC,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAC,WAAW,EAAC,MAAM,WAAW,CAAC;AACtC,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAC;AACxC,OAAO,EAAiB,IAAI,EAAC,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAC,IAAI,EAAC,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAC,UAAU,EAAC,MAAM,UAAU,CAAC;AACpC,OAAO,EAAC,QAAQ,EAAC,MAAM,YAAY,CAAC;AACpC,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAC;AAClC,OAAO,EAAC,UAAU,EAAC,MAAM,UAAU,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ExpressionDataInterface, Kind } from "./expressiondata";
|
|
2
|
+
export declare class Null implements ExpressionDataInterface {
|
|
3
|
+
readonly kind = Kind.Null;
|
|
4
|
+
primitive: boolean;
|
|
5
|
+
coerceString(): string;
|
|
6
|
+
number(): number;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=null.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"null.d.ts","sourceRoot":"","sources":["../../src/data/null.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,uBAAuB,EAAE,IAAI,EAAC,MAAM,kBAAkB,CAAC;AAE/D,qBAAa,IAAK,YAAW,uBAAuB;IAClD,SAAgB,IAAI,aAAa;IAE1B,SAAS,UAAQ;IAExB,YAAY,IAAI,MAAM;IAItB,MAAM,IAAI,MAAM;CAGjB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"null.js","sourceRoot":"","sources":["../../src/data/null.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,IAAI,EAAC,MAAM,kBAAkB,CAAC;AAE/D,MAAM,OAAO,IAAI;IAAjB;QACkB,SAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QAE1B,cAAS,GAAG,IAAI,CAAC;IAS1B,CAAC;IAPC,YAAY;QACV,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM;QACJ,OAAO,CAAC,CAAC;IACX,CAAC;CACF"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ExpressionDataInterface, Kind } from "./expressiondata";
|
|
2
|
+
export declare class NumberData implements ExpressionDataInterface {
|
|
3
|
+
readonly value: number;
|
|
4
|
+
constructor(value: number);
|
|
5
|
+
readonly kind = Kind.Number;
|
|
6
|
+
primitive: boolean;
|
|
7
|
+
coerceString(): string;
|
|
8
|
+
number(): number;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=number.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"number.d.ts","sourceRoot":"","sources":["../../src/data/number.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,uBAAuB,EAAE,IAAI,EAAC,MAAM,kBAAkB,CAAC;AAE/D,qBAAa,UAAW,YAAW,uBAAuB;aAC5B,KAAK,EAAE,MAAM;gBAAb,KAAK,EAAE,MAAM;IAEzC,SAAgB,IAAI,eAAe;IAE5B,SAAS,UAAQ;IAExB,YAAY,IAAI,MAAM;IAUtB,MAAM,IAAI,MAAM;CAGjB"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Kind } from "./expressiondata";
|
|
2
|
+
export class NumberData {
|
|
3
|
+
constructor(value) {
|
|
4
|
+
this.value = value;
|
|
5
|
+
this.kind = Kind.Number;
|
|
6
|
+
this.primitive = true;
|
|
7
|
+
}
|
|
8
|
+
coerceString() {
|
|
9
|
+
if (this.value === 0) {
|
|
10
|
+
return "0";
|
|
11
|
+
}
|
|
12
|
+
// Workaround to limit the precision to at most 15 digits. Format the number to a string, then parse
|
|
13
|
+
// it back to a number to remove trailing zeroes to prevent numbers to be converted to 1.200000000...
|
|
14
|
+
return (+this.value.toFixed(15)).toString();
|
|
15
|
+
}
|
|
16
|
+
number() {
|
|
17
|
+
return this.value;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=number.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"number.js","sourceRoot":"","sources":["../../src/data/number.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,IAAI,EAAC,MAAM,kBAAkB,CAAC;AAE/D,MAAM,OAAO,UAAU;IACrB,YAA4B,KAAa;QAAb,UAAK,GAAL,KAAK,CAAQ;QAEzB,SAAI,GAAG,IAAI,CAAC,MAAM,CAAC;QAE5B,cAAS,GAAG,IAAI,CAAC;IAJoB,CAAC;IAM7C,YAAY;QACV,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,EAAE;YACpB,OAAO,GAAG,CAAC;SACZ;QAED,oGAAoG;QACpG,qGAAqG;QACrG,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC9C,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;CACF"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Replacer can be passed to JSON.stringify to convert an ExpressionData object into plain JSON
|
|
3
|
+
*
|
|
4
|
+
* See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify#replacer
|
|
5
|
+
*/
|
|
6
|
+
export declare function replacer(_key: string, value: unknown): unknown;
|
|
7
|
+
//# sourceMappingURL=replacer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"replacer.d.ts","sourceRoot":"","sources":["../../src/data/replacer.ts"],"names":[],"mappings":"AAOA;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAiC9D"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { Array } from "./array";
|
|
2
|
+
import { BooleanData } from "./boolean";
|
|
3
|
+
import { Dictionary } from "./dictionary";
|
|
4
|
+
import { Null } from "./null";
|
|
5
|
+
import { NumberData } from "./number";
|
|
6
|
+
import { StringData } from "./string";
|
|
7
|
+
/**
|
|
8
|
+
* Replacer can be passed to JSON.stringify to convert an ExpressionData object into plain JSON
|
|
9
|
+
*
|
|
10
|
+
* See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify#replacer
|
|
11
|
+
*/
|
|
12
|
+
export function replacer(_key, value) {
|
|
13
|
+
if (value instanceof Null) {
|
|
14
|
+
return null;
|
|
15
|
+
}
|
|
16
|
+
if (value instanceof BooleanData) {
|
|
17
|
+
return value.value;
|
|
18
|
+
}
|
|
19
|
+
if (value instanceof NumberData) {
|
|
20
|
+
return value.number();
|
|
21
|
+
}
|
|
22
|
+
if (value instanceof StringData) {
|
|
23
|
+
return value.coerceString();
|
|
24
|
+
}
|
|
25
|
+
if (value instanceof Array) {
|
|
26
|
+
return value.values();
|
|
27
|
+
}
|
|
28
|
+
if (value instanceof Dictionary) {
|
|
29
|
+
const pairs = value.pairs();
|
|
30
|
+
const r = {};
|
|
31
|
+
for (const p of pairs) {
|
|
32
|
+
r[p.key] = p.value;
|
|
33
|
+
}
|
|
34
|
+
return r;
|
|
35
|
+
}
|
|
36
|
+
return value;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=replacer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"replacer.js","sourceRoot":"","sources":["../../src/data/replacer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAC,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAC,WAAW,EAAC,MAAM,WAAW,CAAC;AACtC,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAC;AACxC,OAAO,EAAC,IAAI,EAAC,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAC,UAAU,EAAC,MAAM,UAAU,CAAC;AACpC,OAAO,EAAC,UAAU,EAAC,MAAM,UAAU,CAAC;AAEpC;;;;GAIG;AACH,MAAM,UAAU,QAAQ,CAAC,IAAY,EAAE,KAAc;IACnD,IAAI,KAAK,YAAY,IAAI,EAAE;QACzB,OAAO,IAAI,CAAC;KACb;IAED,IAAI,KAAK,YAAY,WAAW,EAAE;QAChC,OAAO,KAAK,CAAC,KAAK,CAAC;KACpB;IAED,IAAI,KAAK,YAAY,UAAU,EAAE;QAC/B,OAAO,KAAK,CAAC,MAAM,EAAE,CAAC;KACvB;IAED,IAAI,KAAK,YAAY,UAAU,EAAE;QAC/B,OAAO,KAAK,CAAC,YAAY,EAAE,CAAC;KAC7B;IAED,IAAI,KAAK,YAAY,KAAK,EAAE;QAC1B,OAAO,KAAK,CAAC,MAAM,EAAE,CAAC;KACvB;IAED,IAAI,KAAK,YAAY,UAAU,EAAE;QAC/B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;QAE5B,MAAM,CAAC,GAA4B,EAAE,CAAC;QACtC,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE;YACrB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;SACpB;QAED,OAAO,CAAC,CAAC;KACV;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ExpressionData } from "./expressiondata";
|
|
2
|
+
/**
|
|
3
|
+
* Reviver can be passed to `JSON.parse` to convert plain JSON into an `ExpressionData` object.
|
|
4
|
+
*
|
|
5
|
+
* See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse#reviver
|
|
6
|
+
*/
|
|
7
|
+
export declare function reviver(_key: string, val: unknown): ExpressionData;
|
|
8
|
+
//# sourceMappingURL=reviver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reviver.d.ts","sourceRoot":"","sources":["../../src/data/reviver.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,cAAc,EAAC,MAAM,kBAAkB,CAAC;AAKhD;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,cAAc,CAgClE"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { Array as dArray } from "./array";
|
|
2
|
+
import { BooleanData } from "./boolean";
|
|
3
|
+
import { Dictionary } from "./dictionary";
|
|
4
|
+
import { Null } from "./null";
|
|
5
|
+
import { NumberData } from "./number";
|
|
6
|
+
import { StringData } from "./string";
|
|
7
|
+
/**
|
|
8
|
+
* Reviver can be passed to `JSON.parse` to convert plain JSON into an `ExpressionData` object.
|
|
9
|
+
*
|
|
10
|
+
* See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse#reviver
|
|
11
|
+
*/
|
|
12
|
+
export function reviver(_key, val) {
|
|
13
|
+
if (val === null) {
|
|
14
|
+
return new Null();
|
|
15
|
+
}
|
|
16
|
+
if (typeof val === "string") {
|
|
17
|
+
return new StringData(val);
|
|
18
|
+
}
|
|
19
|
+
if (typeof val === "number") {
|
|
20
|
+
return new NumberData(val);
|
|
21
|
+
}
|
|
22
|
+
if (typeof val === "boolean") {
|
|
23
|
+
return new BooleanData(val);
|
|
24
|
+
}
|
|
25
|
+
if (Array.isArray(val)) {
|
|
26
|
+
return new dArray(...val);
|
|
27
|
+
}
|
|
28
|
+
if (typeof val === "object") {
|
|
29
|
+
return new Dictionary(...Object.keys(val).map(k => ({
|
|
30
|
+
key: k,
|
|
31
|
+
value: val[k]
|
|
32
|
+
})));
|
|
33
|
+
}
|
|
34
|
+
// Pass through value
|
|
35
|
+
return val;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=reviver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reviver.js","sourceRoot":"","sources":["../../src/data/reviver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,IAAI,MAAM,EAAC,MAAM,SAAS,CAAC;AACxC,OAAO,EAAC,WAAW,EAAC,MAAM,WAAW,CAAC;AACtC,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAC;AAExC,OAAO,EAAC,IAAI,EAAC,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAC,UAAU,EAAC,MAAM,UAAU,CAAC;AACpC,OAAO,EAAC,UAAU,EAAC,MAAM,UAAU,CAAC;AAEpC;;;;GAIG;AACH,MAAM,UAAU,OAAO,CAAC,IAAY,EAAE,GAAY;IAChD,IAAI,GAAG,KAAK,IAAI,EAAE;QAChB,OAAO,IAAI,IAAI,EAAE,CAAC;KACnB;IAED,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;QAC3B,OAAO,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;KAC5B;IAED,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;QAC3B,OAAO,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;KAC5B;IAED,IAAI,OAAO,GAAG,KAAK,SAAS,EAAE;QAC5B,OAAO,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC;KAC7B;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QACtB,OAAO,IAAI,MAAM,CAAC,GAAI,GAAwB,CAAC,CAAC;KACjD;IAED,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;QAC3B,OAAO,IAAI,UAAU,CACnB,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC5B,GAAG,EAAE,CAAC;YACN,KAAK,EAAE,GAAG,CAAC,CAAqB,CAAC;SAClC,CAAC,CAAC,CACJ,CAAC;KACH;IAED,qBAAqB;IACrB,OAAO,GAAqB,CAAC;AAC/B,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ExpressionDataInterface, Kind } from "./expressiondata";
|
|
2
|
+
export declare class StringData implements ExpressionDataInterface {
|
|
3
|
+
readonly value: string;
|
|
4
|
+
constructor(value: string);
|
|
5
|
+
readonly kind = Kind.String;
|
|
6
|
+
primitive: boolean;
|
|
7
|
+
coerceString(): string;
|
|
8
|
+
number(): number;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=string.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"string.d.ts","sourceRoot":"","sources":["../../src/data/string.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,uBAAuB,EAAE,IAAI,EAAC,MAAM,kBAAkB,CAAC;AAE/D,qBAAa,UAAW,YAAW,uBAAuB;aAC5B,KAAK,EAAE,MAAM;gBAAb,KAAK,EAAE,MAAM;IAEzC,SAAgB,IAAI,eAAe;IAE5B,SAAS,UAAQ;IAExB,YAAY,IAAI,MAAM;IAItB,MAAM,IAAI,MAAM;CAGjB"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Kind } from "./expressiondata";
|
|
2
|
+
export class StringData {
|
|
3
|
+
constructor(value) {
|
|
4
|
+
this.value = value;
|
|
5
|
+
this.kind = Kind.String;
|
|
6
|
+
this.primitive = true;
|
|
7
|
+
}
|
|
8
|
+
coerceString() {
|
|
9
|
+
return this.value;
|
|
10
|
+
}
|
|
11
|
+
number() {
|
|
12
|
+
return Number(this.value);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=string.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"string.js","sourceRoot":"","sources":["../../src/data/string.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,IAAI,EAAC,MAAM,kBAAkB,CAAC;AAE/D,MAAM,OAAO,UAAU;IACrB,YAA4B,KAAa;QAAb,UAAK,GAAL,KAAK,CAAQ;QAEzB,SAAI,GAAG,IAAI,CAAC,MAAM,CAAC;QAE5B,cAAS,GAAG,IAAI,CAAC;IAJoB,CAAC;IAM7C,YAAY;QACV,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,MAAM;QACJ,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;CACF"}
|
package/dist/errors.d.ts
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Pos, Token } from "./lexer";
|
|
2
|
+
export declare const MAX_PARSER_DEPTH = 50;
|
|
3
|
+
export declare const MAX_EXPRESSION_LENGTH = 21000;
|
|
4
|
+
export declare enum ErrorType {
|
|
5
|
+
ErrorUnexpectedSymbol = 0,
|
|
6
|
+
ErrorUnrecognizedNamedValue = 1,
|
|
7
|
+
ErrorUnexpectedEndOfExpression = 2,
|
|
8
|
+
ErrorExceededMaxDepth = 3,
|
|
9
|
+
ErrorExceededMaxLength = 4,
|
|
10
|
+
ErrorTooFewParameters = 5,
|
|
11
|
+
ErrorTooManyParameters = 6,
|
|
12
|
+
ErrorUnrecognizedContext = 7,
|
|
13
|
+
ErrorUnrecognizedFunction = 8
|
|
14
|
+
}
|
|
15
|
+
export declare class ExpressionError extends Error {
|
|
16
|
+
private typ;
|
|
17
|
+
private tok;
|
|
18
|
+
constructor(typ: ErrorType, tok: Token);
|
|
19
|
+
pos: Pos;
|
|
20
|
+
}
|
|
21
|
+
export declare class ExpressionEvaluationError extends Error {
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAE,KAAK,EAAc,MAAM,SAAS,CAAC;AAEhD,eAAO,MAAM,gBAAgB,KAAK,CAAC;AACnC,eAAO,MAAM,qBAAqB,QAAQ,CAAC;AAE3C,oBAAY,SAAS;IACnB,qBAAqB,IAAA;IACrB,2BAA2B,IAAA;IAC3B,8BAA8B,IAAA;IAE9B,qBAAqB,IAAA;IACrB,sBAAsB,IAAA;IACtB,qBAAqB,IAAA;IACrB,sBAAsB,IAAA;IACtB,wBAAwB,IAAA;IACxB,yBAAyB,IAAA;CAC1B;AAED,qBAAa,eAAgB,SAAQ,KAAK;IAC5B,OAAO,CAAC,GAAG;IAAa,OAAO,CAAC,GAAG;gBAA3B,GAAG,EAAE,SAAS,EAAU,GAAG,EAAE,KAAK;IAM/C,GAAG,EAAE,GAAG,CAAC;CACjB;AA2BD,qBAAa,yBAA0B,SAAQ,KAAK;CAAG"}
|
package/dist/errors.js
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { tokenString } from "./lexer";
|
|
2
|
+
export const MAX_PARSER_DEPTH = 50;
|
|
3
|
+
export const MAX_EXPRESSION_LENGTH = 21000;
|
|
4
|
+
export var ErrorType;
|
|
5
|
+
(function (ErrorType) {
|
|
6
|
+
ErrorType[ErrorType["ErrorUnexpectedSymbol"] = 0] = "ErrorUnexpectedSymbol";
|
|
7
|
+
ErrorType[ErrorType["ErrorUnrecognizedNamedValue"] = 1] = "ErrorUnrecognizedNamedValue";
|
|
8
|
+
ErrorType[ErrorType["ErrorUnexpectedEndOfExpression"] = 2] = "ErrorUnexpectedEndOfExpression";
|
|
9
|
+
ErrorType[ErrorType["ErrorExceededMaxDepth"] = 3] = "ErrorExceededMaxDepth";
|
|
10
|
+
ErrorType[ErrorType["ErrorExceededMaxLength"] = 4] = "ErrorExceededMaxLength";
|
|
11
|
+
ErrorType[ErrorType["ErrorTooFewParameters"] = 5] = "ErrorTooFewParameters";
|
|
12
|
+
ErrorType[ErrorType["ErrorTooManyParameters"] = 6] = "ErrorTooManyParameters";
|
|
13
|
+
ErrorType[ErrorType["ErrorUnrecognizedContext"] = 7] = "ErrorUnrecognizedContext";
|
|
14
|
+
ErrorType[ErrorType["ErrorUnrecognizedFunction"] = 8] = "ErrorUnrecognizedFunction";
|
|
15
|
+
})(ErrorType || (ErrorType = {}));
|
|
16
|
+
export class ExpressionError extends Error {
|
|
17
|
+
constructor(typ, tok) {
|
|
18
|
+
super(`${errorDescription(typ)}: '${tokenString(tok)}'`);
|
|
19
|
+
this.typ = typ;
|
|
20
|
+
this.tok = tok;
|
|
21
|
+
this.pos = this.tok.range.start;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
function errorDescription(typ) {
|
|
25
|
+
switch (typ) {
|
|
26
|
+
case ErrorType.ErrorUnexpectedEndOfExpression:
|
|
27
|
+
return "Unexpected end of expression";
|
|
28
|
+
case ErrorType.ErrorUnexpectedSymbol:
|
|
29
|
+
return "Unexpected symbol";
|
|
30
|
+
case ErrorType.ErrorUnrecognizedNamedValue:
|
|
31
|
+
return "Unrecognized named-value";
|
|
32
|
+
case ErrorType.ErrorExceededMaxDepth:
|
|
33
|
+
return `Exceeded max expression depth ${MAX_PARSER_DEPTH}`;
|
|
34
|
+
case ErrorType.ErrorExceededMaxLength:
|
|
35
|
+
return `Exceeded max expression length ${MAX_EXPRESSION_LENGTH}`;
|
|
36
|
+
case ErrorType.ErrorTooFewParameters:
|
|
37
|
+
return "Too few parameters supplied";
|
|
38
|
+
case ErrorType.ErrorTooManyParameters:
|
|
39
|
+
return "Too many parameters supplied";
|
|
40
|
+
case ErrorType.ErrorUnrecognizedContext:
|
|
41
|
+
return "Unrecognized named-value";
|
|
42
|
+
case ErrorType.ErrorUnrecognizedFunction:
|
|
43
|
+
return "Unrecognized function";
|
|
44
|
+
default: // Should never reach here.
|
|
45
|
+
return "Unknown error";
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
export class ExpressionEvaluationError extends Error {
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,WAAW,EAAC,MAAM,SAAS,CAAC;AAEhD,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,CAAC;AACnC,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,CAAC;AAE3C,MAAM,CAAN,IAAY,SAWX;AAXD,WAAY,SAAS;IACnB,2EAAqB,CAAA;IACrB,uFAA2B,CAAA;IAC3B,6FAA8B,CAAA;IAE9B,2EAAqB,CAAA;IACrB,6EAAsB,CAAA;IACtB,2EAAqB,CAAA;IACrB,6EAAsB,CAAA;IACtB,iFAAwB,CAAA;IACxB,mFAAyB,CAAA;AAC3B,CAAC,EAXW,SAAS,KAAT,SAAS,QAWpB;AAED,MAAM,OAAO,eAAgB,SAAQ,KAAK;IACxC,YAAoB,GAAc,EAAU,GAAU;QACpD,KAAK,CAAC,GAAG,gBAAgB,CAAC,GAAG,CAAC,MAAM,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QADvC,QAAG,GAAH,GAAG,CAAW;QAAU,QAAG,GAAH,GAAG,CAAO;QAGpD,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC;IAClC,CAAC;CAGF;AAED,SAAS,gBAAgB,CAAC,GAAc;IACtC,QAAQ,GAAG,EAAE;QACX,KAAK,SAAS,CAAC,8BAA8B;YAC3C,OAAO,8BAA8B,CAAC;QACxC,KAAK,SAAS,CAAC,qBAAqB;YAClC,OAAO,mBAAmB,CAAC;QAC7B,KAAK,SAAS,CAAC,2BAA2B;YACxC,OAAO,0BAA0B,CAAC;QACpC,KAAK,SAAS,CAAC,qBAAqB;YAClC,OAAO,iCAAiC,gBAAgB,EAAE,CAAC;QAC7D,KAAK,SAAS,CAAC,sBAAsB;YACnC,OAAO,kCAAkC,qBAAqB,EAAE,CAAC;QACnE,KAAK,SAAS,CAAC,qBAAqB;YAClC,OAAO,6BAA6B,CAAC;QACvC,KAAK,SAAS,CAAC,sBAAsB;YACnC,OAAO,8BAA8B,CAAC;QACxC,KAAK,SAAS,CAAC,wBAAwB;YACrC,OAAO,0BAA0B,CAAC;QACpC,KAAK,SAAS,CAAC,yBAAyB;YACtC,OAAO,uBAAuB,CAAC;QACjC,SAAS,2BAA2B;YAClC,OAAO,eAAe,CAAC;KAC1B;AACH,CAAC;AAED,MAAM,OAAO,yBAA0B,SAAQ,KAAK;CAAG"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Binary, ContextAccess, Expr, ExprVisitor, FunctionCall, Grouping, IndexAccess, Literal, Logical, Unary } from "./ast";
|
|
2
|
+
import * as data from "./data";
|
|
3
|
+
import { FunctionDefinition } from "./funcs/info";
|
|
4
|
+
export declare class Evaluator implements ExprVisitor<data.ExpressionData> {
|
|
5
|
+
private n;
|
|
6
|
+
private context;
|
|
7
|
+
private functions?;
|
|
8
|
+
/**
|
|
9
|
+
* Creates a new evaluator
|
|
10
|
+
* @param n Parsed expression to evaluate
|
|
11
|
+
* @param context Context data to use
|
|
12
|
+
* @param functions Optional map of function implementations. If given, these will be preferred over the built-in functions.
|
|
13
|
+
*/
|
|
14
|
+
constructor(n: Expr, context: data.Dictionary, functions?: Map<string, FunctionDefinition> | undefined);
|
|
15
|
+
evaluate(): data.ExpressionData;
|
|
16
|
+
private eval;
|
|
17
|
+
visitLiteral(literal: Literal): data.ExpressionData;
|
|
18
|
+
visitUnary(unary: Unary): data.ExpressionData;
|
|
19
|
+
visitBinary(binary: Binary): data.ExpressionData;
|
|
20
|
+
visitLogical(logical: Logical): data.ExpressionData;
|
|
21
|
+
visitGrouping(grouping: Grouping): data.ExpressionData;
|
|
22
|
+
visitContextAccess(contextAccess: ContextAccess): data.ExpressionData;
|
|
23
|
+
visitIndexAccess(ia: IndexAccess): data.ExpressionData;
|
|
24
|
+
visitFunctionCall(functionCall: FunctionCall): data.ExpressionData;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=evaluator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evaluator.d.ts","sourceRoot":"","sources":["../src/evaluator.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EACN,aAAa,EACb,IAAI,EACJ,WAAW,EACX,YAAY,EACZ,QAAQ,EACR,WAAW,EACX,OAAO,EACP,OAAO,EAEP,KAAK,EACN,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAG/B,OAAO,EAAC,kBAAkB,EAAC,MAAM,cAAc,CAAC;AAKhD,qBAAa,SAAU,YAAW,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC;IAOpD,OAAO,CAAC,CAAC;IAAQ,OAAO,CAAC,OAAO;IAAmB,OAAO,CAAC,SAAS,CAAC;IANjF;;;;;OAKG;gBACiB,CAAC,EAAE,IAAI,EAAU,OAAO,EAAE,IAAI,CAAC,UAAU,EAAU,SAAS,CAAC,6CAAiC;IAE3G,QAAQ,IAAI,IAAI,CAAC,cAAc;IAItC,OAAO,CAAC,IAAI;IAIZ,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC,cAAc;IAInD,UAAU,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC,cAAc;IAU7C,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,cAAc;IA2BhD,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC,cAAc;IAoBnD,aAAa,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC,cAAc;IAItD,kBAAkB,CAAC,aAAa,EAAE,aAAa,GAAG,IAAI,CAAC,cAAc;IAMrE,gBAAgB,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI,CAAC,cAAc;IA8CtD,iBAAiB,CAAC,YAAY,EAAE,YAAY,GAAG,IAAI,CAAC,cAAc;CAUnE"}
|