aontu 0.45.1 → 0.48.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/dist/aontu.js +5 -0
- package/dist/aontu.js.map +1 -1
- package/dist/cli.d.ts +9 -0
- package/dist/cli.js +203 -0
- package/dist/cli.js.map +1 -0
- package/dist/err.js +1 -1
- package/dist/err.js.map +1 -1
- package/dist/hints.js +1 -0
- package/dist/hints.js.map +1 -1
- package/dist/lang.d.ts +1 -1
- package/dist/lang.js +45 -18
- package/dist/lang.js.map +1 -1
- package/dist/lsp-server.d.ts +14 -0
- package/dist/lsp-server.js +87 -0
- package/dist/lsp-server.js.map +1 -0
- package/dist/lsp.d.ts +71 -0
- package/dist/lsp.js +375 -0
- package/dist/lsp.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/type.d.ts +1 -1
- package/dist/unify.js +31 -4
- package/dist/unify.js.map +1 -1
- package/dist/utility.js +9 -2
- package/dist/utility.js.map +1 -1
- package/dist/val/BagVal.js +20 -2
- package/dist/val/BagVal.js.map +1 -1
- package/dist/val/DisjunctVal.js +25 -16
- package/dist/val/DisjunctVal.js.map +1 -1
- package/dist/val/IntegerVal.js +1 -0
- package/dist/val/IntegerVal.js.map +1 -1
- package/dist/val/LowerFuncVal.d.ts +1 -1
- package/dist/val/LowerFuncVal.js +1 -1
- package/dist/val/LowerFuncVal.js.map +1 -1
- package/dist/val/MapVal.js +127 -16
- package/dist/val/MapVal.js.map +1 -1
- package/dist/val/NumberVal.js +7 -2
- package/dist/val/NumberVal.js.map +1 -1
- package/dist/val/OpBaseVal.d.ts +1 -1
- package/dist/val/OpBaseVal.js +1 -1
- package/dist/val/OpBaseVal.js.map +1 -1
- package/dist/val/ScalarVal.js +3 -1
- package/dist/val/ScalarVal.js.map +1 -1
- package/dist/val/Val.d.ts +2 -0
- package/dist/val/Val.js +16 -1
- package/dist/val/Val.js.map +1 -1
- package/dist/val/VarVal.js +5 -3
- package/dist/val/VarVal.js.map +1 -1
- package/package.json +25 -13
- package/src/aontu.ts +5 -0
- package/src/cli.ts +193 -0
- package/src/err.ts +1 -1
- package/src/hints.ts +2 -0
- package/src/lang.ts +46 -18
- package/src/lsp-server.ts +109 -0
- package/src/lsp.ts +486 -0
- package/src/type.ts +1 -1
- package/src/unify.ts +33 -4
- package/src/utility.ts +11 -2
- package/src/val/BagVal.ts +22 -2
- package/src/val/DisjunctVal.ts +27 -18
- package/src/val/IntegerVal.ts +1 -0
- package/src/val/LowerFuncVal.ts +1 -1
- package/src/val/MapVal.ts +138 -23
- package/src/val/NumberVal.ts +7 -2
- package/src/val/OpBaseVal.ts +1 -1
- package/src/val/ScalarVal.ts +3 -1
- package/src/val/Val.ts +18 -1
- package/src/val/VarVal.ts +6 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OpBaseVal.js","sourceRoot":"","sources":["../../src/val/OpBaseVal.ts"],"names":[],"mappings":";AAAA,oDAAoD;;;AAQpD,kCAEgB;AAEhB,gCAIe;AAGf,oCAAgC;AAEhC,wCAImB;AAEnB,+BAEc;AAEd,+CAA2C;AAC3C,6CAAyC;AAKzC,MAAM,SAAU,SAAQ,uBAAU;IAGhC,YACE,IAAa,EACb,GAAkB;QAElB,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QANlB,
|
|
1
|
+
{"version":3,"file":"OpBaseVal.js","sourceRoot":"","sources":["../../src/val/OpBaseVal.ts"],"names":[],"mappings":"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"}
|
package/dist/val/ScalarVal.js
CHANGED
|
@@ -51,7 +51,9 @@ class ScalarVal extends Val_1.Val {
|
|
|
51
51
|
return peer?.isScalar ? peer.peg === this.peg : super.same(peer);
|
|
52
52
|
}
|
|
53
53
|
gen(_ctx) {
|
|
54
|
-
|
|
54
|
+
// Normalize negative zero to 0 for deterministic output (JSON has
|
|
55
|
+
// no -0, and the Go port produces 0).
|
|
56
|
+
return Object.is(this.peg, -0) ? 0 : this.peg;
|
|
55
57
|
}
|
|
56
58
|
superior() {
|
|
57
59
|
return this.place(new ScalarKindVal_1.ScalarKindVal({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScalarVal.js","sourceRoot":"","sources":["../../src/val/ScalarVal.ts"],"names":[],"mappings":";AAAA,yDAAyD;;;AAMzD,kCAEgB;AAMhB,wCAGmB;AAEnB,gCAAmC;AAEnC,+BAA2B;AAC3B,mDAA+C;AAI/C,MAAM,SAAU,SAAQ,SAAG;IAQzB,YACE,IAAa,EACb,GAAkB;QAElB,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QATlB,aAAQ,GAAG,IAAI,CAAA;QACf,cAAS,GAAG,IAAI,CAAA;QASd,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;QACrB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,CAAA;QACzB,IAAI,CAAC,EAAE,GAAG,WAAI,CAAA;IAChB,CAAC;IAGD,KAAK,CAAC,GAAiB,EAAE,IAAc;QACrC,IAAI,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE;YACzB,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;SAChB,CAAC,CAAA;QAEF,OAAO,GAAG,CAAA;IACZ,CAAC;IAGD,KAAK,CAAC,IAAS,EAAE,GAAiB;QAChC,MAAM,EAAE,GAAG,GAAG,CAAC,OAAO,IAAI,IAAA,qBAAW,EAAC,GAAG,EAAE,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;QAE7E,IAAI,GAAQ,CAAA;QAEZ,mDAAmD;QACnD,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QAC7B,CAAC;aACI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACpB,GAAG,GAAG,IAAI,CAAA;QACZ,CAAC;aACI,CAAC;YACJ,GAAG,GAAG,IAAA,gBAAU,EAAC,GAAG,EAAE,SAAS;gBAC7B,CAAE,IAAY,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;QACtE,CAAC;QAED,iEAAiE;QAEjE,IAAA,sBAAY,EAAC,EAAE,EAAE,GAAG,CAAC,CAAA;QAErB,OAAO,GAAG,CAAA;IACZ,CAAC;IAGD,IAAI,KAAK;QACP,OAAO,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YACjC,SAAS,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;gBACnC,IAAI,CAAC,GAAW,CAAC,QAAQ,EAAE,CAAA;IAClC,CAAC;IAGD,IAAI,CAAC,IAAS;QACZ,OAAO,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAClE,CAAC;IAGD,GAAG,CAAC,IAAmB;QACrB,OAAO,IAAI,CAAC,GAAG,CAAA;
|
|
1
|
+
{"version":3,"file":"ScalarVal.js","sourceRoot":"","sources":["../../src/val/ScalarVal.ts"],"names":[],"mappings":";AAAA,yDAAyD;;;AAMzD,kCAEgB;AAMhB,wCAGmB;AAEnB,gCAAmC;AAEnC,+BAA2B;AAC3B,mDAA+C;AAI/C,MAAM,SAAU,SAAQ,SAAG;IAQzB,YACE,IAAa,EACb,GAAkB;QAElB,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QATlB,aAAQ,GAAG,IAAI,CAAA;QACf,cAAS,GAAG,IAAI,CAAA;QASd,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;QACrB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,CAAA;QACzB,IAAI,CAAC,EAAE,GAAG,WAAI,CAAA;IAChB,CAAC;IAGD,KAAK,CAAC,GAAiB,EAAE,IAAc;QACrC,IAAI,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE;YACzB,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;SAChB,CAAC,CAAA;QAEF,OAAO,GAAG,CAAA;IACZ,CAAC;IAGD,KAAK,CAAC,IAAS,EAAE,GAAiB;QAChC,MAAM,EAAE,GAAG,GAAG,CAAC,OAAO,IAAI,IAAA,qBAAW,EAAC,GAAG,EAAE,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;QAE7E,IAAI,GAAQ,CAAA;QAEZ,mDAAmD;QACnD,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QAC7B,CAAC;aACI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACpB,GAAG,GAAG,IAAI,CAAA;QACZ,CAAC;aACI,CAAC;YACJ,GAAG,GAAG,IAAA,gBAAU,EAAC,GAAG,EAAE,SAAS;gBAC7B,CAAE,IAAY,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;QACtE,CAAC;QAED,iEAAiE;QAEjE,IAAA,sBAAY,EAAC,EAAE,EAAE,GAAG,CAAC,CAAA;QAErB,OAAO,GAAG,CAAA;IACZ,CAAC;IAGD,IAAI,KAAK;QACP,OAAO,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YACjC,SAAS,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;gBACnC,IAAI,CAAC,GAAW,CAAC,QAAQ,EAAE,CAAA;IAClC,CAAC;IAGD,IAAI,CAAC,IAAS;QACZ,OAAO,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAClE,CAAC;IAGD,GAAG,CAAC,IAAmB;QACrB,kEAAkE;QAClE,sCAAsC;QACtC,OAAO,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAA;IAC/C,CAAC;IAGD,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,6BAAa,CAAC;YAClC,GAAG,EAAE,IAAI,CAAC,IAAI;SACf,CAAC,CAAC,CAAA;IACL,CAAC;CAEF;AAIC,8BAAS"}
|
package/dist/val/Val.d.ts
CHANGED
|
@@ -30,6 +30,7 @@ declare abstract class Val {
|
|
|
30
30
|
isVal: boolean;
|
|
31
31
|
isTop: boolean;
|
|
32
32
|
isNil: boolean;
|
|
33
|
+
isNull: boolean;
|
|
33
34
|
isMap: boolean;
|
|
34
35
|
isList: boolean;
|
|
35
36
|
isScalar: boolean;
|
|
@@ -44,6 +45,7 @@ declare abstract class Val {
|
|
|
44
45
|
isBoolean: boolean;
|
|
45
46
|
isConjunct: boolean;
|
|
46
47
|
isDisjunct: boolean;
|
|
48
|
+
isExpect: boolean;
|
|
47
49
|
isJunction: boolean;
|
|
48
50
|
cjo: number;
|
|
49
51
|
isOp: boolean;
|
package/dist/val/Val.js
CHANGED
|
@@ -27,6 +27,12 @@ exports.SPREAD = SPREAD;
|
|
|
27
27
|
// mutable error array must create their own.
|
|
28
28
|
const EMPTY_ERR = Object.freeze([]);
|
|
29
29
|
exports.EMPTY_ERR = EMPTY_ERR;
|
|
30
|
+
// Process-global, monotonic Val id source. Correctness only requires ids
|
|
31
|
+
// to be unique within a single unify run (fast-path identity checks,
|
|
32
|
+
// `same()`), which holds. It is NOT reset between generate() calls, so in
|
|
33
|
+
// a long-running host (e.g. the LSP) it grows for the process lifetime;
|
|
34
|
+
// that is acceptable — an id is a small number and is never used as a
|
|
35
|
+
// memory key. TODO: switch to the per-run ctx.vc counter (see ctx.ts).
|
|
30
36
|
let ID = 1000;
|
|
31
37
|
class Val {
|
|
32
38
|
get site() {
|
|
@@ -153,7 +159,14 @@ class Val {
|
|
|
153
159
|
v.site.url = this.site.url;
|
|
154
160
|
return v;
|
|
155
161
|
}
|
|
156
|
-
//
|
|
162
|
+
// CONTRACT: implementations should treat `this` and `peer` as
|
|
163
|
+
// immutable and return a new Val. KNOWN EXCEPTION: the MapVal/ListVal
|
|
164
|
+
// fast-path for a TOP peer returns and refines `this` in place (an
|
|
165
|
+
// intentional optimization for the fixpoint loop). The practical
|
|
166
|
+
// consequence is that a parsed/unified tree is SINGLE-USE — do not
|
|
167
|
+
// re-unify or re-generate the same Val, and do not share it across
|
|
168
|
+
// threads. The public Aontu.unify/generate entry points re-parse per
|
|
169
|
+
// call, so this only matters if you hold and reuse a Val yourself.
|
|
157
170
|
unify(_peer, _ctx) { return this; }
|
|
158
171
|
// TODO: indicate marks in some way that is ignored by reparse.
|
|
159
172
|
// Need an annotation/taggins syntax? a:{}/type ?
|
|
@@ -217,6 +230,7 @@ Object.assign(Val.prototype, {
|
|
|
217
230
|
isVal: true,
|
|
218
231
|
isTop: false,
|
|
219
232
|
isNil: false,
|
|
233
|
+
isNull: false,
|
|
220
234
|
isMap: false,
|
|
221
235
|
isList: false,
|
|
222
236
|
isScalar: false,
|
|
@@ -231,6 +245,7 @@ Object.assign(Val.prototype, {
|
|
|
231
245
|
isBoolean: false,
|
|
232
246
|
isConjunct: false,
|
|
233
247
|
isDisjunct: false,
|
|
248
|
+
isExpect: false,
|
|
234
249
|
isJunction: false,
|
|
235
250
|
cjo: 99999,
|
|
236
251
|
isOp: false,
|
package/dist/val/Val.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Val.js","sourceRoot":"","sources":["../../src/val/Val.ts"],"names":[],"mappings":";AAAA,yDAAyD;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"Val.js","sourceRoot":"","sources":["../../src/val/Val.ts"],"names":[],"mappings":";AAAA,yDAAyD;;;;;;;;;;;;;;;AAgdvD,sBAAK;AA9cP,yCAAmC;AAInC,kCAEgB;AAqChB,MAAM,IAAI,GAAG,CAAC,CAAC,CAAA;AAgab,oBAAI;AA9ZN,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAA;AA+Z7B,wBAAM;AA7ZR,yDAAyD;AACzD,4EAA4E;AAC5E,wEAAwE;AACxE,6CAA6C;AAC7C,MAAM,SAAS,GAAU,MAAM,CAAC,MAAM,CAAC,EAAE,CAAqB,CAAA;AA0Z5D,8BAAS;AAvZX,yEAAyE;AACzE,qEAAqE;AACrE,0EAA0E;AAC1E,wEAAwE;AACxE,sEAAsE;AACtE,uEAAuE;AACvE,IAAI,EAAE,GAAG,IAAI,CAAA;AAGb,MAAe,GAAG;IAyDhB,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,KAAK,IAAI,WAAI,EAAE,CAAA;IAClC,CAAC;IAED,IAAI,IAAI,CAAC,CAAO;QACd,IAAI,CAAC,KAAK,GAAG,CAAC,CAAA;IAChB,CAAC;IAwBD,4BAA4B;IAC5B,YAAY,IAAa,EAAE,GAAkB;QAvC7C,OAAE,GAAW,CAAC,CAAA;QACd,SAAI,GAAa,EAAE,CAAA;QAenB,wBAAwB;QACxB,SAAI,GAAY;YACd,IAAI,EAAE,KAAK;YACX,IAAI,EAAE,KAAK;SACZ,CAAA;QAED,uBAAuB;QACvB,QAAG,GAAQ,SAAS,CAAA;QAEpB,0DAA0D;QAC1D,+DAA+D;QAC/D,qCAAqC;QACrC,QAAG,GAAU,SAAS,CAAA;QACtB,YAAO,GAAiB,IAAI,CAAA;QAO5B,2BAAS;QAIP,uBAAA,IAAI,YAAQ,GAAG,MAAA,CAAA;QAEf,IAAI,CAAC,GAAG,GAAG,IAAI,EAAE,GAAG,CAAA;QAEpB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5B,IAAI,MAAM,GAAI,IAAI,CAAC,GAAW,CAAC,MAAM,CAAC,CAAA;YACtC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,KAAK,CAAC,CAAC,CAC7C;YAAE,IAAI,CAAC,GAAW,CAAC,MAAM,CAAC,GAAG,MAAM,CAAA;QACxC,CAAC;QAED,kEAAkE;QAClE,+DAA+D;QAC/D,8BAA8B;QAC9B,IAAI,CAAC,IAAI,GAAG,IAAI,EAAE,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,EAAE,CAAA;QAEzC,uBAAuB;QACvB,gDAAgD;QAChD,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,CAAA;QAEd,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAA;QAClC,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAA;QAElC,qEAAqE;IACvE,CAAC;IAGD,GAAG;QACD,OAAO,uBAAA,IAAI,gBAAK,CAAA;IAClB,CAAC;IAGD,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,EAAE,KAAK,IAAI,CAAA;IACzB,CAAC;IAGD,IAAI,CAAC,IAAS;QACZ,OAAO,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAA;IACnD,CAAC;IAGD,KAAK,CAAC,GAAiB,EAAE,IAAc;QACrC,IAAI,IAAI,GAAG,IAAI,EAAE,IAAI,CAAA;QACrB,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;YACjB,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;YAChC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAA;YAC1C,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAA;QAC9C,CAAC;QAED,iEAAiE;QACjE,kEAAkE;QAClE,4DAA4D;QAC5D,uBAAuB;QACvB,IAAI,QAAQ,GAAG;YACb,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACpD,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;YACf,IAAI;SACL,CAAA;QAED,IAAI,GAAG,GAAG,IAAK,IAAY;aACxB,WAAW,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAA;QAE7B,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAA;QAElC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,EAAE,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAA;QAC/C,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,EAAE,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAA;QAC/C,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,EAAE,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,CAAA;QAE/C,GAAG,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC,CAAA;QAC5D,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,IAAI,IAAI,CAAC,CAAA;QAC/D,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,IAAI,IAAI,CAAC,CAAA;QAE/D,OAAO,GAAG,CAAA;IACZ,CAAC;IAGD,mEAAmE;IACnE,+DAA+D;IAC/D,oEAAoE;IACpE,WAAW,CAAC,GAAiB;QAC3B,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACxB,CAAC;IAUD,IAAI,eAAe;QACjB,IAAI,IAAI,CAAC,gBAAgB,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC,gBAAgB,CAAA;QACrE,IAAI,GAAG,GACL,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,UAAU;YAC/C,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,WAAW,CAAA;QACrC,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAA;YACpB,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;gBACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBACpC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;oBAChB,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,eAAe,EAAE,CAAC;wBAAC,GAAG,GAAG,IAAI,CAAC;wBAAC,MAAK;oBAAC,CAAC;gBAC9D,CAAC;YACH,CAAC;iBACI,IAAI,GAAG,IAAI,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;gBAChD,KAAK,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC;oBACpB,MAAM,CAAC,GAAI,GAAW,CAAC,CAAC,CAAC,CAAA;oBACzB,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,eAAe,EAAE,CAAC;wBAAC,GAAG,GAAG,IAAI,CAAC;wBAAC,MAAK;oBAAC,CAAC;gBAC9D,CAAC;YACH,CAAC;YACD,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,MAAM,QAAQ,GAAI,IAAY,CAAC,MAAM,EAAE,EAAqB,CAAA;gBAC5D,IAAI,QAAQ,IAAI,QAAQ,CAAC,eAAe;oBAAE,GAAG,GAAG,IAAI,CAAA;YACtD,CAAC;QACH,CAAC;QACD,IAAI,CAAC,gBAAgB,GAAG,GAAG,CAAA;QAC3B,OAAO,GAAG,CAAA;IACZ,CAAC;IAGD,KAAK,CAAC,CAAM;QACV,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAA;QAC1B,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAA;QAC1B,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAA;QAC1B,OAAO,CAAC,CAAA;IACV,CAAC;IAED,8DAA8D;IAC9D,sEAAsE;IACtE,mEAAmE;IACnE,iEAAiE;IACjE,mEAAmE;IACnE,mEAAmE;IACnE,qEAAqE;IACrE,mEAAmE;IACnE,KAAK,CAAC,KAAU,EAAE,IAAkB,IAAS,OAAO,IAAI,CAAA,CAAC,CAAC;IAE1D,+DAA+D;IAC/D,iDAAiD;IACjD,IAAI,KAAK,KAAa,OAAO,EAAE,CAAA,CAAC,CAAC;IAGjC,QAAQ;QACN,OAAO,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,CAAA;IACjE,CAAC;IAGD,GAAG,CAAC,IAAkB;QACpB,OAAO,SAAS,CAAA;IAClB,CAAC;IAGD,OAAO;QACL,IAAI,CAAC,EAAE,GAAG,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAA;IACjD,CAAC;IAMD,4BAAC,mBAAO,CAAC,MAAM,EAAC,CAAC,CAAS,EAAE,KAAU,EAAE,QAAa;QACnD,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;IACxB,CAAC;IAED,OAAO,CAAC,CAAU;QAChB,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QACtB,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAA;QAEzE,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QAEpD,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAA;QAEvC,CAAC,CAAC,IAAI,CAAC;YACL,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE;YACtC,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;SACrE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;QAEnC,sCAAsC;QACtC,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;QACjC,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC;YAC/B,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,CAAA;QACpB,CAAC;QAED,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAEX,IAAI,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC;YACpB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QACjC,CAAC;aACI,IAAI,IAAI,IAAI,IAAI,CAAC,GAAG,IAAI,QAAQ,KAAK,OAAO,IAAI,CAAC,GAAG;YACtD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAS,EAAE,KAAK,EAAE,CAAC;YACnD,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QACrC,CAAC;aACI,IAAI,UAAU,KAAK,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;YACxC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACvB,CAAC;aACI,CAAC;YACJ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,CAAA;QACtC,CAAC;QAED,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAEX,MAAM,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAEtB,OAAO,GAAG,CAAA;IACZ,CAAC;IAGD,UAAU,CAAC,EAAW;QACpB,OAAO,EAAE,CAAA;IACX,CAAC;CAEF;AA8FC,kBAAG;AA3FL,+DAA+D;AAC/D,sEAAsE;AACtE,wEAAwE;AACxE,wEAAwE;AACxE,iEAAiE;AACjE,6CAA6C;AAC7C,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE;IAC3B,KAAK,EAAE,IAAI;IAEX,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,KAAK;IACZ,MAAM,EAAE,KAAK;IACb,KAAK,EAAE,KAAK;IACZ,MAAM,EAAE,KAAK;IACb,QAAQ,EAAE,KAAK;IACf,YAAY,EAAE,KAAK;IACnB,KAAK,EAAE,KAAK;IACZ,MAAM,EAAE,KAAK;IACb,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,KAAK;IACZ,QAAQ,EAAE,KAAK;IACf,SAAS,EAAE,KAAK;IAChB,QAAQ,EAAE,KAAK;IACf,SAAS,EAAE,KAAK;IAChB,UAAU,EAAE,KAAK;IACjB,UAAU,EAAE,KAAK;IACjB,QAAQ,EAAE,KAAK;IACf,UAAU,EAAE,KAAK;IAEjB,GAAG,EAAE,KAAK;IAEV,IAAI,EAAE,KAAK;IACX,QAAQ,EAAE,KAAK;IAEf,MAAM,EAAE,KAAK;IACb,WAAW,EAAE,KAAK;IAClB,UAAU,EAAE,KAAK;IACjB,UAAU,EAAE,KAAK;IACjB,UAAU,EAAE,KAAK;IACjB,SAAS,EAAE,KAAK;IAChB,WAAW,EAAE,KAAK;IAClB,UAAU,EAAE,KAAK;IACjB,UAAU,EAAE,KAAK;IACjB,UAAU,EAAE,KAAK;IACjB,WAAW,EAAE,KAAK;IAClB,UAAU,EAAE,KAAK;IACjB,WAAW,EAAE,KAAK;IAElB,SAAS,EAAE,KAAK;CACjB,CAAC,CAAA;AAGF,SAAS,UAAU,CAAC,GAAQ,EAAE,CAAS;IACrC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IAC7B,OAAO,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;QAChC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;YACpE,IAAI,GAAG,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC;QACxB,CAAC,GAAG;YACF,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CACjC,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,kBAAkB;gBAClD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAC/B,CAAC,IAAI,CAAC,GAAG,CAAC;YACX,IAAI,GAAG,MAAM,GAAG,GAAG,CAAC,CACvB,CAAA;AACH,CAAC;AAED,SAAS,MAAM,CAAC,CAAS;IACvB,OAAO,CACL,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;SACR,OAAO,CAAC,6BAA6B,EAAE,EAAE,CAAC;IAC7C,+BAA+B;KAChC,CAAA;AACH,CAAC;AAGD,SAAS,KAAK,CAAC,CAAM;IACnB,OAAO,CACL,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;WACjC,CAAC,IAAI,IAAI,CAAC,IAAI,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;WACnE,KAAK,CACT,CAAA;AACH,CAAC"}
|
package/dist/val/VarVal.js
CHANGED
|
@@ -40,12 +40,14 @@ class VarVal extends FeatureVal_1.FeatureVal {
|
|
|
40
40
|
if (!(nameVal.isRef) && type_1.DONE === nameVal.dc) {
|
|
41
41
|
if (nameVal instanceof StringVal_1.StringVal) {
|
|
42
42
|
let found = ctx.vars[nameVal.peg];
|
|
43
|
+
// TODO: support complex values
|
|
44
|
+
const ft = typeof found;
|
|
45
|
+
// Single ladder: a missing var must report `unknown_var` and not
|
|
46
|
+
// fall through to the `invalid_var_kind` default below.
|
|
43
47
|
if (undefined === found) {
|
|
44
48
|
out = (0, err_1.makeNilErr)(ctx, 'unknown_var', this, peer);
|
|
45
49
|
}
|
|
46
|
-
|
|
47
|
-
const ft = typeof found;
|
|
48
|
-
if (null === found) {
|
|
50
|
+
else if (null === found) {
|
|
49
51
|
out = this.place(new NullVal_1.NullVal({ peg: null }));
|
|
50
52
|
}
|
|
51
53
|
else if ('string' === ft) {
|
package/dist/val/VarVal.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VarVal.js","sourceRoot":"","sources":["../../src/val/VarVal.ts"],"names":[],"mappings":";AAAA,yDAAyD;;;AASzD,kCAEgB;AAEhB,gCAIe;AAQf,2CAAuC;AAEvC,6CAAyC;AACzC,uCAAmC;AACnC,6CAAyC;AACzC,2CAAuC;AACvC,6CAAyC;AAGzC,wCAImB;AAGnB,qDAAqD;AAErD,MAAM,MAAO,SAAQ,uBAAU;IAG7B,YACE,IAAa,EACb,GAAkB;QAElB,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QANlB,UAAK,GAAG,IAAI,CAAA;IAOZ,CAAC;IAGD,KAAK,CAAC,IAAS,EAAE,GAAiB;QAChC,MAAM,EAAE,GAAG,GAAG,CAAC,OAAO,IAAI,IAAA,qBAAW,EAAC,GAAG,EAAE,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;QAE1E,IAAI,GAAQ,CAAA;QAEZ,IAAI,OAAO,CAAA;QAEX,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;YACnB,qCAAqC;YACrC,oCAAoC;YACpC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;gBACnB,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAA;gBACxB,OAAO,GAAG,IAAI,CAAC,GAAG,CAAA;YACpB,CAAC;iBACI,CAAC;gBACJ,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,IAAA,YAAE,EAAC,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;YAClF,CAAC;QACH,CAAC;aACI,CAAC;YACJ,6BAA6B;YAC7B,OAAO,GAAG,IAAI,qBAAS,CAAC,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,GAAG,CAAC,CAAA;QACtD,CAAC;QAED,6DAA6D;QAC7D,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,WAAI,KAAK,OAAO,CAAC,EAAE,EAAE,CAAC;YAC5C,IAAI,OAAO,YAAY,qBAAS,EAAE,CAAC;gBACjC,IAAI,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"VarVal.js","sourceRoot":"","sources":["../../src/val/VarVal.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "aontu",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.48.0",
|
|
4
4
|
"main": "dist/aontu.js",
|
|
5
5
|
"type": "commonjs",
|
|
6
6
|
"types": "dist/aontu.d.ts",
|
|
7
|
+
"bin": {
|
|
8
|
+
"aontu": "dist/cli.js",
|
|
9
|
+
"aontu-lsp": "dist/lsp-server.js"
|
|
10
|
+
},
|
|
7
11
|
"description": "Unifier.",
|
|
8
12
|
"homepage": "https://github.com/rjrodger/aontu",
|
|
9
13
|
"keywords": [
|
|
@@ -16,19 +20,26 @@
|
|
|
16
20
|
},
|
|
17
21
|
"scripts": {
|
|
18
22
|
"test": "node --enable-source-maps --test \"dist-test/**/*.test.js\"",
|
|
23
|
+
"test-cov": "node --enable-source-maps --experimental-test-coverage --test \"dist-test/**/*.test.js\"",
|
|
19
24
|
"test-some": "node --enable-source-maps --test-name-pattern=\"$TEST_PATTERN\" --test \"dist-test/**/*.test.js\"",
|
|
20
25
|
"watch": "tsc --build src test -w",
|
|
21
26
|
"build": "tsc --build src test",
|
|
22
27
|
"clean": "rm -rf dist dist-test node_modules yarn.lock package-lock.json",
|
|
23
28
|
"reset": "npm run clean && npm i && npm run build && npm test",
|
|
24
29
|
"version": "node -r fs -e \"v=require('./package.json').version;s=fs.readFileSync('./aontu.ts').toString();if(!s.includes('VERSION = \\''+v+'\\'')){s=s.replace(/VERSION = '.*?'/,'VERSION = \\''+v+'\\'');fs.writeFileSync('./aontu.ts',s)}\"",
|
|
30
|
+
"repo-bump": "npm version patch --no-git-tag-version && node -e \"console.log('bumped to v' + require('./package.json').version + ' (package.json only - commit via repo-tag / repo-release)')\"",
|
|
25
31
|
"repo-tag": "REPO_VERSION=`node -e \"console.log(require('./package').version)\"` && echo TAG: v$REPO_VERSION && git commit -a -m v$REPO_VERSION && git push && git tag v$REPO_VERSION && git push --tags;",
|
|
32
|
+
"repo-tag-dry": "REPO_VERSION=`node -e \"console.log(require('./package').version)\"` && echo \"[dry-run] TAG: v$REPO_VERSION\" && if git rev-parse -q --verify refs/tags/v$REPO_VERSION >/dev/null; then echo \"[dry-run] WARNING: tag v$REPO_VERSION already exists - bump the version first\"; else echo \"[dry-run] would commit -a, push, tag v$REPO_VERSION and push --tags; nothing done\"; fi && git status --short",
|
|
26
33
|
"repo-publish": "npm run clean && npm i && npm run repo-publish-quick",
|
|
27
|
-
"repo-publish-
|
|
34
|
+
"repo-publish-dry": "npm run clean && npm i && npm run repo-publish-quick-dry",
|
|
35
|
+
"repo-publish-quick": "npm run build && npm run test && npm publish --registry https://registry.npmjs.org --access=public",
|
|
36
|
+
"repo-publish-quick-dry": "npm run build && npm run test && ( npm publish --dry-run --registry https://registry.npmjs.org --access=public || echo \"[dry-run] npm publish refused (see npm error above) - usually the version is already published; bump package.json before a real release\" )",
|
|
37
|
+
"repo-release": "npm run repo-publish && npm run repo-tag",
|
|
38
|
+
"repo-release-dry": "npm run repo-publish-quick-dry && npm run repo-tag-dry"
|
|
28
39
|
},
|
|
29
40
|
"license": "MIT",
|
|
30
41
|
"engines": {
|
|
31
|
-
"node": ">=
|
|
42
|
+
"node": ">=24"
|
|
32
43
|
},
|
|
33
44
|
"files": [
|
|
34
45
|
"src",
|
|
@@ -36,22 +47,23 @@
|
|
|
36
47
|
"LICENSE"
|
|
37
48
|
],
|
|
38
49
|
"dependencies": {
|
|
39
|
-
"@
|
|
40
|
-
"@
|
|
41
|
-
"@
|
|
42
|
-
"@jsonic
|
|
43
|
-
"
|
|
50
|
+
"@tabnas/debug": "0.2.0",
|
|
51
|
+
"@tabnas/directive": "0.2.0",
|
|
52
|
+
"@tabnas/expr": "0.2.0",
|
|
53
|
+
"@tabnas/jsonic": "0.2.0",
|
|
54
|
+
"@tabnas/multisource": "0.2.0",
|
|
55
|
+
"@tabnas/path": "0.2.0"
|
|
44
56
|
},
|
|
45
57
|
"devDependencies": {
|
|
46
|
-
"@types/node": "
|
|
47
|
-
"memfs": "4.
|
|
58
|
+
"@types/node": "26.1.0",
|
|
59
|
+
"memfs": "4.59.0",
|
|
48
60
|
"typescript": "6.0.3"
|
|
49
61
|
},
|
|
50
62
|
"aliasify": {
|
|
51
63
|
"aliases": {
|
|
52
|
-
"@
|
|
53
|
-
"@
|
|
54
|
-
"@
|
|
64
|
+
"@tabnas/multisource/resolver/file": "@tabnas/multisource/dist/resolver/file.js",
|
|
65
|
+
"@tabnas/multisource/resolver/pkg": "@tabnas/multisource/dist/resolver/pkg.js",
|
|
66
|
+
"@tabnas/multisource/resolver/mem": "@tabnas/multisource/dist/resolver/mem.js"
|
|
55
67
|
}
|
|
56
68
|
}
|
|
57
69
|
}
|
package/src/aontu.ts
CHANGED
|
@@ -35,6 +35,11 @@ class Aontu {
|
|
|
35
35
|
|
|
36
36
|
|
|
37
37
|
// Parse source into a matching Val AST, not yet unified.
|
|
38
|
+
//
|
|
39
|
+
// NOTE: the returned Val is SINGLE-USE — unify()/generate() refine the
|
|
40
|
+
// tree in place (see Val.unify), so do not unify or generate the same
|
|
41
|
+
// parsed Val more than once, and do not share it across threads. Call
|
|
42
|
+
// parse() again for a fresh tree.
|
|
38
43
|
parse(src: string, opts?: AontuOptions, ac?: AontuContext): Val | undefined {
|
|
39
44
|
let out: Val | undefined
|
|
40
45
|
let errs: any[] = []
|
package/src/cli.ts
ADDED
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/* Copyright (c) 2025 Richard Rodger, MIT License */
|
|
3
|
+
|
|
4
|
+
// Command-line interface for Aontu.
|
|
5
|
+
//
|
|
6
|
+
// aontu [options] [file]
|
|
7
|
+
//
|
|
8
|
+
// With a file argument, the file is evaluated and the result printed.
|
|
9
|
+
// With no file on an interactive terminal, a REPL is started. With no
|
|
10
|
+
// file and piped input, the source is read from stdin. See HELP below.
|
|
11
|
+
|
|
12
|
+
import * as Fs from 'node:fs'
|
|
13
|
+
import * as Path from 'node:path'
|
|
14
|
+
import * as Readline from 'node:readline'
|
|
15
|
+
|
|
16
|
+
import { Aontu, AontuError } from './aontu'
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
type Mode = 'json' | 'canon'
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
const HELP = `Usage: aontu [options] [file]
|
|
23
|
+
|
|
24
|
+
Evaluate an Aontu source file and print the result as JSON.
|
|
25
|
+
With no file on an interactive terminal, start a REPL.
|
|
26
|
+
With no file and piped input, read the source from stdin.
|
|
27
|
+
|
|
28
|
+
Options:
|
|
29
|
+
-c, --canon Print the canonical form instead of generated JSON
|
|
30
|
+
-h, --help Show this help and exit
|
|
31
|
+
-v, --version Print the version and exit
|
|
32
|
+
|
|
33
|
+
REPL commands:
|
|
34
|
+
:help Show REPL help
|
|
35
|
+
:canon Switch to canonical-form output
|
|
36
|
+
:json Switch to JSON output
|
|
37
|
+
:quit, :exit Exit the REPL (or press Ctrl-D)
|
|
38
|
+
`
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
function version(): string {
|
|
42
|
+
try {
|
|
43
|
+
const txt = Fs.readFileSync(Path.join(__dirname, '..', 'package.json'), 'utf8')
|
|
44
|
+
return JSON.parse(txt).version ?? '0.0.0'
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
return '0.0.0'
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
// Evaluate source, returning either the rendered output or the error
|
|
53
|
+
// message. Never throws.
|
|
54
|
+
function evalSource(
|
|
55
|
+
aontu: Aontu,
|
|
56
|
+
src: string,
|
|
57
|
+
mode: Mode,
|
|
58
|
+
): { ok: boolean; text: string } {
|
|
59
|
+
try {
|
|
60
|
+
const text = 'canon' === mode
|
|
61
|
+
? aontu.unify(src).canon
|
|
62
|
+
: JSON.stringify(aontu.generate(src), null, 2)
|
|
63
|
+
return { ok: true, text }
|
|
64
|
+
}
|
|
65
|
+
catch (err: any) {
|
|
66
|
+
const msg = (err instanceof AontuError || true === err?.aontu)
|
|
67
|
+
? err.message
|
|
68
|
+
: String(err?.message ?? err)
|
|
69
|
+
return { ok: false, text: msg }
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
function runFile(file: string, mode: Mode): number {
|
|
75
|
+
let src: string
|
|
76
|
+
try {
|
|
77
|
+
src = Fs.readFileSync(file, 'utf8')
|
|
78
|
+
}
|
|
79
|
+
catch (err: any) {
|
|
80
|
+
process.stderr.write(`aontu: cannot read ${file}: ${err.message}\n`)
|
|
81
|
+
return 1
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
const aontu = new Aontu({ path: Path.resolve(file) })
|
|
85
|
+
const res = evalSource(aontu, src, mode)
|
|
86
|
+
;(res.ok ? process.stdout : process.stderr).write(res.text + '\n')
|
|
87
|
+
return res.ok ? 0 : 1
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
function runStdin(mode: Mode): Promise<number> {
|
|
92
|
+
return new Promise((resolve) => {
|
|
93
|
+
let src = ''
|
|
94
|
+
process.stdin.setEncoding('utf8')
|
|
95
|
+
process.stdin.on('data', (d) => (src += d))
|
|
96
|
+
process.stdin.on('end', () => {
|
|
97
|
+
const res = evalSource(new Aontu(), src, mode)
|
|
98
|
+
;(res.ok ? process.stdout : process.stderr).write(res.text + '\n')
|
|
99
|
+
resolve(res.ok ? 0 : 1)
|
|
100
|
+
})
|
|
101
|
+
})
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
function runRepl(initialMode: Mode): void {
|
|
106
|
+
let mode = initialMode
|
|
107
|
+
const aontu = new Aontu()
|
|
108
|
+
const rl = Readline.createInterface({
|
|
109
|
+
input: process.stdin,
|
|
110
|
+
output: process.stdout,
|
|
111
|
+
prompt: 'aontu> ',
|
|
112
|
+
})
|
|
113
|
+
|
|
114
|
+
process.stdout.write(
|
|
115
|
+
`Aontu v${version()} REPL — :help for commands, :quit to exit\n`)
|
|
116
|
+
rl.prompt()
|
|
117
|
+
|
|
118
|
+
rl.on('line', (line) => {
|
|
119
|
+
const s = line.trim()
|
|
120
|
+
|
|
121
|
+
if ('' === s) {
|
|
122
|
+
rl.prompt()
|
|
123
|
+
return
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
if (s.startsWith(':')) {
|
|
127
|
+
switch (s) {
|
|
128
|
+
case ':help': process.stdout.write(HELP); break
|
|
129
|
+
case ':canon': mode = 'canon'; process.stdout.write('canon output\n'); break
|
|
130
|
+
case ':json': mode = 'json'; process.stdout.write('json output\n'); break
|
|
131
|
+
case ':quit': case ':exit': rl.close(); return
|
|
132
|
+
default: process.stdout.write(`unknown command: ${s} (try :help)\n`)
|
|
133
|
+
}
|
|
134
|
+
rl.prompt()
|
|
135
|
+
return
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
const res = evalSource(aontu, s, mode)
|
|
139
|
+
process.stdout.write(res.text + '\n')
|
|
140
|
+
rl.prompt()
|
|
141
|
+
})
|
|
142
|
+
|
|
143
|
+
rl.on('close', () => {
|
|
144
|
+
process.stdout.write('\n')
|
|
145
|
+
process.exit(0)
|
|
146
|
+
})
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
function main(argv: string[]): void {
|
|
151
|
+
let mode: Mode = 'json'
|
|
152
|
+
let file: string | undefined
|
|
153
|
+
|
|
154
|
+
for (const arg of argv.slice(2)) {
|
|
155
|
+
if ('-c' === arg || '--canon' === arg) {
|
|
156
|
+
mode = 'canon'
|
|
157
|
+
}
|
|
158
|
+
else if ('-h' === arg || '--help' === arg) {
|
|
159
|
+
process.stdout.write(HELP)
|
|
160
|
+
process.exit(0)
|
|
161
|
+
}
|
|
162
|
+
else if ('-v' === arg || '--version' === arg) {
|
|
163
|
+
process.stdout.write(version() + '\n')
|
|
164
|
+
process.exit(0)
|
|
165
|
+
}
|
|
166
|
+
else if (arg.startsWith('-')) {
|
|
167
|
+
process.stderr.write(`aontu: unknown option ${arg} (try --help)\n`)
|
|
168
|
+
process.exit(2)
|
|
169
|
+
}
|
|
170
|
+
else {
|
|
171
|
+
file = arg
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
if (null != file) {
|
|
176
|
+
process.exit(runFile(file, mode))
|
|
177
|
+
}
|
|
178
|
+
else if (process.stdin.isTTY) {
|
|
179
|
+
runRepl(mode)
|
|
180
|
+
}
|
|
181
|
+
else {
|
|
182
|
+
runStdin(mode).then((code) => process.exit(code))
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
|
|
187
|
+
// Only run when invoked as a program, not when imported (e.g. by tests).
|
|
188
|
+
if (require.main === module) {
|
|
189
|
+
main(process.argv)
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
|
|
193
|
+
export { evalSource, main }
|
package/src/err.ts
CHANGED
package/src/hints.ts
CHANGED
|
@@ -109,6 +109,8 @@ const hints: Record<string, string> = {
|
|
|
109
109
|
'|:empty': 'Empty disjunction. The disjunction has no valid alternatives.',
|
|
110
110
|
'|:empty-dist': 'Empty disjunction distribution. All alternatives in the disjunction are invalid.',
|
|
111
111
|
|
|
112
|
+
'max_depth': 'Input nesting is too deep to process safely.',
|
|
113
|
+
|
|
112
114
|
// Function errors (dynamic patterns)
|
|
113
115
|
'func': 'Function operation failed. See the specific function name for details.',
|
|
114
116
|
'make': 'Failed to create a new value. The make operation could not construct the value.',
|