aontu 0.41.0 → 0.43.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/ctx.d.ts +5 -2
- package/dist/ctx.js +2 -1
- package/dist/ctx.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 +292 -13
- 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 +137 -14
- 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 +4 -0
- package/dist/val/DisjunctVal.js.map +1 -1
- package/dist/val/ExpectVal.js +16 -3
- package/dist/val/ExpectVal.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 +33 -66
- package/dist/val/ListVal.js.map +1 -1
- package/dist/val/MapVal.d.ts +3 -2
- package/dist/val/MapVal.js +67 -95
- 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/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 +18 -5
- 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 +2 -1
- package/dist/val/Val.js +7 -8
- package/dist/val/Val.js.map +1 -1
- package/dist/val/VarVal.js +2 -2
- package/dist/val/VarVal.js.map +1 -1
- package/package.json +5 -6
- package/src/ctx.ts +16 -3
- package/src/lang.ts +113 -23
- package/src/type.ts +5 -0
- package/src/unify.ts +310 -13
- package/src/utility.ts +5 -2
- package/src/val/BagVal.ts +6 -7
- package/src/val/ConjunctVal.ts +131 -13
- package/src/val/CopyFuncVal.ts +3 -2
- package/src/val/DisjunctVal.ts +6 -0
- package/src/val/ExpectVal.ts +18 -4
- package/src/val/JunctionVal.ts +5 -1
- package/src/val/KeyFuncVal.ts +0 -3
- package/src/val/ListVal.ts +38 -88
- package/src/val/MapVal.ts +75 -124
- package/src/val/MoveFuncVal.ts +79 -14
- package/src/val/PathFuncVal.ts +29 -4
- package/src/val/PathVal.ts +435 -0
- package/src/val/PrefVal.ts +19 -6
- package/src/val/{RefVal.ts → RefVal.ts.old} +30 -19
- package/src/val/SpreadVal.ts +275 -0
- package/src/val/Val.ts +9 -9
- package/src/val/VarVal.ts +2 -2
- package/dist/val/RefVal.js.map +0 -1
|
@@ -1,26 +1,28 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
/* Copyright (c)
|
|
2
|
+
/* Copyright (c) 2025 Richard Rodger, MIT License */
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.
|
|
5
|
-
const utility_1 = require("../utility");
|
|
4
|
+
exports.PathVal = void 0;
|
|
6
5
|
const type_1 = require("../type");
|
|
7
|
-
const
|
|
6
|
+
const utility_1 = require("../utility");
|
|
8
7
|
const unify_1 = require("../unify");
|
|
8
|
+
const err_1 = require("../err");
|
|
9
9
|
const top_1 = require("./top");
|
|
10
10
|
const StringVal_1 = require("./StringVal");
|
|
11
11
|
const IntegerVal_1 = require("./IntegerVal");
|
|
12
12
|
const NumberVal_1 = require("./NumberVal");
|
|
13
|
-
const ConjunctVal_1 = require("./ConjunctVal");
|
|
14
13
|
const VarVal_1 = require("./VarVal");
|
|
14
|
+
const ConjunctVal_1 = require("./ConjunctVal");
|
|
15
|
+
const DisjunctVal_1 = require("./DisjunctVal");
|
|
15
16
|
const FeatureVal_1 = require("./FeatureVal");
|
|
16
|
-
class
|
|
17
|
+
class PathVal extends FeatureVal_1.FeatureVal {
|
|
17
18
|
constructor(spec, ctx) {
|
|
18
19
|
super(spec, ctx);
|
|
19
|
-
this.
|
|
20
|
+
this.isPath = true;
|
|
20
21
|
this.isGenable = true;
|
|
21
22
|
this.cjo = 32500;
|
|
22
23
|
this.absolute = false;
|
|
23
24
|
this.prefix = false;
|
|
25
|
+
this._resolved = undefined;
|
|
24
26
|
this.peg = [];
|
|
25
27
|
this.absolute = true === this.absolute ? true : // absolute sticks
|
|
26
28
|
true === spec.absolute ? true : false;
|
|
@@ -28,11 +30,9 @@ class RefVal extends FeatureVal_1.FeatureVal {
|
|
|
28
30
|
for (let pI = 0; pI < spec.peg.length; pI++) {
|
|
29
31
|
this.append(spec.peg[pI]);
|
|
30
32
|
}
|
|
31
|
-
//console.log('RefVal', this.id, this.peg)
|
|
32
33
|
}
|
|
33
34
|
append(part) {
|
|
34
35
|
let partval;
|
|
35
|
-
// console.log('APPEND', part)
|
|
36
36
|
if ('string' === typeof part) {
|
|
37
37
|
partval = part;
|
|
38
38
|
this.peg.push(partval);
|
|
@@ -42,15 +42,10 @@ class RefVal extends FeatureVal_1.FeatureVal {
|
|
|
42
42
|
this.peg.push(partval);
|
|
43
43
|
}
|
|
44
44
|
else if (part instanceof IntegerVal_1.IntegerVal) {
|
|
45
|
-
// partval = '' + part.peg
|
|
46
45
|
partval = part.src;
|
|
47
46
|
this.peg.push(partval);
|
|
48
47
|
}
|
|
49
|
-
// TODO: this is a bit of a hack, review
|
|
50
|
-
// Seems like a fundamental ambiguity?
|
|
51
|
-
// Resolved by path function
|
|
52
48
|
else if (part instanceof NumberVal_1.NumberVal) {
|
|
53
|
-
// let partvals: string[] = part.peg.toFixed(11).replace(/(\.0)?0+$/, '$1').split('.')
|
|
54
49
|
let partvals = part.src.split('.');
|
|
55
50
|
this.peg.push(...partvals);
|
|
56
51
|
}
|
|
@@ -58,7 +53,7 @@ class RefVal extends FeatureVal_1.FeatureVal {
|
|
|
58
53
|
partval = part;
|
|
59
54
|
this.peg.push(partval);
|
|
60
55
|
}
|
|
61
|
-
else if (part instanceof
|
|
56
|
+
else if (part instanceof PathVal) {
|
|
62
57
|
if (part.absolute) {
|
|
63
58
|
this.absolute = true;
|
|
64
59
|
}
|
|
@@ -82,47 +77,21 @@ class RefVal extends FeatureVal_1.FeatureVal {
|
|
|
82
77
|
}
|
|
83
78
|
unify(peer, ctx) {
|
|
84
79
|
peer = peer ?? (0, top_1.top)();
|
|
85
|
-
|
|
80
|
+
// Already resolved (e.g. path value from path() function) — skip find
|
|
81
|
+
if (this.done)
|
|
82
|
+
return this;
|
|
86
83
|
let out = this;
|
|
87
|
-
|
|
88
|
-
if (
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
else if (resolved instanceof RefVal) {
|
|
98
|
-
if (peer.isTop) {
|
|
99
|
-
out = this;
|
|
100
|
-
why = 'pt';
|
|
101
|
-
}
|
|
102
|
-
else if (peer.isNil) {
|
|
103
|
-
out = (0, err_1.makeNilErr)(ctx, 'ref[' + this.peg + ']', this, peer);
|
|
104
|
-
why = 'pn';
|
|
105
|
-
}
|
|
106
|
-
// same path
|
|
107
|
-
else if (this.canon === peer.canon) {
|
|
108
|
-
out = this;
|
|
109
|
-
why = 'pp';
|
|
110
|
-
}
|
|
111
|
-
else {
|
|
112
|
-
// Ensure RefVal done is incremented
|
|
113
|
-
this.dc = type_1.DONE === this.dc ? type_1.DONE : this.dc + 1;
|
|
114
|
-
out = new ConjunctVal_1.ConjunctVal({ peg: [this, peer] }, ctx);
|
|
115
|
-
why = 'cj';
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
else {
|
|
119
|
-
out = (0, unify_1.unite)(te ? ctx.clone({ explain: (0, utility_1.ec)(te, 'RES') }) : ctx, resolved, peer, 'ref');
|
|
120
|
-
why = 'u';
|
|
121
|
-
}
|
|
122
|
-
out.dc = type_1.DONE === out.dc ? type_1.DONE : this.dc + 1;
|
|
84
|
+
const found = this.find(ctx);
|
|
85
|
+
if (found != null && !found.isNil) {
|
|
86
|
+
out = (0, unify_1.unite)(ctx, found, peer, 'path');
|
|
87
|
+
}
|
|
88
|
+
else if (found?.isNil) {
|
|
89
|
+
out = found;
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
// Not yet resolvable — increment dc to signal not done
|
|
93
|
+
this.dc = type_1.DONE === this.dc ? type_1.DONE : this.dc + 1;
|
|
123
94
|
}
|
|
124
|
-
// console.log('REFVAL-UNIFY-OUT', ctx.cc, this.id, this.canon, this.done, 'P=', peer.id, peer.canon, peer.done, '->', out.id, out.canon, out.done)
|
|
125
|
-
(0, utility_1.explainClose)(te, out);
|
|
126
95
|
return out;
|
|
127
96
|
}
|
|
128
97
|
find(ctx) {
|
|
@@ -240,6 +209,36 @@ class RefVal extends FeatureVal_1.FeatureVal {
|
|
|
240
209
|
else if (node.isList) {
|
|
241
210
|
node = node.peg[part];
|
|
242
211
|
}
|
|
212
|
+
else if (node.isConjunct || node.isDisjunct) {
|
|
213
|
+
// Collect matching children from all junction terms,
|
|
214
|
+
// flattening nested conjuncts and disjuncts.
|
|
215
|
+
// Spreads match any key — their peg is always included.
|
|
216
|
+
const matches = [];
|
|
217
|
+
const stack = [...node.peg];
|
|
218
|
+
while (stack.length > 0) {
|
|
219
|
+
const term = stack.pop();
|
|
220
|
+
if (term.isConjunct || term.isDisjunct) {
|
|
221
|
+
stack.push(...term.peg);
|
|
222
|
+
}
|
|
223
|
+
else if (term.isSpread) {
|
|
224
|
+
matches.push(term.peg);
|
|
225
|
+
}
|
|
226
|
+
else if ((term.isMap || term.isList) && term.peg[part] != null) {
|
|
227
|
+
matches.push(term.peg[part]);
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
if (matches.length === 1) {
|
|
231
|
+
node = matches[0];
|
|
232
|
+
}
|
|
233
|
+
else if (matches.length > 1) {
|
|
234
|
+
node = node.isConjunct
|
|
235
|
+
? new ConjunctVal_1.ConjunctVal({ peg: matches })
|
|
236
|
+
: new DisjunctVal_1.DisjunctVal({ peg: matches });
|
|
237
|
+
}
|
|
238
|
+
else {
|
|
239
|
+
node = null;
|
|
240
|
+
}
|
|
241
|
+
}
|
|
243
242
|
else if (node.done) {
|
|
244
243
|
nopath = true;
|
|
245
244
|
break;
|
|
@@ -257,7 +256,7 @@ class RefVal extends FeatureVal_1.FeatureVal {
|
|
|
257
256
|
if (nopath) {
|
|
258
257
|
out = (0, err_1.makeNilErr)(ctx, 'no_path', this);
|
|
259
258
|
}
|
|
260
|
-
else if (pI === refpath.length) {
|
|
259
|
+
else if (pI === refpath.length && node != null) {
|
|
261
260
|
out = node;
|
|
262
261
|
// Types and hidden values are cloned and made concrete
|
|
263
262
|
if (null != out) { // && (out.mark.type || out.mark.hide)) {
|
|
@@ -265,25 +264,28 @@ class RefVal extends FeatureVal_1.FeatureVal {
|
|
|
265
264
|
if (this.mark.type || this.mark.hide) {
|
|
266
265
|
out.mark.type = this.mark.type;
|
|
267
266
|
out.mark.hide = this.mark.hide;
|
|
268
|
-
// walk(out, (_key: string | number | undefined, val: Val) => {
|
|
269
|
-
// val.mark.type = this.mark.type
|
|
270
|
-
// val.mark.hide = this.mark.hide
|
|
271
|
-
// return val
|
|
272
|
-
// })
|
|
273
267
|
}
|
|
274
268
|
if (this.mark._hide_found) {
|
|
275
269
|
out.mark.hide = true;
|
|
276
270
|
}
|
|
277
|
-
//
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
271
|
+
// Cache clone+walk results per (ref, target) per iteration.
|
|
272
|
+
const cacheKey = this.id + '|' + out.id;
|
|
273
|
+
const cache = ctx._refCloneCache;
|
|
274
|
+
const cached = cache?.get(cacheKey);
|
|
275
|
+
if (cached !== undefined) {
|
|
276
|
+
out = cached;
|
|
277
|
+
}
|
|
278
|
+
else {
|
|
279
|
+
out = out.clone(ctx);
|
|
280
|
+
out.mark.type = false;
|
|
281
|
+
out.mark.hide = false;
|
|
282
|
+
(0, utility_1.walk)(out, (_key, val) => {
|
|
283
|
+
val.mark.type = false;
|
|
284
|
+
val.mark.hide = false;
|
|
285
|
+
return val;
|
|
286
|
+
});
|
|
287
|
+
cache?.set(cacheKey, out);
|
|
288
|
+
}
|
|
287
289
|
}
|
|
288
290
|
}
|
|
289
291
|
}
|
|
@@ -304,17 +306,13 @@ class RefVal extends FeatureVal_1.FeatureVal {
|
|
|
304
306
|
get canon() {
|
|
305
307
|
let str = (this.absolute ? '$' : '') +
|
|
306
308
|
(0 < this.peg.length ? '.' : '') +
|
|
307
|
-
// this.peg.join(this.sep)
|
|
308
309
|
this.peg.map((p) => '.' === p ? '' :
|
|
309
310
|
(p.isVal ? p.canon : '' + p))
|
|
310
311
|
.join('.');
|
|
311
312
|
return str;
|
|
312
313
|
}
|
|
313
314
|
gen(ctx) {
|
|
314
|
-
|
|
315
|
-
let nil = (0, err_1.makeNilErr)(ctx, 'ref', this, // (formatPath(this.peg, this.absolute) as any),
|
|
316
|
-
undefined);
|
|
317
|
-
// TODO: refactor to use Site pointer
|
|
315
|
+
let nil = (0, err_1.makeNilErr)(ctx, 'ref', this, undefined);
|
|
318
316
|
nil.path = this.path;
|
|
319
317
|
nil.site.url = this.site.url;
|
|
320
318
|
nil.site.row = this.site.row;
|
|
@@ -328,5 +326,5 @@ class RefVal extends FeatureVal_1.FeatureVal {
|
|
|
328
326
|
].filter(p => '' != p).join(',');
|
|
329
327
|
}
|
|
330
328
|
}
|
|
331
|
-
exports.
|
|
332
|
-
//# sourceMappingURL=
|
|
329
|
+
exports.PathVal = PathVal;
|
|
330
|
+
//# sourceMappingURL=PathVal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PathVal.js","sourceRoot":"","sources":["../../src/val/PathVal.ts"],"names":[],"mappings":"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"}
|
package/dist/val/PlusOpVal.d.ts
CHANGED
|
@@ -10,7 +10,7 @@ declare class PlusOpVal extends OpBaseVal {
|
|
|
10
10
|
constructor(spec: ValSpec, ctx?: AontuContext);
|
|
11
11
|
make(_ctx: AontuContext, spec: ValSpec): Val;
|
|
12
12
|
opname(): string;
|
|
13
|
-
operate(_ctx: AontuContext, args: Val[]):
|
|
13
|
+
operate(_ctx: AontuContext, args: Val[]): StringVal | IntegerVal | NumberVal | BooleanVal | undefined;
|
|
14
14
|
get canon(): string;
|
|
15
15
|
}
|
|
16
16
|
export { PlusOpVal, };
|
package/dist/val/PrefVal.js
CHANGED
|
@@ -7,6 +7,7 @@ const unify_1 = require("../unify");
|
|
|
7
7
|
const err_1 = require("../err");
|
|
8
8
|
const utility_1 = require("../utility");
|
|
9
9
|
const top_1 = require("./top");
|
|
10
|
+
const ConjunctVal_1 = require("./ConjunctVal");
|
|
10
11
|
const FeatureVal_1 = require("./FeatureVal");
|
|
11
12
|
class PrefVal extends FeatureVal_1.FeatureVal {
|
|
12
13
|
constructor(spec, ctx) {
|
|
@@ -33,10 +34,13 @@ class PrefVal extends FeatureVal_1.FeatureVal {
|
|
|
33
34
|
let why = '';
|
|
34
35
|
if (!this.peg.done) {
|
|
35
36
|
const resolved = (0, unify_1.unite)(te ? ctx.clone({ explain: (0, utility_1.ec)(te, 'RES') }) : ctx, this.peg, (0, top_1.top)(), 'pref/resolve');
|
|
36
|
-
// console.log('PREF-RESOLVED', this.peg.canon, '->', resolved)
|
|
37
37
|
this.peg = resolved;
|
|
38
38
|
this.superpeg = this.peg.superior();
|
|
39
39
|
}
|
|
40
|
+
else if (this.superpeg.isTop && !this.peg.isTop) {
|
|
41
|
+
// Stale superpeg from pre-resolved PathVal — recalculate
|
|
42
|
+
this.superpeg = this.peg.superior();
|
|
43
|
+
}
|
|
40
44
|
if (peer instanceof PrefVal) {
|
|
41
45
|
why += 'pref-';
|
|
42
46
|
if (this.id === peer.id) {
|
|
@@ -69,10 +73,19 @@ class PrefVal extends FeatureVal_1.FeatureVal {
|
|
|
69
73
|
}
|
|
70
74
|
else if (!peer.isTop) {
|
|
71
75
|
why += 'super-';
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
+
// If peg is unresolved (e.g. deferred ref), don't decide yet —
|
|
77
|
+
// preserve both sides so a later pass can resolve.
|
|
78
|
+
if (!this.peg.done) {
|
|
79
|
+
out = new ConjunctVal_1.ConjunctVal({ peg: [this, peer] }, ctx);
|
|
80
|
+
done = false;
|
|
81
|
+
why += 'defer';
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
out = (0, unify_1.unite)(te ? ctx.clone({ explain: (0, utility_1.ec)(te, 'SUPER') }) : ctx, this.superpeg, peer, 'pref-super/' + this.id);
|
|
85
|
+
if (out.same(this.superpeg)) {
|
|
86
|
+
out = this.peg;
|
|
87
|
+
why += 'same';
|
|
88
|
+
}
|
|
76
89
|
}
|
|
77
90
|
// }
|
|
78
91
|
}
|
package/dist/val/PrefVal.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PrefVal.js","sourceRoot":"","sources":["../../src/val/PrefVal.ts"],"names":[],"mappings":";AAAA,yDAAyD;;;AAOzD,kCAEgB;AAGhB,oCAAgC;AAChC,gCAAmC;AAEnC,wCAImB;AAGnB,+BAA2B;AAE3B,6CAAyC;AAGzC,MAAM,OAAQ,SAAQ,uBAAU;IAQ9B,YACE,IAAa,EACb,GAAkB;QAElB,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QAXlB,WAAM,GAAG,IAAI,CAAA;QACb,cAAS,GAAG,IAAI,CAAA;QAChB,QAAG,GAAG,KAAK,CAAA;QAGX,SAAI,GAAW,CAAC,CAAA;QAOd,oCAAoC;QAEpC,sCAAsC;QAEtC,IAAI,IAAI,CAAC,GAAG,YAAY,OAAO,EAAE,CAAC;YAChC,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAA;QAC/B,CAAC;QAED,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAA;QACnC,0DAA0D;IAC5D,CAAC;IAGD,yCAAyC;IACzC,6DAA6D;IAC7D,KAAK,CAAC,IAAS,EAAE,GAAiB;QAChC,IAAI,GAAG,IAAI,IAAI,IAAA,SAAG,GAAE,CAAA;QAEpB,MAAM,EAAE,GAAG,GAAG,CAAC,OAAO,IAAI,IAAA,qBAAW,EAAC,GAAG,EAAE,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;QAC3E,IAAI,IAAI,GAAG,IAAI,CAAA;QACf,IAAI,GAAG,GAAQ,IAAI,CAAA;QACnB,IAAI,GAAG,GAAG,EAAE,CAAA;QAEZ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;YACnB,MAAM,QAAQ,GAAG,IAAA,aAAK,EAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,IAAA,YAAE,EAAC,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EACrE,IAAI,CAAC,GAAG,EAAE,IAAA,SAAG,GAAE,EAAE,cAAc,CAAC,CAAA;YAClC
|
|
1
|
+
{"version":3,"file":"PrefVal.js","sourceRoot":"","sources":["../../src/val/PrefVal.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { Val, ValSpec } from '../type';
|
|
2
|
+
import { AontuContext } from '../ctx';
|
|
3
|
+
import { FeatureVal } from './FeatureVal';
|
|
4
|
+
import { MapVal } from './MapVal';
|
|
5
|
+
import { ListVal } from './ListVal';
|
|
6
|
+
declare class SpreadVal extends FeatureVal {
|
|
7
|
+
isSpread: boolean;
|
|
8
|
+
isGenable: boolean;
|
|
9
|
+
cjo: number;
|
|
10
|
+
constructor(spec: ValSpec, ctx?: AontuContext);
|
|
11
|
+
unify(peer: Val, ctx: AontuContext): Val;
|
|
12
|
+
applyToMap(map: MapVal, ctx: AontuContext, te: any): Val;
|
|
13
|
+
applyToList(list: ListVal, ctx: AontuContext, te: any): Val;
|
|
14
|
+
clone(ctx: AontuContext, spec?: ValSpec): Val;
|
|
15
|
+
spreadClone(ctx: AontuContext): Val;
|
|
16
|
+
get canon(): string;
|
|
17
|
+
gen(_ctx: AontuContext): undefined;
|
|
18
|
+
inspection(): string;
|
|
19
|
+
}
|
|
20
|
+
export { SpreadVal, };
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/* Copyright (c) 2025 Richard Rodger, MIT License */
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.SpreadVal = void 0;
|
|
5
|
+
const type_1 = require("../type");
|
|
6
|
+
const unify_1 = require("../unify");
|
|
7
|
+
const utility_1 = require("../utility");
|
|
8
|
+
const top_1 = require("./top");
|
|
9
|
+
const FeatureVal_1 = require("./FeatureVal");
|
|
10
|
+
const ConjunctVal_1 = require("./ConjunctVal");
|
|
11
|
+
const MapVal_1 = require("./MapVal");
|
|
12
|
+
const ListVal_1 = require("./ListVal");
|
|
13
|
+
class SpreadVal extends FeatureVal_1.FeatureVal {
|
|
14
|
+
constructor(spec, ctx) {
|
|
15
|
+
super(spec, ctx);
|
|
16
|
+
this.isSpread = true;
|
|
17
|
+
this.isGenable = true;
|
|
18
|
+
this.cjo = 110000; // Sorts after MapVal/ListVal in ConjunctVal norm
|
|
19
|
+
}
|
|
20
|
+
unify(peer, ctx) {
|
|
21
|
+
peer = peer ?? (0, top_1.top)();
|
|
22
|
+
const te = ctx.explain && (0, utility_1.explainOpen)(ctx, ctx.explain, 'Spread', this, peer);
|
|
23
|
+
let out;
|
|
24
|
+
if (peer.isTop) {
|
|
25
|
+
// Self-unify: spread is a constraint, not a value that converges.
|
|
26
|
+
// Mark done to prevent fixpoint cycling.
|
|
27
|
+
out = this;
|
|
28
|
+
out.dc = type_1.DONE;
|
|
29
|
+
}
|
|
30
|
+
else if (peer.isSpread) {
|
|
31
|
+
// SpreadVal + SpreadVal: unify the two constraints
|
|
32
|
+
const merged = (0, unify_1.unite)(te ? ctx.clone({ explain: (0, utility_1.ec)(te, 'SPR') }) : ctx, this.peg, peer.peg, 'spread-merge');
|
|
33
|
+
out = new SpreadVal({ peg: merged }, ctx);
|
|
34
|
+
out.dc = merged.done ? type_1.DONE : this.dc + 1;
|
|
35
|
+
}
|
|
36
|
+
else if (peer.isMap) {
|
|
37
|
+
// SpreadVal + MapVal: apply spread to each map key
|
|
38
|
+
out = this.applyToMap(peer, ctx, te);
|
|
39
|
+
}
|
|
40
|
+
else if (peer.isList) {
|
|
41
|
+
// SpreadVal + ListVal: apply spread to each list element
|
|
42
|
+
out = this.applyToList(peer, ctx, te);
|
|
43
|
+
}
|
|
44
|
+
else if (peer.isConjunct) {
|
|
45
|
+
// SpreadVal + ConjunctVal: unify with the conjunct.
|
|
46
|
+
// The conjunct fold will place us last (high cjo).
|
|
47
|
+
out = peer.unify(this, te ? ctx.clone({ explain: (0, utility_1.ec)(te, 'SCJ') }) : ctx);
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
// SpreadVal + other: defer by wrapping in ConjunctVal
|
|
51
|
+
out = new ConjunctVal_1.ConjunctVal({ peg: [peer, this] }, ctx);
|
|
52
|
+
out.dc = this.dc + 1;
|
|
53
|
+
}
|
|
54
|
+
// Track unresolved spread count.
|
|
55
|
+
// cc=0: increment for spreads that don't vanish.
|
|
56
|
+
// cc>0: decrement when a spread vanishes.
|
|
57
|
+
if (0 === ctx.cc) {
|
|
58
|
+
if (out.isSpread && !out.done) {
|
|
59
|
+
ctx.sc++;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
else if (ctx.sc > 0) {
|
|
63
|
+
if (!(out.isSpread && !out.done)) {
|
|
64
|
+
ctx.sc--;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
ctx.explain && (0, utility_1.explainClose)(te, out);
|
|
68
|
+
return out;
|
|
69
|
+
}
|
|
70
|
+
// Apply this spread constraint to each key in a MapVal.
|
|
71
|
+
// Uses unite() per key with the correct descended context.
|
|
72
|
+
applyToMap(map, ctx, te) {
|
|
73
|
+
const spread = this.peg;
|
|
74
|
+
const mapKeys = Object.keys(map.peg);
|
|
75
|
+
// If map has no keys, preserve the spread for future merges.
|
|
76
|
+
// Mark as DONE to prevent fixpoint cycling.
|
|
77
|
+
if (mapKeys.length === 0) {
|
|
78
|
+
const out = new ConjunctVal_1.ConjunctVal({ peg: [map, this] }, ctx);
|
|
79
|
+
out.dc = type_1.DONE;
|
|
80
|
+
return out;
|
|
81
|
+
}
|
|
82
|
+
const out = new MapVal_1.MapVal({ peg: {} }, ctx);
|
|
83
|
+
out.closed = map.closed;
|
|
84
|
+
out.optionalKeys = 0 < map.optionalKeys.length
|
|
85
|
+
? [...map.optionalKeys] : map.optionalKeys;
|
|
86
|
+
out.site = map.site;
|
|
87
|
+
let done = true;
|
|
88
|
+
for (const key of mapKeys) {
|
|
89
|
+
const child = map.peg[key];
|
|
90
|
+
const keyctx = ctx.descend(key);
|
|
91
|
+
// Clone the spread for this key's context, then resolve any
|
|
92
|
+
// path-dependent functions (key(), path(), etc.) by unifying
|
|
93
|
+
// with TOP. This ensures the spread values are concrete before
|
|
94
|
+
// being merged as peer keys into the child map.
|
|
95
|
+
let key_spread = spread.spreadClone(keyctx);
|
|
96
|
+
if (!key_spread.done) {
|
|
97
|
+
key_spread = (0, unify_1.unite)(keyctx, key_spread, (0, top_1.top)(), 'spread-resolve');
|
|
98
|
+
}
|
|
99
|
+
// Clear type marks on the spread constraint root and its
|
|
100
|
+
// direct children — type() constrains but should not mark
|
|
101
|
+
// children as type-invisible.
|
|
102
|
+
key_spread.mark.type = false;
|
|
103
|
+
key_spread.mark.hide = false;
|
|
104
|
+
if (key_spread.isMap) {
|
|
105
|
+
for (const k in key_spread.peg) {
|
|
106
|
+
if (key_spread.peg[k]?.isVal) {
|
|
107
|
+
key_spread.peg[k].mark.type = false;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
(0, utility_1.propagateMarks)(map, child);
|
|
112
|
+
out.peg[key] =
|
|
113
|
+
undefined === child ? key_spread :
|
|
114
|
+
child.isNil ? child :
|
|
115
|
+
key_spread.isNil ? key_spread :
|
|
116
|
+
key_spread.isTop && child.done ? child :
|
|
117
|
+
child.isTop && key_spread.done ? key_spread :
|
|
118
|
+
(0, unify_1.unite)(te ? keyctx.clone({ explain: (0, utility_1.ec)(te, 'SK:' + key) }) : keyctx, child, key_spread, 'spread-apply');
|
|
119
|
+
done = done && (type_1.DONE === out.peg[key].dc);
|
|
120
|
+
}
|
|
121
|
+
out.dc = done ? type_1.DONE : map.dc + 1;
|
|
122
|
+
(0, utility_1.propagateMarks)(map, out);
|
|
123
|
+
// NOTE: do not propagate type/hide marks from the spread constraint
|
|
124
|
+
// to the output — a type spread constrains children but doesn't
|
|
125
|
+
// make them type-invisible.
|
|
126
|
+
return out;
|
|
127
|
+
}
|
|
128
|
+
// Apply this spread constraint to each element in a ListVal.
|
|
129
|
+
applyToList(list, ctx, te) {
|
|
130
|
+
const spread = this.peg;
|
|
131
|
+
const listKeys = Object.keys(list.peg);
|
|
132
|
+
if (listKeys.length === 0) {
|
|
133
|
+
const out = new ConjunctVal_1.ConjunctVal({ peg: [list, this] }, ctx);
|
|
134
|
+
out.dc = type_1.DONE;
|
|
135
|
+
return out;
|
|
136
|
+
}
|
|
137
|
+
const out = new ListVal_1.ListVal({ peg: [] }, ctx);
|
|
138
|
+
out.closed = list.closed;
|
|
139
|
+
out.optionalKeys = 0 < list.optionalKeys.length
|
|
140
|
+
? [...list.optionalKeys] : list.optionalKeys;
|
|
141
|
+
out.site = list.site;
|
|
142
|
+
let done = true;
|
|
143
|
+
for (const key of listKeys) {
|
|
144
|
+
const child = list.peg[key];
|
|
145
|
+
const keyctx = ctx.descend(key);
|
|
146
|
+
const key_spread = spread.spreadClone(keyctx);
|
|
147
|
+
(0, utility_1.propagateMarks)(list, child);
|
|
148
|
+
out.peg[key] =
|
|
149
|
+
undefined === child ? key_spread :
|
|
150
|
+
child.isNil ? child :
|
|
151
|
+
key_spread.isNil ? key_spread :
|
|
152
|
+
key_spread.isTop && child.done ? child :
|
|
153
|
+
child.isTop && key_spread.done ? key_spread :
|
|
154
|
+
(0, unify_1.unite)(te ? keyctx.clone({ explain: (0, utility_1.ec)(te, 'SL:' + key) }) : keyctx, child, key_spread, 'spread-apply-list');
|
|
155
|
+
done = done && (type_1.DONE === out.peg[key]?.dc);
|
|
156
|
+
}
|
|
157
|
+
out.dc = done ? type_1.DONE : list.dc + 1;
|
|
158
|
+
(0, utility_1.propagateMarks)(list, out);
|
|
159
|
+
return out;
|
|
160
|
+
}
|
|
161
|
+
clone(ctx, spec) {
|
|
162
|
+
const out = new SpreadVal({
|
|
163
|
+
peg: this.peg.clone(ctx, spec),
|
|
164
|
+
...(spec || {}),
|
|
165
|
+
}, ctx);
|
|
166
|
+
out.dc = this.done ? type_1.DONE : out.dc;
|
|
167
|
+
out.site = this.site;
|
|
168
|
+
return out;
|
|
169
|
+
}
|
|
170
|
+
spreadClone(ctx) {
|
|
171
|
+
if (!this.isPathDependent)
|
|
172
|
+
return this;
|
|
173
|
+
return this.clone(ctx);
|
|
174
|
+
}
|
|
175
|
+
get canon() {
|
|
176
|
+
// Use {&:...} for map spreads, [&:...] for list spreads, {&:X} for scalars
|
|
177
|
+
const pc = this.peg.canon;
|
|
178
|
+
if (this.peg.isMap)
|
|
179
|
+
return '{&:' + pc.slice(1, -1) + '}'; // {&:k:v,...}
|
|
180
|
+
if (this.peg.isList)
|
|
181
|
+
return '[&:' + pc.slice(1, -1) + ']'; // [&:v,...]
|
|
182
|
+
return '{&:' + pc + '}';
|
|
183
|
+
}
|
|
184
|
+
gen(_ctx) {
|
|
185
|
+
// Unresolved spread (never applied to a map/list) generates
|
|
186
|
+
// as undefined — the spread is a constraint, not a value.
|
|
187
|
+
return undefined;
|
|
188
|
+
}
|
|
189
|
+
inspection() {
|
|
190
|
+
return 'spread';
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
exports.SpreadVal = SpreadVal;
|
|
194
|
+
//# sourceMappingURL=SpreadVal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SpreadVal.js","sourceRoot":"","sources":["../../src/val/SpreadVal.ts"],"names":[],"mappings":"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"}
|
package/dist/val/Val.d.ts
CHANGED
|
@@ -34,10 +34,11 @@ declare abstract class Val {
|
|
|
34
34
|
isList: boolean;
|
|
35
35
|
isScalar: boolean;
|
|
36
36
|
isScalarKind: boolean;
|
|
37
|
-
|
|
37
|
+
isPath: boolean;
|
|
38
38
|
isPref: boolean;
|
|
39
39
|
isVar: boolean;
|
|
40
40
|
isBag: boolean;
|
|
41
|
+
isSpread: boolean;
|
|
41
42
|
isNumber: boolean;
|
|
42
43
|
isInteger: boolean;
|
|
43
44
|
isString: boolean;
|
package/dist/val/Val.js
CHANGED
|
@@ -56,7 +56,10 @@ class Val {
|
|
|
56
56
|
this.peg = spec?.peg;
|
|
57
57
|
if (Array.isArray(this.peg)) {
|
|
58
58
|
let spread = this.peg[SPREAD];
|
|
59
|
-
|
|
59
|
+
if (this.peg.includes(undefined)) {
|
|
60
|
+
this.peg = this.peg.filter(n => undefined !== n);
|
|
61
|
+
}
|
|
62
|
+
;
|
|
60
63
|
this.peg[SPREAD] = spread;
|
|
61
64
|
}
|
|
62
65
|
// spec.path takes precedence over ctx.path: lets callers (notably
|
|
@@ -116,7 +119,7 @@ class Val {
|
|
|
116
119
|
get isPathDependent() {
|
|
117
120
|
if (this._isPathDependent !== undefined)
|
|
118
121
|
return this._isPathDependent;
|
|
119
|
-
let dep = this.
|
|
122
|
+
let dep = this.isPath || this.isKeyFunc || this.isPathFunc ||
|
|
120
123
|
this.isMoveFunc || this.isSuperFunc;
|
|
121
124
|
if (!dep) {
|
|
122
125
|
const peg = this.peg;
|
|
@@ -138,11 +141,6 @@ class Val {
|
|
|
138
141
|
}
|
|
139
142
|
}
|
|
140
143
|
}
|
|
141
|
-
if (!dep) {
|
|
142
|
-
const spreadCj = this.spread?.cj;
|
|
143
|
-
if (spreadCj && spreadCj.isPathDependent)
|
|
144
|
-
dep = true;
|
|
145
|
-
}
|
|
146
144
|
}
|
|
147
145
|
this._isPathDependent = dep;
|
|
148
146
|
return dep;
|
|
@@ -221,10 +219,11 @@ Object.assign(Val.prototype, {
|
|
|
221
219
|
isList: false,
|
|
222
220
|
isScalar: false,
|
|
223
221
|
isScalarKind: false,
|
|
224
|
-
|
|
222
|
+
isPath: false,
|
|
225
223
|
isPref: false,
|
|
226
224
|
isVar: false,
|
|
227
225
|
isBag: false,
|
|
226
|
+
isSpread: false,
|
|
228
227
|
isNumber: false,
|
|
229
228
|
isInteger: false,
|
|
230
229
|
isString: false,
|