aontu 0.40.0 → 0.42.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 +7 -0
- package/dist/aontu.js.map +1 -1
- package/dist/ctx.d.ts +14 -2
- package/dist/ctx.js +56 -9
- package/dist/ctx.js.map +1 -1
- package/dist/err.js +36 -15
- package/dist/err.js.map +1 -1
- package/dist/lang.d.ts +5 -1
- package/dist/lang.js +100 -24
- package/dist/lang.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/type.d.ts +5 -0
- package/dist/type.js.map +1 -1
- package/dist/unify.js +372 -55
- package/dist/unify.js.map +1 -1
- package/dist/utility.js +6 -2
- package/dist/utility.js.map +1 -1
- package/dist/val/BagVal.d.ts +0 -3
- package/dist/val/BagVal.js +6 -6
- package/dist/val/BagVal.js.map +1 -1
- package/dist/val/ConjunctVal.d.ts +1 -1
- package/dist/val/ConjunctVal.js +138 -15
- package/dist/val/ConjunctVal.js.map +1 -1
- package/dist/val/CopyFuncVal.js +3 -2
- package/dist/val/CopyFuncVal.js.map +1 -1
- package/dist/val/DisjunctVal.js +40 -10
- package/dist/val/DisjunctVal.js.map +1 -1
- package/dist/val/ExpectVal.js +17 -4
- package/dist/val/ExpectVal.js.map +1 -1
- package/dist/val/FuncBaseVal.js +2 -2
- package/dist/val/FuncBaseVal.js.map +1 -1
- package/dist/val/IntegerVal.js +1 -1
- package/dist/val/IntegerVal.js.map +1 -1
- package/dist/val/JunctionVal.d.ts +1 -0
- package/dist/val/JunctionVal.js +6 -1
- package/dist/val/JunctionVal.js.map +1 -1
- package/dist/val/KeyFuncVal.js +0 -2
- package/dist/val/KeyFuncVal.js.map +1 -1
- package/dist/val/ListVal.d.ts +1 -0
- package/dist/val/ListVal.js +36 -65
- package/dist/val/ListVal.js.map +1 -1
- package/dist/val/MapVal.d.ts +3 -2
- package/dist/val/MapVal.js +71 -91
- package/dist/val/MapVal.js.map +1 -1
- package/dist/val/MoveFuncVal.d.ts +2 -1
- package/dist/val/MoveFuncVal.js +78 -13
- package/dist/val/MoveFuncVal.js.map +1 -1
- package/dist/val/NilVal.d.ts +2 -1
- package/dist/val/NilVal.js +15 -1
- package/dist/val/NilVal.js.map +1 -1
- package/dist/val/OpBaseVal.js +1 -1
- package/dist/val/OpBaseVal.js.map +1 -1
- package/dist/val/PathFuncVal.js +25 -4
- package/dist/val/PathFuncVal.js.map +1 -1
- package/dist/val/{RefVal.d.ts → PathVal.d.ts} +4 -3
- package/dist/val/{RefVal.js → PathVal.js} +75 -77
- package/dist/val/PathVal.js.map +1 -0
- package/dist/val/PlusOpVal.d.ts +1 -1
- package/dist/val/PrefVal.js +20 -7
- package/dist/val/PrefVal.js.map +1 -1
- package/dist/val/SpreadVal.d.ts +20 -0
- package/dist/val/SpreadVal.js +194 -0
- package/dist/val/SpreadVal.js.map +1 -0
- package/dist/val/Val.d.ts +4 -1
- package/dist/val/Val.js +88 -44
- package/dist/val/Val.js.map +1 -1
- package/dist/val/VarVal.js +3 -3
- package/dist/val/VarVal.js.map +1 -1
- package/package.json +6 -7
- package/src/aontu.ts +9 -1
- package/src/ctx.ts +95 -11
- package/src/err.ts +37 -17
- package/src/lang.ts +113 -23
- package/src/tsconfig.json +2 -1
- package/src/type.ts +5 -0
- package/src/unify.ts +390 -64
- package/src/utility.ts +5 -2
- package/src/val/BagVal.ts +6 -7
- package/src/val/ConjunctVal.ts +133 -15
- package/src/val/CopyFuncVal.ts +3 -2
- package/src/val/DisjunctVal.ts +43 -11
- package/src/val/ExpectVal.ts +19 -5
- package/src/val/FuncBaseVal.ts +2 -2
- package/src/val/IntegerVal.ts +1 -1
- package/src/val/JunctionVal.ts +5 -1
- package/src/val/KeyFuncVal.ts +0 -3
- package/src/val/ListVal.ts +40 -86
- package/src/val/MapVal.ts +78 -119
- package/src/val/MoveFuncVal.ts +79 -14
- package/src/val/NilVal.ts +17 -1
- package/src/val/OpBaseVal.ts +1 -1
- package/src/val/PathFuncVal.ts +29 -4
- package/src/val/PathVal.ts +435 -0
- package/src/val/PrefVal.ts +21 -8
- package/src/val/{RefVal.ts → RefVal.ts.old} +31 -20
- package/src/val/SpreadVal.ts +275 -0
- package/src/val/Val.ts +141 -50
- package/src/val/VarVal.ts +3 -3
- package/dist/val/RefVal.js.map +0 -1
package/dist/val/Val.js
CHANGED
|
@@ -37,42 +37,6 @@ class Val {
|
|
|
37
37
|
}
|
|
38
38
|
// TODO: Site needed in ctor
|
|
39
39
|
constructor(spec, ctx) {
|
|
40
|
-
this.isVal = true;
|
|
41
|
-
this.isTop = false;
|
|
42
|
-
this.isNil = false;
|
|
43
|
-
this.isMap = false;
|
|
44
|
-
this.isList = false;
|
|
45
|
-
this.isScalar = false;
|
|
46
|
-
this.isScalarKind = false;
|
|
47
|
-
this.isRef = false;
|
|
48
|
-
this.isPref = false;
|
|
49
|
-
this.isVar = false;
|
|
50
|
-
this.isBag = false;
|
|
51
|
-
this.isNumber = false;
|
|
52
|
-
this.isInteger = false;
|
|
53
|
-
this.isString = false;
|
|
54
|
-
this.isBoolean = false;
|
|
55
|
-
this.isConjunct = false;
|
|
56
|
-
this.isDisjunct = false;
|
|
57
|
-
this.isJunction = false;
|
|
58
|
-
// Conjunct sort order. Lower values sort first in norm().
|
|
59
|
-
this.cjo = 99999;
|
|
60
|
-
this.isOp = false;
|
|
61
|
-
this.isPlusOp = false;
|
|
62
|
-
this.isFunc = false;
|
|
63
|
-
this.isCloseFunc = false;
|
|
64
|
-
this.isCopyFunc = false;
|
|
65
|
-
this.isHideFunc = false;
|
|
66
|
-
this.isMoveFunc = false;
|
|
67
|
-
this.isKeyFunc = false;
|
|
68
|
-
this.isLowerFunc = false;
|
|
69
|
-
this.isOpenFunc = false;
|
|
70
|
-
this.isPathFunc = false;
|
|
71
|
-
this.isPrefFunc = false;
|
|
72
|
-
this.isSuperFunc = false;
|
|
73
|
-
this.isTypeFunc = false;
|
|
74
|
-
this.isUpperFunc = false;
|
|
75
|
-
this.isGenable = false;
|
|
76
40
|
this.dc = 0;
|
|
77
41
|
this.path = [];
|
|
78
42
|
// Map of boolean flags.
|
|
@@ -92,10 +56,16 @@ class Val {
|
|
|
92
56
|
this.peg = spec?.peg;
|
|
93
57
|
if (Array.isArray(this.peg)) {
|
|
94
58
|
let spread = this.peg[SPREAD];
|
|
95
|
-
|
|
59
|
+
if (this.peg.includes(undefined)) {
|
|
60
|
+
this.peg = this.peg.filter(n => undefined !== n);
|
|
61
|
+
}
|
|
62
|
+
;
|
|
96
63
|
this.peg[SPREAD] = spread;
|
|
97
64
|
}
|
|
98
|
-
|
|
65
|
+
// spec.path takes precedence over ctx.path: lets callers (notably
|
|
66
|
+
// Val.clone) specify the target path without paying for a full
|
|
67
|
+
// ctx.clone just to carry it.
|
|
68
|
+
this.path = spec?.path ?? ctx?.path ?? [];
|
|
99
69
|
// TODO: make this work
|
|
100
70
|
// this.id = spec?.id ?? (ctx ? ++ctx.vc : ++ID)
|
|
101
71
|
this.id = ++ID;
|
|
@@ -113,23 +83,24 @@ class Val {
|
|
|
113
83
|
return null == peer ? false : this.id === peer.id;
|
|
114
84
|
}
|
|
115
85
|
clone(ctx, spec) {
|
|
116
|
-
let cloneCtx;
|
|
117
86
|
let path = spec?.path;
|
|
118
87
|
if (null == path) {
|
|
119
88
|
let cut = this.path.indexOf('&');
|
|
120
89
|
cut = -1 < cut ? cut + 1 : ctx.path.length;
|
|
121
90
|
path = ctx.path.concat(this.path.slice(cut));
|
|
122
91
|
}
|
|
123
|
-
//
|
|
124
|
-
//
|
|
125
|
-
|
|
92
|
+
// Carry the target path via the spec instead of cloning ctx just
|
|
93
|
+
// to hold it: the Val constructor now reads spec.path first. This
|
|
94
|
+
// saves ~120k ctx.clone calls (two Object.create each) on a
|
|
95
|
+
// foo-sdk-sized model.
|
|
126
96
|
let fullspec = {
|
|
127
97
|
peg: this.peg,
|
|
128
98
|
mark: { type: this.mark.type, hide: this.mark.hide },
|
|
129
|
-
...(spec ?? {})
|
|
99
|
+
...(spec ?? {}),
|
|
100
|
+
path,
|
|
130
101
|
};
|
|
131
102
|
let out = new this
|
|
132
|
-
.constructor(fullspec,
|
|
103
|
+
.constructor(fullspec, ctx);
|
|
133
104
|
out.dc = this.done ? DONE : out.dc;
|
|
134
105
|
out.site.row = spec?.row ?? this.site.row ?? -1;
|
|
135
106
|
out.site.col = spec?.col ?? this.site.col ?? -1;
|
|
@@ -145,6 +116,35 @@ class Val {
|
|
|
145
116
|
spreadClone(ctx) {
|
|
146
117
|
return this.clone(ctx);
|
|
147
118
|
}
|
|
119
|
+
get isPathDependent() {
|
|
120
|
+
if (this._isPathDependent !== undefined)
|
|
121
|
+
return this._isPathDependent;
|
|
122
|
+
let dep = this.isPath || this.isKeyFunc || this.isPathFunc ||
|
|
123
|
+
this.isMoveFunc || this.isSuperFunc;
|
|
124
|
+
if (!dep) {
|
|
125
|
+
const peg = this.peg;
|
|
126
|
+
if (Array.isArray(peg)) {
|
|
127
|
+
for (let i = 0; i < peg.length; i++) {
|
|
128
|
+
const c = peg[i];
|
|
129
|
+
if (c && c.isVal && c.isPathDependent) {
|
|
130
|
+
dep = true;
|
|
131
|
+
break;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
else if (peg != null && typeof peg === 'object') {
|
|
136
|
+
for (const k in peg) {
|
|
137
|
+
const c = peg[k];
|
|
138
|
+
if (c && c.isVal && c.isPathDependent) {
|
|
139
|
+
dep = true;
|
|
140
|
+
break;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
this._isPathDependent = dep;
|
|
146
|
+
return dep;
|
|
147
|
+
}
|
|
148
148
|
place(v) {
|
|
149
149
|
v.site.row = this.site.row;
|
|
150
150
|
v.site.col = this.site.col;
|
|
@@ -205,6 +205,50 @@ class Val {
|
|
|
205
205
|
}
|
|
206
206
|
}
|
|
207
207
|
exports.Val = Val;
|
|
208
|
+
// Prototype-level defaults for Val's type-discriminator flags.
|
|
209
|
+
// Keeping these on the prototype (instead of per-instance class-field
|
|
210
|
+
// initializers) removes ~35 property writes from every Val construction
|
|
211
|
+
// and eliminates the corresponding hidden-class transitions. Subclasses
|
|
212
|
+
// override only the flags that differ, via their own class-field
|
|
213
|
+
// initializers (e.g. `MapVal.isMap = true`).
|
|
214
|
+
Object.assign(Val.prototype, {
|
|
215
|
+
isVal: true,
|
|
216
|
+
isTop: false,
|
|
217
|
+
isNil: false,
|
|
218
|
+
isMap: false,
|
|
219
|
+
isList: false,
|
|
220
|
+
isScalar: false,
|
|
221
|
+
isScalarKind: false,
|
|
222
|
+
isPath: false,
|
|
223
|
+
isPref: false,
|
|
224
|
+
isVar: false,
|
|
225
|
+
isBag: false,
|
|
226
|
+
isSpread: false,
|
|
227
|
+
isNumber: false,
|
|
228
|
+
isInteger: false,
|
|
229
|
+
isString: false,
|
|
230
|
+
isBoolean: false,
|
|
231
|
+
isConjunct: false,
|
|
232
|
+
isDisjunct: false,
|
|
233
|
+
isJunction: false,
|
|
234
|
+
cjo: 99999,
|
|
235
|
+
isOp: false,
|
|
236
|
+
isPlusOp: false,
|
|
237
|
+
isFunc: false,
|
|
238
|
+
isCloseFunc: false,
|
|
239
|
+
isCopyFunc: false,
|
|
240
|
+
isHideFunc: false,
|
|
241
|
+
isMoveFunc: false,
|
|
242
|
+
isKeyFunc: false,
|
|
243
|
+
isLowerFunc: false,
|
|
244
|
+
isOpenFunc: false,
|
|
245
|
+
isPathFunc: false,
|
|
246
|
+
isPrefFunc: false,
|
|
247
|
+
isSuperFunc: false,
|
|
248
|
+
isTypeFunc: false,
|
|
249
|
+
isUpperFunc: false,
|
|
250
|
+
isGenable: false,
|
|
251
|
+
});
|
|
208
252
|
function inspectpeg(peg, d) {
|
|
209
253
|
const indent = ' '.repeat(d);
|
|
210
254
|
return pretty(Array.isArray(peg) ?
|
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":"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"}
|
package/dist/val/VarVal.js
CHANGED
|
@@ -24,12 +24,12 @@ class VarVal extends FeatureVal_1.FeatureVal {
|
|
|
24
24
|
if (this.peg.isVal) {
|
|
25
25
|
// $.a.b.c - convert path to absolute
|
|
26
26
|
// if (this.peg instanceof RefVal) {
|
|
27
|
-
if (this.peg.
|
|
27
|
+
if (this.peg.isPath) {
|
|
28
28
|
this.peg.absolute = true;
|
|
29
29
|
nameVal = this.peg;
|
|
30
30
|
}
|
|
31
31
|
else {
|
|
32
|
-
nameVal = this.peg.unify(peer, ctx.clone({ explain: (0, utility_1.ec)(te, 'PEG') }));
|
|
32
|
+
nameVal = this.peg.unify(peer, te ? ctx.clone({ explain: (0, utility_1.ec)(te, 'PEG') }) : ctx);
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
35
|
else {
|
|
@@ -37,7 +37,7 @@ class VarVal extends FeatureVal_1.FeatureVal {
|
|
|
37
37
|
nameVal = new StringVal_1.StringVal({ peg: '' + this.peg }, ctx);
|
|
38
38
|
}
|
|
39
39
|
// if (!(nameVal instanceof RefVal) && DONE === nameVal.dc) {
|
|
40
|
-
if (!(nameVal.
|
|
40
|
+
if (!(nameVal.isPath) && type_1.DONE === nameVal.dc) {
|
|
41
41
|
if (nameVal instanceof StringVal_1.StringVal) {
|
|
42
42
|
let found = ctx.vars[nameVal.peg];
|
|
43
43
|
if (undefined === found) {
|
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,
|
|
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,MAAM,EAAE,CAAC;gBACpB,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,MAAM,CAAC,IAAI,WAAI,KAAK,OAAO,CAAC,EAAE,EAAE,CAAC;YAC7C,IAAI,OAAO,YAAY,qBAAS,EAAE,CAAC;gBACjC,IAAI,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;gBACjC,IAAI,SAAS,KAAK,KAAK,EAAE,CAAC;oBACxB,GAAG,GAAG,IAAA,gBAAU,EAAC,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;gBAClD,CAAC;gBAED,+BAA+B;gBAC/B,MAAM,EAAE,GAAG,OAAO,KAAK,CAAA;gBACvB,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;oBACnB,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,iBAAO,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;gBAC9C,CAAC;qBACI,IAAI,QAAQ,KAAK,EAAE,EAAE,CAAC;oBACzB,GAAG,GAAG,IAAI,qBAAS,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAA;gBACrC,CAAC;qBACI,IAAI,SAAS,KAAK,EAAE,EAAE,CAAC;oBAC1B,GAAG,GAAG,IAAI,uBAAU,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAA;gBACtC,CAAC;qBACI,IAAI,QAAQ,KAAK,EAAE,EAAE,CAAC;oBACzB,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;wBAC7B,IAAI,uBAAU,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;wBAChC,IAAI,qBAAS,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAA;gBACjC,CAAC;qBACI,IAAI,QAAQ,KAAK,EAAE,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;oBACxC,GAAG,GAAG,KAAK,CAAA;gBACb,CAAC;qBACI,CAAC;oBACJ,GAAG,GAAG,IAAA,gBAAU,EAAC,GAAG,EAAE,kBAAkB,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;gBACvD,CAAC;YACH,CAAC;iBACI,CAAC;gBACJ,GAAG,GAAG,IAAA,gBAAU,EAAC,GAAG,EAAE,MAAM,GAAG,OAAO,OAAO,GAAG,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;YAClE,CAAC;QACH,CAAC;aACI,CAAC;YACJ,GAAG,GAAG,OAAO,CAAA;QACf,CAAC;QAED,IAAA,sBAAY,EAAC,EAAE,EAAE,GAAG,CAAC,CAAA;QAErB,OAAO,GAAG,CAAA;IACZ,CAAC;IAGD,IAAI,CAAC,IAAS;QACZ,OAAO,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,YAAY,MAAM,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,CAAA;IAC/E,CAAC;IAGD,KAAK,CAAC,GAAiB,EAAE,IAAc;QACrC,IAAI,GAAG,GAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAY,CAAA;QAC5C,OAAO,GAAG,CAAA;IACZ,CAAC;IAGD,IAAI,KAAK;QACP,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAA;IACjE,CAAC;IAGD,GAAG,CAAC,GAAkB;QACpB,0DAA0D;QAC1D,IAAI,GAAG,GAAG,IAAA,gBAAU,EAClB,GAAG,EACH,KAAK,EACL,IAAI,EACJ,SAAS,CACV,CAAA;QAED,6BAA6B;QAC7B,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;QACpB,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAA;QAC5B,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAA;QAC5B,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAA;QAE5B,IAAA,aAAO,EAAC,GAAG,EAAE,GAAG,CAAC,CAAA;QAEjB,IAAI,GAAG,EAAE,CAAC;YACR,oBAAoB;YACpB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QACjB,CAAC;aACI,CAAC;YACJ,MAAM,IAAI,gBAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAC/B,CAAC;QAED,OAAO,SAAS,CAAA;IAClB,CAAC;CACF;AAIC,wBAAM"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "aontu",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.42.0",
|
|
4
4
|
"main": "dist/aontu.js",
|
|
5
5
|
"type": "commonjs",
|
|
6
6
|
"types": "dist/aontu.d.ts",
|
|
@@ -36,16 +36,15 @@
|
|
|
36
36
|
"LICENSE"
|
|
37
37
|
],
|
|
38
38
|
"dependencies": {
|
|
39
|
-
"@jsonic/
|
|
40
|
-
"@jsonic/
|
|
41
|
-
"@jsonic/
|
|
42
|
-
"
|
|
43
|
-
"jsonic": "2.27.0"
|
|
39
|
+
"@jsonic/expr": "2.2.0",
|
|
40
|
+
"@jsonic/multisource": "2.7.0",
|
|
41
|
+
"@jsonic/path": "2.1.0",
|
|
42
|
+
"jsonic": "2.28.0"
|
|
44
43
|
},
|
|
45
44
|
"devDependencies": {
|
|
46
45
|
"@types/node": "25.6.0",
|
|
47
46
|
"memfs": "4.57.2",
|
|
48
|
-
"typescript": "
|
|
47
|
+
"typescript": "6.0.3"
|
|
49
48
|
},
|
|
50
49
|
"aliasify": {
|
|
51
50
|
"aliases": {
|
package/src/aontu.ts
CHANGED
|
@@ -10,7 +10,7 @@ import { Unify } from './unify'
|
|
|
10
10
|
import { AontuContext, AontuContextConfig } from './ctx'
|
|
11
11
|
import { MapVal } from './val/MapVal'
|
|
12
12
|
import { formatExplain } from './utility'
|
|
13
|
-
import { makeNilErr, AontuError } from './err'
|
|
13
|
+
import { makeNilErr, descErr, AontuError } from './err'
|
|
14
14
|
|
|
15
15
|
|
|
16
16
|
|
|
@@ -165,6 +165,14 @@ function handleErrors(errs: any[], out: Val | undefined, ac: AontuContext) {
|
|
|
165
165
|
}
|
|
166
166
|
|
|
167
167
|
if (0 < ac.err.length) {
|
|
168
|
+
// Error message formatting is deferred by adderr (many NilVals are
|
|
169
|
+
// transient). Materialize msgs here before the caller sees them.
|
|
170
|
+
for (const err of ac.err) {
|
|
171
|
+
if (null == err?.msg || '' === err.msg) {
|
|
172
|
+
descErr(err, ac)
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
|
|
168
176
|
if (ac.collect) {
|
|
169
177
|
if (out) {
|
|
170
178
|
out.err = ac.err
|
package/src/ctx.ts
CHANGED
|
@@ -24,7 +24,7 @@ type AontuContextConfig = {
|
|
|
24
24
|
fs?: any
|
|
25
25
|
path?: string[]
|
|
26
26
|
root?: Val
|
|
27
|
-
seen?:
|
|
27
|
+
seen?: Map<string, number>
|
|
28
28
|
seenI?: number
|
|
29
29
|
src?: string
|
|
30
30
|
srcpath?: string
|
|
@@ -41,12 +41,14 @@ class AontuContext {
|
|
|
41
41
|
path: string[] // Path to current Val.
|
|
42
42
|
vc: number // Val counter to create unique val ids.
|
|
43
43
|
cc: number = -1
|
|
44
|
+
sc: number = 0 // Unresolved spread count
|
|
45
|
+
|
|
44
46
|
vars: Record<string, Val> = {}
|
|
45
47
|
src?: string
|
|
46
48
|
fs?: FST
|
|
47
49
|
|
|
48
50
|
seenI: number
|
|
49
|
-
seen:
|
|
51
|
+
seen: Map<string, number>
|
|
50
52
|
|
|
51
53
|
collect: boolean
|
|
52
54
|
|
|
@@ -63,6 +65,40 @@ class AontuContext {
|
|
|
63
65
|
_pathstr: string | undefined
|
|
64
66
|
_pathidx: number | undefined
|
|
65
67
|
_pathmap: Map<string, number>
|
|
68
|
+
// Trie keyed by (parentIdx, key) -> { idx, path }. Serves two
|
|
69
|
+
// jobs: (1) assign O(1) pathidx without rebuilding
|
|
70
|
+
// `path.join('\x00')` for cycle-detection; (2) cache the
|
|
71
|
+
// materialised path array so the same (parent, key) visited
|
|
72
|
+
// across fixpoint passes reuses one array instead of re-concat.
|
|
73
|
+
_pathTrie: Map<number, Map<string, { idx: number, path: string[] }>>
|
|
74
|
+
_pathidxNext: { n: number }
|
|
75
|
+
|
|
76
|
+
// Trial mode: set by DisjunctVal.unify while each member is tried
|
|
77
|
+
// against the peer. When true, makeNilErr returns the shared
|
|
78
|
+
// TRIAL_NIL sentinel instead of allocating a fresh NilVal, and
|
|
79
|
+
// pushes TRIAL_NIL to ctx.err only once per trial (the caller's
|
|
80
|
+
// `trialErr.length > 0` check still signals failure). See err.ts.
|
|
81
|
+
_trialMode?: boolean
|
|
82
|
+
|
|
83
|
+
// Per-parent descend cache: (key) -> already-descended child ctx.
|
|
84
|
+
// ~48% of descends in foo-sdk repeat the same (parent, key) pair
|
|
85
|
+
// (e.g. a MapVal.unify visits the same peer keys across fixpoint
|
|
86
|
+
// passes). The child's prototype chain, path, and pathidx are
|
|
87
|
+
// identical every time, and no code writes to a descended ctx
|
|
88
|
+
// between visits — nothing mutates per-child state — so the
|
|
89
|
+
// cached child is safe to reuse.
|
|
90
|
+
_childCache?: Map<string, AontuContext>
|
|
91
|
+
|
|
92
|
+
// Per-iteration cache for PathVal.find() clone results.
|
|
93
|
+
// Key: "pathId|targetId" — avoids repeated deep-clone + walk for
|
|
94
|
+
// the same (path, resolved-target) pair within one fixpoint pass.
|
|
95
|
+
// Cleared at the start of each iteration (alongside `seen`).
|
|
96
|
+
_refCloneCache?: Map<string, Val>
|
|
97
|
+
|
|
98
|
+
// Per-iteration cache for unite() results when both operands are
|
|
99
|
+
// done. Key: "aId|bId". Cleared per fixpoint iteration.
|
|
100
|
+
_uniteCache?: Map<string, Val>
|
|
101
|
+
|
|
66
102
|
|
|
67
103
|
|
|
68
104
|
constructor(cfg: AontuContextConfig) {
|
|
@@ -84,13 +120,16 @@ class AontuContext {
|
|
|
84
120
|
|
|
85
121
|
this.vars = cfg.vars ?? this.vars
|
|
86
122
|
this.seenI = cfg.seenI ?? 0
|
|
87
|
-
this.seen = cfg.seen ??
|
|
123
|
+
this.seen = cfg.seen ?? new Map()
|
|
88
124
|
|
|
89
125
|
this.srcpath = cfg.srcpath ?? undefined
|
|
90
126
|
|
|
91
127
|
this.deps = cfg.deps ?? {}
|
|
92
128
|
|
|
93
129
|
this._pathmap = new Map()
|
|
130
|
+
this._pathTrie = new Map()
|
|
131
|
+
this._pathidxNext = { n: 1 } // 0 reserved for the root path
|
|
132
|
+
this._pathidx = 0
|
|
94
133
|
|
|
95
134
|
this.opts = DEFAULT_OPTS()
|
|
96
135
|
this.addopts(cfg.opts)
|
|
@@ -114,16 +153,59 @@ class AontuContext {
|
|
|
114
153
|
ctx.explain = Array.isArray(cfg.explain) ? cfg.explain : ctx.explain
|
|
115
154
|
|
|
116
155
|
ctx._pathstr = undefined
|
|
117
|
-
|
|
156
|
+
// Path didn't move unless cfg.path was supplied, so pathidx stays
|
|
157
|
+
// valid in the common case. For cfg.path-override (4 calls per
|
|
158
|
+
// run, fixpoint advances) fall back to the join-based lookup.
|
|
159
|
+
if (cfg.path !== undefined) {
|
|
160
|
+
ctx._pathidx = undefined
|
|
161
|
+
}
|
|
118
162
|
|
|
119
163
|
return ctx
|
|
120
164
|
}
|
|
121
165
|
|
|
122
166
|
descend(key: string): AontuContext {
|
|
167
|
+
// C3: reuse the child ctx from a previous descend with the same
|
|
168
|
+
// (parent, key). Saves one Object.create + several property
|
|
169
|
+
// writes per hit; ~48% hit rate on foo-sdk.
|
|
170
|
+
//
|
|
171
|
+
// NB: must use hasOwnProperty here — plain `this._childCache`
|
|
172
|
+
// would walk the prototype chain and read the *parent's* cache
|
|
173
|
+
// (ctxs are created via Object.create(parent)), so keys would
|
|
174
|
+
// cross-contaminate between sibling branches.
|
|
175
|
+
let childCache: Map<string, AontuContext> | undefined
|
|
176
|
+
if (Object.prototype.hasOwnProperty.call(this, '_childCache')) {
|
|
177
|
+
childCache = this._childCache
|
|
178
|
+
const cached = childCache!.get(key)
|
|
179
|
+
if (cached !== undefined) return cached
|
|
180
|
+
}
|
|
181
|
+
else {
|
|
182
|
+
childCache = new Map()
|
|
183
|
+
this._childCache = childCache
|
|
184
|
+
}
|
|
185
|
+
|
|
123
186
|
const ctx = Object.create(this)
|
|
124
|
-
ctx.path = this.path.concat(key)
|
|
125
187
|
ctx._pathstr = undefined
|
|
126
|
-
|
|
188
|
+
|
|
189
|
+
// Trie doubles as both pathidx assignment and path-array cache.
|
|
190
|
+
// (parent_pathidx, key) uniquely identifies a descended path,
|
|
191
|
+
// and is visited many times across fixpoint passes. Caching the
|
|
192
|
+
// materialised array lets descend share references instead of
|
|
193
|
+
// allocating a fresh concat every time.
|
|
194
|
+
const parentIdx = this._pathidx!
|
|
195
|
+
let childMap = this._pathTrie.get(parentIdx)
|
|
196
|
+
if (childMap === undefined) {
|
|
197
|
+
childMap = new Map()
|
|
198
|
+
this._pathTrie.set(parentIdx, childMap)
|
|
199
|
+
}
|
|
200
|
+
let entry = childMap.get(key)
|
|
201
|
+
if (entry === undefined) {
|
|
202
|
+
entry = { idx: this._pathidxNext.n++, path: this.path.concat(key) }
|
|
203
|
+
childMap.set(key, entry)
|
|
204
|
+
}
|
|
205
|
+
ctx._pathidx = entry.idx
|
|
206
|
+
ctx.path = entry.path
|
|
207
|
+
|
|
208
|
+
childCache!.set(key, ctx)
|
|
127
209
|
return ctx
|
|
128
210
|
}
|
|
129
211
|
|
|
@@ -133,7 +215,7 @@ class AontuContext {
|
|
|
133
215
|
Object.assign(this.opts, opts)
|
|
134
216
|
}
|
|
135
217
|
|
|
136
|
-
this.collect =
|
|
218
|
+
this.collect = this.opts.collect ?? (null != this.opts.err || this.collect)
|
|
137
219
|
this.err = this.opts.err ?? this.err
|
|
138
220
|
this.deps = this.opts.deps ?? this.deps
|
|
139
221
|
this.fs = this.opts.fs ?? this.fs
|
|
@@ -155,9 +237,9 @@ class AontuContext {
|
|
|
155
237
|
if (!this.err.includes(err)) {
|
|
156
238
|
this.err.push(err)
|
|
157
239
|
}
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
240
|
+
// NOTE: error message formatting is deferred to errmsg() / NilVal.gen.
|
|
241
|
+
// Many NilVals are transient (disjunct member trials, etc.) and never
|
|
242
|
+
// surface to the user — eager descErr was a major hot path.
|
|
161
243
|
}
|
|
162
244
|
}
|
|
163
245
|
|
|
@@ -165,7 +247,9 @@ class AontuContext {
|
|
|
165
247
|
errmsg() {
|
|
166
248
|
// return this.errlist
|
|
167
249
|
return this.err
|
|
168
|
-
.map((err: any) => err
|
|
250
|
+
.map((err: any) => (err && (null == err.msg || '' === err.msg)
|
|
251
|
+
? (descErr(err, this), err.msg)
|
|
252
|
+
: err?.msg))
|
|
169
253
|
.filter(msg => null != msg)
|
|
170
254
|
.join('\n------\n')
|
|
171
255
|
}
|
package/src/err.ts
CHANGED
|
@@ -7,7 +7,7 @@ import { Val, ErrContext } from './type'
|
|
|
7
7
|
|
|
8
8
|
import { AontuContext } from './ctx'
|
|
9
9
|
|
|
10
|
-
import { NilVal } from './val/NilVal'
|
|
10
|
+
import { NilVal, TRIAL_NIL } from './val/NilVal'
|
|
11
11
|
|
|
12
12
|
import { hints } from './hints'
|
|
13
13
|
|
|
@@ -33,6 +33,19 @@ function makeNilErr(
|
|
|
33
33
|
attempt?: string,
|
|
34
34
|
details?: Record<string, any>
|
|
35
35
|
): NilVal {
|
|
36
|
+
// C1-inner: when a DisjunctVal trial is in progress, failures are
|
|
37
|
+
// transient markers — none of the NilVal fields (site, path,
|
|
38
|
+
// primary, secondary, details) ever surface to the user because
|
|
39
|
+
// DisjunctVal replaces the oval entry with TRIAL_NIL and filters
|
|
40
|
+
// by isNil. Allocating a fresh NilVal per failure (~60k per
|
|
41
|
+
// foo-sdk run from IntegerVal/BooleanVal/ScalarVal.unify et al.)
|
|
42
|
+
// is pure waste. Short-circuit to the shared sentinel; push once
|
|
43
|
+
// to ctx.err so the caller's `trialErr.length > 0` check still
|
|
44
|
+
// signals failure.
|
|
45
|
+
if (ctx !== undefined && ctx._trialMode === true) {
|
|
46
|
+
if (ctx.err.length === 0) ctx.err.push(TRIAL_NIL)
|
|
47
|
+
return TRIAL_NIL
|
|
48
|
+
}
|
|
36
49
|
const nilval = NilVal.make(ctx, why, av, bv, attempt, details)
|
|
37
50
|
return nilval
|
|
38
51
|
}
|
|
@@ -132,36 +145,43 @@ function resolveFile(url: string | undefined) {
|
|
|
132
145
|
|
|
133
146
|
function resolveSrc(v: Val, errctx: ErrContext | undefined, position: string) {
|
|
134
147
|
let src: string | undefined = undefined
|
|
148
|
+
const url = v?.site.url
|
|
135
149
|
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
150
|
+
// Cache reads on errctx for the lifetime of the error-formatting pass.
|
|
151
|
+
// When many NilVals share the same source file (common during batch
|
|
152
|
+
// descErr after unify), this avoids re-reading the same file N times.
|
|
153
|
+
const cache = errctx ? ((errctx as any)._srcCache ??= new Map<string, string>()) : null
|
|
154
|
+
|
|
155
|
+
if (null != url) {
|
|
156
|
+
if (cache && cache.has(url)) {
|
|
157
|
+
src = cache.get(url)
|
|
142
158
|
}
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
159
|
+
else {
|
|
160
|
+
try {
|
|
161
|
+
const fileExists = errctx?.fs?.existsSync(url)
|
|
162
|
+
if (fileExists) {
|
|
163
|
+
src = errctx?.fs?.readFileSync(url, 'utf8') ?? undefined
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
catch (fe: any) {
|
|
167
|
+
// ignore as more important to report original error
|
|
168
|
+
}
|
|
169
|
+
if (cache && null != src) {
|
|
170
|
+
cache.set(url, src)
|
|
171
|
+
}
|
|
146
172
|
}
|
|
147
173
|
}
|
|
148
|
-
else {
|
|
149
|
-
// console.log(v)
|
|
150
|
-
// console.trace()
|
|
151
|
-
}
|
|
152
174
|
|
|
153
175
|
if (undefined == src || '' === src) {
|
|
154
176
|
if (errctx?.src) {
|
|
155
177
|
src = errctx.src
|
|
156
178
|
}
|
|
157
179
|
else if (errctx) {
|
|
158
|
-
src = 'SOURCE-NOT-FOUND:' + (null !=
|
|
180
|
+
src = 'SOURCE-NOT-FOUND:' + (null != url ? (' ' + url) : '') +
|
|
159
181
|
(null == errctx?.fs ? ' (NO-FS)' : '')
|
|
160
182
|
}
|
|
161
183
|
}
|
|
162
184
|
|
|
163
|
-
// console.log('AONTU-resolveSrc', position, v, v?.site.url, errctx?.fs, src?.length)
|
|
164
|
-
|
|
165
185
|
return src
|
|
166
186
|
}
|
|
167
187
|
|