aontu 0.30.1 → 0.30.2

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.
Files changed (184) hide show
  1. package/dist/ctx.d.ts +51 -0
  2. package/dist/ctx.js +105 -0
  3. package/dist/ctx.js.map +1 -0
  4. package/dist/err.d.ts +12 -0
  5. package/dist/err.js +123 -0
  6. package/dist/err.js.map +1 -0
  7. package/dist/hints.d.ts +8 -0
  8. package/dist/hints.js +84 -0
  9. package/dist/hints.js.map +1 -0
  10. package/dist/lang.d.ts +11 -0
  11. package/dist/lang.js +569 -0
  12. package/dist/lang.js.map +1 -0
  13. package/dist/site.d.ts +12 -0
  14. package/dist/site.js +27 -0
  15. package/dist/site.js.map +1 -0
  16. package/dist/tsconfig.tsbuildinfo +1 -0
  17. package/dist/type.d.ts +32 -0
  18. package/dist/type.js +16 -0
  19. package/dist/type.js.map +1 -0
  20. package/dist/unify.d.ts +14 -0
  21. package/dist/unify.js +156 -0
  22. package/dist/unify.js.map +1 -0
  23. package/dist/utility.d.ts +14 -0
  24. package/dist/utility.js +122 -0
  25. package/dist/utility.js.map +1 -0
  26. package/dist/val/BagVal.d.ts +10 -0
  27. package/dist/val/BagVal.js +15 -0
  28. package/dist/val/BagVal.js.map +1 -0
  29. package/dist/val/BooleanVal.d.ts +9 -0
  30. package/dist/val/BooleanVal.js +16 -0
  31. package/dist/val/BooleanVal.js.map +1 -0
  32. package/dist/val/CloseFuncVal.d.ts +11 -0
  33. package/dist/val/CloseFuncVal.js +32 -0
  34. package/dist/val/CloseFuncVal.js.map +1 -0
  35. package/dist/val/ConjunctVal.d.ts +14 -0
  36. package/dist/val/ConjunctVal.js +187 -0
  37. package/dist/val/ConjunctVal.js.map +1 -0
  38. package/dist/val/CopyFuncVal.d.ts +13 -0
  39. package/dist/val/CopyFuncVal.js +35 -0
  40. package/dist/val/CopyFuncVal.js.map +1 -0
  41. package/dist/val/DisjunctVal.d.ts +19 -0
  42. package/dist/val/DisjunctVal.js +194 -0
  43. package/dist/val/DisjunctVal.js.map +1 -0
  44. package/dist/val/FeatureVal.d.ts +10 -0
  45. package/dist/val/FeatureVal.js +29 -0
  46. package/dist/val/FeatureVal.js.map +1 -0
  47. package/dist/val/FuncBaseVal.d.ts +15 -0
  48. package/dist/val/FuncBaseVal.js +127 -0
  49. package/dist/val/FuncBaseVal.js.map +1 -0
  50. package/dist/val/HideFuncVal.d.ts +12 -0
  51. package/dist/val/HideFuncVal.js +48 -0
  52. package/dist/val/HideFuncVal.js.map +1 -0
  53. package/dist/val/IntegerVal.d.ts +9 -0
  54. package/dist/val/IntegerVal.js +46 -0
  55. package/dist/val/IntegerVal.js.map +1 -0
  56. package/dist/val/JunctionVal.d.ts +12 -0
  57. package/dist/val/JunctionVal.js +31 -0
  58. package/dist/val/JunctionVal.js.map +1 -0
  59. package/dist/val/KeyFuncVal.d.ts +12 -0
  60. package/dist/val/KeyFuncVal.js +34 -0
  61. package/dist/val/KeyFuncVal.js.map +1 -0
  62. package/dist/val/ListVal.d.ts +17 -0
  63. package/dist/val/ListVal.js +186 -0
  64. package/dist/val/ListVal.js.map +1 -0
  65. package/dist/val/LowerFuncVal.d.ts +12 -0
  66. package/dist/val/LowerFuncVal.js +40 -0
  67. package/dist/val/LowerFuncVal.js.map +1 -0
  68. package/dist/val/MapVal.d.ts +16 -0
  69. package/dist/val/MapVal.js +211 -0
  70. package/dist/val/MapVal.js.map +1 -0
  71. package/dist/val/MoveFuncVal.d.ts +11 -0
  72. package/dist/val/MoveFuncVal.js +41 -0
  73. package/dist/val/MoveFuncVal.js.map +1 -0
  74. package/dist/val/NilVal.d.ts +25 -0
  75. package/dist/val/NilVal.js +92 -0
  76. package/dist/val/NilVal.js.map +1 -0
  77. package/dist/val/NullVal.d.ts +9 -0
  78. package/dist/val/NullVal.js +18 -0
  79. package/dist/val/NullVal.js.map +1 -0
  80. package/dist/val/NumberVal.d.ts +9 -0
  81. package/dist/val/NumberVal.js +44 -0
  82. package/dist/val/NumberVal.js.map +1 -0
  83. package/dist/val/OpBaseVal.d.ts +18 -0
  84. package/dist/val/OpBaseVal.js +152 -0
  85. package/dist/val/OpBaseVal.js.map +1 -0
  86. package/dist/val/OpenFuncVal.d.ts +11 -0
  87. package/dist/val/OpenFuncVal.js +30 -0
  88. package/dist/val/OpenFuncVal.js.map +1 -0
  89. package/dist/val/PathFuncVal.d.ts +13 -0
  90. package/dist/val/PathFuncVal.js +42 -0
  91. package/dist/val/PathFuncVal.js.map +1 -0
  92. package/dist/val/PlusOpVal.d.ts +16 -0
  93. package/dist/val/PlusOpVal.js +59 -0
  94. package/dist/val/PlusOpVal.js.map +1 -0
  95. package/dist/val/PrefFuncVal.d.ts +11 -0
  96. package/dist/val/PrefFuncVal.js +39 -0
  97. package/dist/val/PrefFuncVal.js.map +1 -0
  98. package/dist/val/PrefVal.d.ts +15 -0
  99. package/dist/val/PrefVal.js +104 -0
  100. package/dist/val/PrefVal.js.map +1 -0
  101. package/dist/val/RefVal.d.ts +22 -0
  102. package/dist/val/RefVal.js +276 -0
  103. package/dist/val/RefVal.js.map +1 -0
  104. package/dist/val/ScalarKindVal.d.ts +16 -0
  105. package/dist/val/ScalarKindVal.js +76 -0
  106. package/dist/val/ScalarKindVal.js.map +1 -0
  107. package/dist/val/ScalarVal.d.ts +16 -0
  108. package/dist/val/ScalarVal.js +61 -0
  109. package/dist/val/ScalarVal.js.map +1 -0
  110. package/dist/val/StringVal.d.ts +10 -0
  111. package/dist/val/StringVal.js +19 -0
  112. package/dist/val/StringVal.js.map +1 -0
  113. package/dist/val/SuperFuncVal.d.ts +11 -0
  114. package/dist/val/SuperFuncVal.js +22 -0
  115. package/dist/val/SuperFuncVal.js.map +1 -0
  116. package/dist/val/TopVal.d.ts +16 -0
  117. package/dist/val/TopVal.js +38 -0
  118. package/dist/val/TopVal.js.map +1 -0
  119. package/dist/val/TypeFuncVal.d.ts +12 -0
  120. package/dist/val/TypeFuncVal.js +35 -0
  121. package/dist/val/TypeFuncVal.js.map +1 -0
  122. package/dist/val/UpperFuncVal.d.ts +12 -0
  123. package/dist/val/UpperFuncVal.js +40 -0
  124. package/dist/val/UpperFuncVal.js.map +1 -0
  125. package/dist/val/Val.d.ts +89 -0
  126. package/dist/val/Val.js +186 -0
  127. package/dist/val/Val.js.map +1 -0
  128. package/dist/val/VarVal.d.ts +13 -0
  129. package/dist/val/VarVal.js +109 -0
  130. package/dist/val/VarVal.js.map +1 -0
  131. package/dist/val/top.d.ts +2 -0
  132. package/dist/val/top.js +10 -0
  133. package/dist/val/top.js.map +1 -0
  134. package/dist/val/valutil.d.ts +2 -0
  135. package/dist/val/valutil.js +30 -0
  136. package/dist/val/valutil.js.map +1 -0
  137. package/package.json +3 -5
  138. package/src/aontu.ts +218 -0
  139. package/src/ctx.ts +201 -0
  140. package/src/err.ts +172 -0
  141. package/src/hints.ts +119 -0
  142. package/src/lang.ts +782 -0
  143. package/src/site.ts +34 -0
  144. package/src/tsconfig.json +16 -0
  145. package/src/type.ts +72 -0
  146. package/src/unify.ts +225 -0
  147. package/src/utility.ts +179 -0
  148. package/src/val/BagVal.ts +33 -0
  149. package/src/val/BooleanVal.ts +32 -0
  150. package/src/val/CloseFuncVal.ts +61 -0
  151. package/src/val/ConjunctVal.ts +285 -0
  152. package/src/val/CopyFuncVal.ts +69 -0
  153. package/src/val/DisjunctVal.ts +288 -0
  154. package/src/val/FeatureVal.ts +56 -0
  155. package/src/val/FuncBaseVal.ts +198 -0
  156. package/src/val/HideFuncVal.ts +85 -0
  157. package/src/val/IntegerVal.ts +75 -0
  158. package/src/val/JunctionVal.ts +54 -0
  159. package/src/val/KeyFuncVal.ts +67 -0
  160. package/src/val/ListVal.ts +286 -0
  161. package/src/val/LowerFuncVal.ts +73 -0
  162. package/src/val/MapVal.ts +316 -0
  163. package/src/val/MoveFuncVal.ts +79 -0
  164. package/src/val/NilVal.ts +156 -0
  165. package/src/val/NullVal.ts +38 -0
  166. package/src/val/NumberVal.ts +75 -0
  167. package/src/val/OpBaseVal.ts +231 -0
  168. package/src/val/OpenFuncVal.ts +60 -0
  169. package/src/val/PathFuncVal.ts +75 -0
  170. package/src/val/PlusOpVal.ts +92 -0
  171. package/src/val/PrefFuncVal.ts +73 -0
  172. package/src/val/PrefVal.ts +159 -0
  173. package/src/val/RefVal.ts +384 -0
  174. package/src/val/ScalarKindVal.ts +125 -0
  175. package/src/val/ScalarVal.ts +105 -0
  176. package/src/val/StringVal.ts +37 -0
  177. package/src/val/SuperFuncVal.ts +46 -0
  178. package/src/val/TopVal.ts +69 -0
  179. package/src/val/TypeFuncVal.ts +69 -0
  180. package/src/val/UpperFuncVal.ts +72 -0
  181. package/src/val/Val.ts +294 -0
  182. package/src/val/VarVal.ts +171 -0
  183. package/src/val/top.ts +12 -0
  184. package/src/val/valutil.ts +31 -0
@@ -0,0 +1,127 @@
1
+ "use strict";
2
+ /* Copyright (c) 2021-2025 Richard Rodger, MIT License */
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.FuncBaseVal = void 0;
5
+ const type_1 = require("../type");
6
+ const unify_1 = require("../unify");
7
+ const utility_1 = require("../utility");
8
+ const err_1 = require("../err");
9
+ const top_1 = require("./top");
10
+ const ConjunctVal_1 = require("../val/ConjunctVal");
11
+ const FeatureVal_1 = require("../val/FeatureVal");
12
+ class FuncBaseVal extends FeatureVal_1.FeatureVal {
13
+ constructor(spec, ctx) {
14
+ super(spec, ctx);
15
+ this.isFunc = true;
16
+ // console.log('FBV', this.id, this.constructor.name, this.peg?.[0]?.canon)
17
+ }
18
+ validateArgs(args, min) {
19
+ if (min < args.length) {
20
+ // TODO: this is an error as as a parse error, needs to be handled same way
21
+ throw new err_1.AontuError('The ' + this.funcname() + ' function needs at least ' +
22
+ min + ' argument' + (1 === min ? '' : 's') + '.');
23
+ }
24
+ }
25
+ make(ctx, _spec) {
26
+ return (0, err_1.makeNilErr)(ctx, 'func:' + this.funcname(), this, undefined, 'make');
27
+ }
28
+ unify(peer, ctx) {
29
+ const te = ctx.explain && (0, utility_1.explainOpen)(ctx, ctx.explain, 'Func:' + this.funcname(), this, peer);
30
+ // const sc = this.id + '=' + this.canon
31
+ // const pc = peer.id + '=' + peer.canon
32
+ let why = '';
33
+ let out = this;
34
+ // console.log('FBV', this.id, this.constructor.name, this.mark.type, this.peg?.canon, 'PEER', peer.id, peer.canon)
35
+ if (this.id !== peer.id) {
36
+ if (peer.isTop && (this.mark.type || this.mark.hide)) {
37
+ this.dc = type_1.DONE;
38
+ }
39
+ else {
40
+ let pegdone = true;
41
+ let newpeg = [];
42
+ let newtype = this.mark.type;
43
+ let newhide = this.mark.hide;
44
+ this.peg = this.prepare(ctx, this.peg);
45
+ for (let arg of this.peg) {
46
+ // console.log('FUNCBASE-UNIFY-PEG-A', arg.canon)
47
+ let newarg = arg;
48
+ if (!arg.done) {
49
+ newarg = arg.unify((0, top_1.top)(), ctx.clone({ explain: (0, utility_1.ec)(te, 'ARG') }));
50
+ newtype = newtype || newarg.mark.type;
51
+ newhide = newhide || newarg.mark.hide;
52
+ // console.log('FUNCBASE-UNIFY-PEG-B', arg.canon, '->', newarg.canon)
53
+ }
54
+ pegdone &&= arg.done;
55
+ newpeg.push(newarg);
56
+ }
57
+ // console.log('FUNCBASE-PEG', this.id, pegdone, this.peg.map((p: any) => p?.canon))
58
+ if (pegdone) {
59
+ const resolved = this.resolve(ctx, newpeg);
60
+ // console.log('FUNC-RESOLVED', ctx.cc, resolved?.canon)
61
+ out = resolved.done && peer.isTop ? resolved :
62
+ (0, unify_1.unite)(ctx.clone({ explain: (0, utility_1.ec)(te, 'PEG') }), resolved, peer, 'func-' + this.funcname() + '/' + this.id);
63
+ (0, utility_1.propagateMarks)(this, out);
64
+ // const unified =
65
+ // unite(ctx, resolved, peer, 'func-' + this.funcname() + '/' + this.id)
66
+ // out = unified
67
+ // propagateMarks(unified, out)
68
+ // propagateMarks(this, out)
69
+ // TODO: make should handle this using ctx?
70
+ out.site.row = this.site.row;
71
+ out.site.col = this.site.col;
72
+ out.site.url = this.site.url;
73
+ out.path = this.path;
74
+ why += 'pegdone';
75
+ }
76
+ else if (peer.isTop) {
77
+ this.notdone();
78
+ out = this.make(ctx, { peg: newpeg, mark: { type: newtype, hide: newhide } });
79
+ // TODO: make should handle this using ctx?
80
+ out.site.row = this.site.row;
81
+ out.site.col = this.site.col;
82
+ out.site.url = this.site.url;
83
+ out.path = this.path;
84
+ why += 'top';
85
+ }
86
+ else if (peer.isNil) {
87
+ this.notdone();
88
+ out = peer;
89
+ why += 'nil';
90
+ }
91
+ else {
92
+ this.notdone();
93
+ out = new ConjunctVal_1.ConjunctVal({
94
+ peg: [this, peer], mark: { type: newtype, hide: newhide }
95
+ }, ctx);
96
+ // TODO: make should handle this using ctx?
97
+ out.site.row = this.site.row;
98
+ out.site.col = this.site.col;
99
+ out.site.url = this.site.url;
100
+ out.path = this.path;
101
+ why += 'defer';
102
+ }
103
+ }
104
+ }
105
+ // console.log('FUNC-UNIFY-OUT', this.funcname(), this.id, this.canon, 'W=', why, peer.id, peer.canon, 'O=', out.dc, out.id, out.canon)
106
+ (0, utility_1.explainClose)(te, out);
107
+ return out;
108
+ }
109
+ get canon() {
110
+ return '' +
111
+ // (this.type ? '<type>' : '') +
112
+ // (this.done ? '<done>' : '') +
113
+ // (this.id + '=') +
114
+ this.funcname() + '(' + (this.peg.map((p) => p.canon).join(',')) + ')';
115
+ }
116
+ funcname() {
117
+ return 'func';
118
+ }
119
+ prepare(_ctx, args) {
120
+ return args;
121
+ }
122
+ resolve(ctx, _args) {
123
+ return (0, err_1.makeNilErr)(ctx, 'func:' + this.funcname(), this, undefined, 'resolve');
124
+ }
125
+ }
126
+ exports.FuncBaseVal = FuncBaseVal;
127
+ //# sourceMappingURL=FuncBaseVal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FuncBaseVal.js","sourceRoot":"","sources":["../../src/val/FuncBaseVal.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { Val, ValSpec } from '../type';
2
+ import { AontuContext } from '../ctx';
3
+ import { FuncBaseVal } from './FuncBaseVal';
4
+ declare class HideFuncVal extends FuncBaseVal {
5
+ isHideFunc: boolean;
6
+ resolved?: Val;
7
+ constructor(spec: ValSpec, ctx?: AontuContext);
8
+ make(_ctx: AontuContext, spec: ValSpec): Val;
9
+ funcname(): string;
10
+ resolve(ctx: AontuContext, args: Val[]): Val;
11
+ }
12
+ export { HideFuncVal, };
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ /* Copyright (c) 2021-2025 Richard Rodger, MIT License */
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.HideFuncVal = void 0;
5
+ const err_1 = require("../err");
6
+ const utility_1 = require("../utility");
7
+ const FuncBaseVal_1 = require("./FuncBaseVal");
8
+ class HideFuncVal extends FuncBaseVal_1.FuncBaseVal {
9
+ constructor(spec, ctx) {
10
+ super(spec, ctx);
11
+ this.isHideFunc = true;
12
+ // The function does not mark itself!
13
+ this.mark.type = false;
14
+ this.mark.hide = false;
15
+ }
16
+ make(_ctx, spec) {
17
+ return new HideFuncVal(spec);
18
+ }
19
+ funcname() {
20
+ return 'hide';
21
+ }
22
+ /*
23
+ unify(peer: Val, ctx: AontuContext): Val {
24
+ const te = ctx.explain && explainOpen(ctx, ctx.explain, 'HideFunc', this, peer)
25
+ let out: Val | undefined = this.resolved
26
+
27
+ if (null == out) {
28
+ out = this.resolve(ctx, this.peg)
29
+ }
30
+
31
+ explainClose(te, out)
32
+ return out
33
+ }
34
+ */
35
+ resolve(ctx, args) {
36
+ let out = args[0] ?? (0, err_1.makeNilErr)(ctx, 'arg', this);
37
+ if (!out.isNil) {
38
+ out = out.clone(ctx);
39
+ (0, utility_1.walk)(out, (_key, val) => {
40
+ val.mark.hide = true;
41
+ return val;
42
+ });
43
+ }
44
+ return out;
45
+ }
46
+ }
47
+ exports.HideFuncVal = HideFuncVal;
48
+ //# sourceMappingURL=HideFuncVal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HideFuncVal.js","sourceRoot":"","sources":["../../src/val/HideFuncVal.ts"],"names":[],"mappings":";AAAA,yDAAyD;;;AAYzD,gCAAmC;AAGnC,wCAImB;AAGnB,+CAA2C;AAG3C,MAAM,WAAY,SAAQ,yBAAW;IAKnC,YACE,IAAa,EACb,GAAkB;QAElB,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QARlB,eAAU,GAAG,IAAI,CAAA;QAUf,qCAAqC;QACrC,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAA;QACtB,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAA;IACxB,CAAC;IAGD,IAAI,CAAC,IAAkB,EAAE,IAAa;QACpC,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,CAAA;IAC9B,CAAC;IAED,QAAQ;QACN,OAAO,MAAM,CAAA;IACf,CAAC;IAGD;;;;;;;;;;;;MAYE;IAGF,OAAO,CAAC,GAAiB,EAAE,IAAW;QACpC,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,IAAA,gBAAU,EAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;QACjD,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;YACf,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YAEpB,IAAA,cAAI,EAAC,GAAG,EAAE,CAAC,IAAiC,EAAE,GAAQ,EAAE,EAAE;gBACxD,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;gBACpB,OAAO,GAAG,CAAA;YACZ,CAAC,CAAC,CAAA;QACJ,CAAC;QAED,OAAO,GAAG,CAAA;IACZ,CAAC;CACF;AAIC,kCAAW"}
@@ -0,0 +1,9 @@
1
+ import type { Val, ValSpec } from '../type';
2
+ import { AontuContext } from '../ctx';
3
+ import { ScalarVal } from './ScalarVal';
4
+ declare class IntegerVal extends ScalarVal {
5
+ isInteger: boolean;
6
+ constructor(spec: ValSpec, ctx?: AontuContext);
7
+ unify(peer: any, ctx: AontuContext): Val;
8
+ }
9
+ export { IntegerVal, };
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ /* Copyright (c) 2021-2023 Richard Rodger, MIT License */
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.IntegerVal = void 0;
5
+ const err_1 = require("../err");
6
+ const ScalarVal_1 = require("./ScalarVal");
7
+ const ScalarKindVal_1 = require("./ScalarKindVal");
8
+ const utility_1 = require("../utility");
9
+ class IntegerVal extends ScalarVal_1.ScalarVal {
10
+ constructor(spec, ctx) {
11
+ if (!Number.isInteger(spec.peg)) {
12
+ // TODO: use Nil?
13
+ throw new err_1.AontuError('not-integer: ' + spec.peg);
14
+ }
15
+ // super({ peg: spec.peg, kind: Integer }, ctx)
16
+ super({ ...spec, kind: ScalarKindVal_1.Integer }, ctx);
17
+ this.isInteger = true;
18
+ }
19
+ unify(peer, ctx) {
20
+ const te = ctx.explain && (0, utility_1.explainOpen)(ctx, ctx.explain, 'Integer', this, peer);
21
+ let out = this;
22
+ if (null != peer) {
23
+ if (peer.isScalarKind) {
24
+ out = peer.unify(this, ctx.clone({ explain: (0, utility_1.ec)(te, 'KND') }));
25
+ }
26
+ else if (peer.isScalar &&
27
+ peer.peg === this.peg) {
28
+ out = this;
29
+ }
30
+ else if (peer.isTop) {
31
+ out = this;
32
+ }
33
+ else {
34
+ out = (0, err_1.makeNilErr)(ctx, 'scalar_' +
35
+ (peer.kind === this.kind ? 'value' : 'kind'), this, peer);
36
+ }
37
+ }
38
+ else {
39
+ out = super.unify(peer, ctx);
40
+ }
41
+ (0, utility_1.explainClose)(te, out);
42
+ return out;
43
+ }
44
+ }
45
+ exports.IntegerVal = IntegerVal;
46
+ //# sourceMappingURL=IntegerVal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IntegerVal.js","sourceRoot":"","sources":["../../src/val/IntegerVal.ts"],"names":[],"mappings":";AAAA,yDAAyD;;;AAWzD,gCAA+C;AAE/C,2CAAuC;AACvC,mDAAyC;AAEzC,wCAImB;AAGnB,MAAM,UAAW,SAAQ,qBAAS;IAGhC,YACE,IAAa,EACb,GAAkB;QAElB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAChC,iBAAiB;YACjB,MAAM,IAAI,gBAAU,CAAC,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,CAAA;QAClD,CAAC;QACD,+CAA+C;QAC/C,KAAK,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,uBAAO,EAAE,EAAE,GAAG,CAAC,CAAA;QAXxC,cAAS,GAAG,IAAI,CAAA;IAYhB,CAAC;IAED,KAAK,CAAC,IAAS,EAAE,GAAiB;QAChC,MAAM,EAAE,GAAG,GAAG,CAAC,OAAO,IAAI,IAAA,qBAAW,EAAC,GAAG,EAAE,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;QAE9E,IAAI,GAAG,GAAQ,IAAI,CAAA;QAEnB,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;YACjB,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBACtB,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,IAAA,YAAE,EAAC,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAA;YAC/D,CAAC;iBACI,IACH,IAAI,CAAC,QAAQ;gBACb,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,EACrB,CAAC;gBACD,GAAG,GAAG,IAAI,CAAA;YACZ,CAAC;iBACI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBACpB,GAAG,GAAG,IAAI,CAAA;YACZ,CAAC;iBACI,CAAC;gBACJ,GAAG,GAAG,IAAA,gBAAU,EAAC,GAAG,EAAE,SAAS;oBAC7B,CAAE,IAAY,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;YACtE,CAAC;QACH,CAAC;aACI,CAAC;YACJ,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QAC9B,CAAC;QAED,IAAA,sBAAY,EAAC,EAAE,EAAE,GAAG,CAAC,CAAA;QAErB,OAAO,GAAG,CAAA;IACZ,CAAC;CACF;AAIC,gCAAU"}
@@ -0,0 +1,12 @@
1
+ import type { Val, ValSpec } from '../type';
2
+ import { AontuContext } from '../ctx';
3
+ import { FeatureVal } from './FeatureVal';
4
+ declare abstract class JunctionVal extends FeatureVal {
5
+ isJunction: boolean;
6
+ constructor(spec: ValSpec, ctx?: AontuContext);
7
+ append(peer: Val): JunctionVal;
8
+ clone(ctx: AontuContext, spec?: ValSpec): Val;
9
+ get canon(): any;
10
+ abstract getJunctionSymbol(): string;
11
+ }
12
+ export { JunctionVal, };
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ /* Copyright (c) 2021-2025 Richard Rodger, MIT License */
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.JunctionVal = void 0;
5
+ const FeatureVal_1 = require("./FeatureVal");
6
+ // Abstract base class for binary operations that work with arrays of Val objects
7
+ // (ConjunctVal and DisjunctVal)
8
+ class JunctionVal extends FeatureVal_1.FeatureVal {
9
+ constructor(spec, ctx) {
10
+ super(spec, ctx);
11
+ this.isJunction = true;
12
+ }
13
+ // NOTE: mutation!
14
+ append(peer) {
15
+ this.peg.push(peer);
16
+ return this;
17
+ }
18
+ clone(ctx, spec) {
19
+ let out = super.clone(ctx, spec);
20
+ out.peg = this.peg.map((entry) => entry.clone(ctx, spec?.mark ? { mark: spec.mark } : {}));
21
+ return out;
22
+ }
23
+ get canon() {
24
+ return this.peg.map((v) => {
25
+ return v.isJunction && Array.isArray(v.peg) && 1 < v.peg.length ?
26
+ '(' + v.canon + ')' : v.canon;
27
+ }).join(this.getJunctionSymbol());
28
+ }
29
+ }
30
+ exports.JunctionVal = JunctionVal;
31
+ //# sourceMappingURL=JunctionVal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JunctionVal.js","sourceRoot":"","sources":["../../src/val/JunctionVal.ts"],"names":[],"mappings":";AAAA,yDAAyD;;;AAYzD,6CAAyC;AAGzC,iFAAiF;AACjF,gCAAgC;AAChC,MAAe,WAAY,SAAQ,uBAAU;IAG3C,YACE,IAAa,EACb,GAAkB;QAElB,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QANlB,eAAU,GAAG,IAAI,CAAA;IAOjB,CAAC;IAED,kBAAkB;IAClB,MAAM,CAAC,IAAS;QACd,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACnB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK,CAAC,GAAiB,EAAE,IAAc;QACrC,IAAI,GAAG,GAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAiB,CAAA;QACjD,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAU,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QAC/F,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE;YAC7B,OAAQ,CAAS,CAAC,UAAU,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBACxE,GAAG,GAAG,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;QACjC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAA;IACnC,CAAC;CAIF;AAIC,kCAAW"}
@@ -0,0 +1,12 @@
1
+ import type { Val, ValSpec } from '../type';
2
+ import { AontuContext } from '../ctx';
3
+ import { FuncBaseVal } from './FuncBaseVal';
4
+ declare class KeyFuncVal extends FuncBaseVal {
5
+ isKeyFunc: boolean;
6
+ constructor(spec: ValSpec, ctx?: AontuContext);
7
+ make(_ctx: AontuContext, spec: ValSpec): Val;
8
+ funcname(): string;
9
+ resolve(_ctx: AontuContext, _args: Val[]): Val;
10
+ gen(_ctx: AontuContext): any;
11
+ }
12
+ export { KeyFuncVal, };
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ /* Copyright (c) 2021-2025 Richard Rodger, MIT License */
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.KeyFuncVal = void 0;
5
+ const StringVal_1 = require("../val/StringVal");
6
+ const FuncBaseVal_1 = require("./FuncBaseVal");
7
+ class KeyFuncVal extends FuncBaseVal_1.FuncBaseVal {
8
+ constructor(spec, ctx) {
9
+ super(spec, ctx);
10
+ this.isKeyFunc = true;
11
+ // this.dc = DONE
12
+ }
13
+ make(_ctx, spec) {
14
+ return new KeyFuncVal(spec);
15
+ }
16
+ funcname() {
17
+ return 'key';
18
+ }
19
+ resolve(_ctx, _args) {
20
+ let out = this;
21
+ if (!this.mark.type && !this.mark.hide) {
22
+ let move = this.peg?.[0]?.peg;
23
+ move = isNaN(move) ? 1 : +move;
24
+ const key = this.path[this.path.length - (1 + move)] ?? '';
25
+ out = new StringVal_1.StringVal({ peg: key });
26
+ }
27
+ return out;
28
+ }
29
+ gen(_ctx) {
30
+ return undefined;
31
+ }
32
+ }
33
+ exports.KeyFuncVal = KeyFuncVal;
34
+ //# sourceMappingURL=KeyFuncVal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KeyFuncVal.js","sourceRoot":"","sources":["../../src/val/KeyFuncVal.ts"],"names":[],"mappings":";AAAA,yDAAyD;;;AAazD,gDAA4C;AAI5C,+CAA2C;AAG3C,MAAM,UAAW,SAAQ,yBAAW;IAGlC,YACE,IAAa,EACb,GAAkB;QAElB,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QANlB,cAAS,GAAG,IAAI,CAAA;QAOd,iBAAiB;IACnB,CAAC;IAGD,IAAI,CAAC,IAAkB,EAAE,IAAa;QACpC,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,CAAA;IAC7B,CAAC;IAED,QAAQ;QACN,OAAO,KAAK,CAAA;IACd,CAAC;IAID,OAAO,CAAC,IAAkB,EAAE,KAAY;QACtC,IAAI,GAAG,GAAQ,IAAI,CAAA;QAEnB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACvC,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAA;YAC7B,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;YAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,EAAE,CAAA;YAE1D,GAAG,GAAG,IAAI,qBAAS,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAA;QACnC,CAAC;QAED,OAAO,GAAG,CAAA;IACZ,CAAC;IAGD,GAAG,CAAC,IAAkB;QACpB,OAAO,SAAS,CAAA;IAClB,CAAC;CAEF;AAIC,gCAAU"}
@@ -0,0 +1,17 @@
1
+ import type { Val, ValList, ValSpec } from '../type';
2
+ import { AontuContext } from '../ctx';
3
+ import { BagVal } from './BagVal';
4
+ declare class ListVal extends BagVal {
5
+ isList: boolean;
6
+ spread: {
7
+ cj: Val | undefined;
8
+ };
9
+ constructor(spec: {
10
+ peg: ValList;
11
+ }, ctx?: AontuContext);
12
+ unify(peer: Val, ctx: AontuContext): Val;
13
+ clone(ctx: AontuContext, spec?: ValSpec): Val;
14
+ get canon(): string;
15
+ gen(ctx: AontuContext): any;
16
+ }
17
+ export { ListVal, };
@@ -0,0 +1,186 @@
1
+ "use strict";
2
+ /* Copyright (c) 2021-2025 Richard Rodger, MIT License */
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.ListVal = void 0;
5
+ const type_1 = require("../type");
6
+ const unify_1 = require("../unify");
7
+ const utility_1 = require("../utility");
8
+ const err_1 = require("../err");
9
+ const top_1 = require("./top");
10
+ const ConjunctVal_1 = require("./ConjunctVal");
11
+ const BagVal_1 = require("./BagVal");
12
+ const Val_1 = require("./Val");
13
+ class ListVal extends BagVal_1.BagVal {
14
+ constructor(spec, ctx) {
15
+ super(spec, ctx);
16
+ this.isList = true;
17
+ this.spread = {
18
+ cj: undefined,
19
+ };
20
+ if (null == this.peg) {
21
+ throw new err_1.AontuError('ListVal spec.peg undefined');
22
+ }
23
+ let spread = this.peg[type_1.SPREAD];
24
+ delete this.peg[type_1.SPREAD];
25
+ if (spread) {
26
+ if ('&' === spread.o) {
27
+ // TODO: handle existing spread!
28
+ this.spread.cj =
29
+ Array.isArray(spread.v) ?
30
+ 1 < spread.v.length ?
31
+ new ConjunctVal_1.ConjunctVal({ peg: spread.v }, ctx) :
32
+ spread.v[0] :
33
+ spread.v;
34
+ // let tmv = Array.isArray(spread.v) ? spread.v : [spread.v]
35
+ // this.spread.cj = new ConjunctVal({ peg: tmv }, ctx)
36
+ }
37
+ }
38
+ }
39
+ // NOTE: order of keys is not preserved!
40
+ // not possible in any case - consider {a,b} unify {b,a}
41
+ unify(peer, ctx) {
42
+ const TOP = (0, top_1.top)();
43
+ peer = peer ?? TOP;
44
+ const te = ctx.explain && (0, utility_1.explainOpen)(ctx, ctx.explain, 'List', this, peer);
45
+ let done = true;
46
+ let exit = false;
47
+ // NOTE: not a clone! needs to be constructed.
48
+ let out = (peer.isTop ? this : new ListVal({ peg: [] }, ctx));
49
+ out.closed = this.closed;
50
+ out.optionalKeys = [...this.optionalKeys];
51
+ out.spread.cj = this.spread.cj;
52
+ if (peer instanceof ListVal) {
53
+ if (!this.closed && peer.closed) {
54
+ out = peer.unify(this, ctx.clone({ explain: (0, utility_1.ec)(te, 'PMC') }));
55
+ exit = true;
56
+ }
57
+ else {
58
+ out.closed = out.closed || peer.closed;
59
+ out.spread.cj = null == out.spread.cj ? peer.spread.cj : (null == peer.spread.cj ? out.spread.cj : (out.spread.cj =
60
+ (0, unify_1.unite)(ctx.clone({ explain: (0, utility_1.ec)(te, 'SPR') }), out.spread.cj, peer.spread.cj, 'list-peer')));
61
+ }
62
+ }
63
+ if (!exit) {
64
+ out.dc = this.dc + 1;
65
+ let spread_cj = out.spread.cj || TOP;
66
+ // Always unify children first
67
+ for (let key in this.peg) {
68
+ const keyctx = ctx.descend(key);
69
+ const key_spread_cj = spread_cj.clone(keyctx);
70
+ const child = this.peg[key];
71
+ (0, utility_1.propagateMarks)(this, child);
72
+ out.peg[key] =
73
+ undefined === child ? key_spread_cj :
74
+ child.isNil ? child :
75
+ key_spread_cj.isNil ? key_spread_cj :
76
+ key_spread_cj.isTop && child.done ? child :
77
+ child.isTop && key_spread_cj.done ? key_spread_cj :
78
+ (0, unify_1.unite)(keyctx.clone({ explain: (0, utility_1.ec)(te, 'PEG:' + key) }), child, key_spread_cj, 'list-own');
79
+ done = (done && type_1.DONE === out.peg[key].dc);
80
+ }
81
+ const allowedKeys = this.closed ? Object.keys(this.peg) : [];
82
+ let bad = undefined;
83
+ if (peer instanceof ListVal) {
84
+ let upeer = (0, unify_1.unite)(ctx.clone({ explain: (0, utility_1.ec)(te, 'PER') }), peer, TOP, 'list-peer-list');
85
+ // NOTE: peerkey is the index
86
+ for (let peerkey in upeer.peg) {
87
+ let peerchild = upeer.peg[peerkey];
88
+ if (this.closed && !allowedKeys.includes(peerkey)) {
89
+ bad = (0, err_1.makeNilErr)(ctx, 'closed', peerchild, undefined);
90
+ }
91
+ let child = out.peg[peerkey];
92
+ let oval = out.peg[peerkey] =
93
+ undefined === child ? peerchild :
94
+ child.isTop && peerchild.done ? peerchild :
95
+ child.isNil ? child :
96
+ peerchild.isNil ? peerchild :
97
+ (0, unify_1.unite)(ctx.descend(peerkey).clone({ explain: (0, utility_1.ec)(te, 'CHD') }), child, peerchild, 'list-peer');
98
+ if (this.spread.cj) {
99
+ let key_ctx = ctx.descend(peerkey);
100
+ let key_spread_cj = spread_cj.clone(key_ctx);
101
+ oval = out.peg[peerkey] =
102
+ (0, unify_1.unite)(key_ctx.clone({ explain: (0, utility_1.ec)(te, 'PSP:' + peerkey) }), out.peg[peerkey], key_spread_cj, 'list-spread');
103
+ }
104
+ (0, utility_1.propagateMarks)(this, oval);
105
+ done = (done && type_1.DONE === oval.dc);
106
+ }
107
+ }
108
+ else if (!peer.isTop) {
109
+ out = (0, err_1.makeNilErr)(ctx, 'list', this, peer);
110
+ }
111
+ if (null != bad) {
112
+ out = bad;
113
+ }
114
+ if (!out.isNil) {
115
+ out.uh.push(peer.id);
116
+ out.dc = done ? type_1.DONE : out.dc;
117
+ (0, utility_1.propagateMarks)(peer, out);
118
+ (0, utility_1.propagateMarks)(this, out);
119
+ }
120
+ }
121
+ ctx.explain && (0, utility_1.explainClose)(te, out);
122
+ return out;
123
+ }
124
+ clone(ctx, spec) {
125
+ let out = super.clone(ctx, spec);
126
+ for (let entry of Object.entries(this.peg)) {
127
+ out.peg[entry[0]] =
128
+ entry[1]?.isVal ? entry[1].clone(ctx, spec?.mark ? { mark: spec.mark } : {}) : entry[1];
129
+ }
130
+ if (this.spread.cj) {
131
+ out.spread.cj = this.spread.cj.clone(ctx, spec?.mark ? { mark: spec.mark } : {});
132
+ }
133
+ out.closed = this.closed;
134
+ out.optionalKeys = [...this.optionalKeys];
135
+ // console.log('LISTVAL-CLONE', this.canon, '->', out.canon)
136
+ return out;
137
+ }
138
+ get canon() {
139
+ // console.log('LISTVAL-CANON', this.optionalKeys)
140
+ let keys = Object.keys(this.peg);
141
+ return '' +
142
+ // this.errcanon() +
143
+ '[' +
144
+ (this.spread.cj ? '&:' + this.spread.cj.canon +
145
+ (0 < keys.length ? ',' : '') : '') +
146
+ keys
147
+ .map(k => this.optionalKeys.includes(k) ?
148
+ k + '?:' + this.peg[k].canon :
149
+ this.peg[k].canon).join(',') +
150
+ ']';
151
+ }
152
+ gen(ctx) {
153
+ let out = [];
154
+ if (this.mark.type || this.mark.hide) {
155
+ return undefined;
156
+ }
157
+ for (let i = 0; i < this.peg.length; i++) {
158
+ const child = this.peg[i];
159
+ const optional = this.optionalKeys.includes('' + i);
160
+ if (child.isScalar
161
+ || child.isMap
162
+ || child.isList
163
+ || child.isPref
164
+ || child.isRef
165
+ || child.isDisjunct
166
+ || child.isNil) {
167
+ const cval = child.gen(ctx);
168
+ if (optional && (0, Val_1.empty)(cval)) {
169
+ continue;
170
+ }
171
+ out.push(cval);
172
+ }
173
+ else if (child.isNil) {
174
+ ctx.adderr(child);
175
+ }
176
+ else if (!this.optionalKeys.includes('' + i)) {
177
+ (0, err_1.makeNilErr)(ctx, this.closed ? 'listval_required' : 'listval_no_gen', child, undefined);
178
+ break;
179
+ }
180
+ // else optional so we can ignore it
181
+ }
182
+ return out;
183
+ }
184
+ }
185
+ exports.ListVal = ListVal;
186
+ //# sourceMappingURL=ListVal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ListVal.js","sourceRoot":"","sources":["../../src/val/ListVal.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { Val, ValSpec } from '../type';
2
+ import { AontuContext } from '../ctx';
3
+ import { FuncBaseVal } from './FuncBaseVal';
4
+ declare class LowerFuncVal extends FuncBaseVal {
5
+ isLower: boolean;
6
+ constructor(spec: ValSpec, ctx?: AontuContext);
7
+ make(_ctx: AontuContext, spec: ValSpec): Val;
8
+ funcname(): string;
9
+ resolve(ctx: AontuContext | undefined, args: Val[]): Val;
10
+ superior(): Val;
11
+ }
12
+ export { LowerFuncVal, };
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ /* Copyright (c) 2021-2025 Richard Rodger, MIT License */
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.LowerFuncVal = void 0;
5
+ const err_1 = require("../err");
6
+ const ScalarKindVal_1 = require("../val/ScalarKindVal");
7
+ const valutil_1 = require("../val/valutil");
8
+ const FuncBaseVal_1 = require("./FuncBaseVal");
9
+ class LowerFuncVal extends FuncBaseVal_1.FuncBaseVal {
10
+ constructor(spec, ctx) {
11
+ super(spec, ctx);
12
+ this.isLower = true;
13
+ }
14
+ make(_ctx, spec) {
15
+ return new LowerFuncVal(spec);
16
+ }
17
+ funcname() {
18
+ return 'lower';
19
+ }
20
+ resolve(ctx, args) {
21
+ const oldpeg = args?.[0].peg;
22
+ const peg = 'string' === typeof oldpeg ? oldpeg.toLowerCase() :
23
+ 'number' === typeof oldpeg ? Math.floor(oldpeg) :
24
+ undefined;
25
+ const out = this.place(null == peg ?
26
+ (0, err_1.makeNilErr)(ctx, 'invalid-arg', this) :
27
+ (0, valutil_1.makeScalar)(peg));
28
+ return out;
29
+ }
30
+ superior() {
31
+ const arg = this.peg?.[0];
32
+ return arg?.isScalar ?
33
+ this.place(new ScalarKindVal_1.ScalarKindVal({
34
+ peg: arg.kind
35
+ })) :
36
+ super.superior();
37
+ }
38
+ }
39
+ exports.LowerFuncVal = LowerFuncVal;
40
+ //# sourceMappingURL=LowerFuncVal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LowerFuncVal.js","sourceRoot":"","sources":["../../src/val/LowerFuncVal.ts"],"names":[],"mappings":";AAAA,yDAAyD;;;AAYzD,gCAAmC;AAInC,wDAAoD;AACpD,4CAA2C;AAI3C,+CAA2C;AAG3C,MAAM,YAAa,SAAQ,yBAAW;IAGpC,YACE,IAAa,EACb,GAAkB;QAElB,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QANlB,YAAO,GAAG,IAAI,CAAA;IAOd,CAAC;IAGD,IAAI,CAAC,IAAkB,EAAE,IAAa;QACpC,OAAO,IAAI,YAAY,CAAC,IAAI,CAAC,CAAA;IAC/B,CAAC;IAED,QAAQ;QACN,OAAO,OAAO,CAAA;IAChB,CAAC;IAGD,OAAO,CAAC,GAA6B,EAAE,IAAW;QAChD,MAAM,MAAM,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAA;QAC5B,MAAM,GAAG,GAAG,QAAQ,KAAK,OAAO,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;YAC7D,QAAQ,KAAK,OAAO,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC/C,SAAS,CAAA;QACb,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CACpB,IAAI,IAAI,GAAG,CAAC,CAAC;YACX,IAAA,gBAAU,EAAC,GAAG,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC;YACtC,IAAA,oBAAU,EAAC,GAAG,CAAC,CAClB,CAAA;QACD,OAAO,GAAG,CAAA;IACZ,CAAC;IAGD,QAAQ;QACN,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;QACzB,OAAO,GAAG,EAAE,QAAQ,CAAC,CAAC;YACpB,IAAI,CAAC,KAAK,CAAC,IAAI,6BAAa,CAAC;gBAC3B,GAAG,EAAE,GAAG,CAAC,IAAI;aACd,CAAC,CAAC,CAAC,CAAC;YACL,KAAK,CAAC,QAAQ,EAAE,CAAA;IACpB,CAAC;CAEF;AAIC,oCAAY"}