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
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import type { Val, ValSpec } from '../type';
|
|
2
2
|
import { AontuContext } from '../ctx';
|
|
3
3
|
import { FeatureVal } from './FeatureVal';
|
|
4
|
-
declare class
|
|
5
|
-
|
|
4
|
+
declare class PathVal extends FeatureVal {
|
|
5
|
+
isPath: boolean;
|
|
6
6
|
isGenable: boolean;
|
|
7
7
|
cjo: number;
|
|
8
8
|
absolute: boolean;
|
|
9
9
|
prefix: boolean;
|
|
10
|
+
_resolved: Val | undefined;
|
|
10
11
|
constructor(spec: {
|
|
11
12
|
peg: any[];
|
|
12
13
|
absolute?: boolean;
|
|
@@ -21,4 +22,4 @@ declare class RefVal extends FeatureVal {
|
|
|
21
22
|
gen(ctx: AontuContext): undefined;
|
|
22
23
|
inspection(): string;
|
|
23
24
|
}
|
|
24
|
-
export {
|
|
25
|
+
export { PathVal, };
|
|
@@ -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)(ctx.clone({ explain: (0, utility_1.ec)(te, 'RES') }), 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) {
|
|
@@ -32,11 +33,14 @@ class PrefVal extends FeatureVal_1.FeatureVal {
|
|
|
32
33
|
let out = this;
|
|
33
34
|
let why = '';
|
|
34
35
|
if (!this.peg.done) {
|
|
35
|
-
const resolved = (0, unify_1.unite)(ctx.clone({ explain:
|
|
36
|
-
// console.log('PREF-RESOLVED', this.peg.canon, '->', resolved)
|
|
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');
|
|
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) {
|
|
@@ -61,7 +65,7 @@ class PrefVal extends FeatureVal_1.FeatureVal {
|
|
|
61
65
|
// this.peg.id, this.peg, this.peg.done,
|
|
62
66
|
// peer.peg.id, peer.peg, peer.peg.done,
|
|
63
67
|
// )
|
|
64
|
-
let peg = (0, unify_1.unite)(ctx.clone({ explain:
|
|
68
|
+
let peg = (0, unify_1.unite)(te ? ctx.clone({ explain: (0, utility_1.ec)(te, 'PREF-PEER') }) : ctx, this.peg, peer.peg, 'pref-peer/' + this.id);
|
|
65
69
|
out = new PrefVal({ peg }, ctx);
|
|
66
70
|
// console.log('PREF-RANK-SAME-OUT', peg, peg.done, out, out.done)
|
|
67
71
|
why += 'rank-same';
|
|
@@ -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,GAAG,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,
|
|
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;
|
|
@@ -80,6 +81,8 @@ declare abstract class Val {
|
|
|
80
81
|
same(peer: Val): boolean;
|
|
81
82
|
clone(ctx: AontuContext, spec?: ValSpec): Val;
|
|
82
83
|
spreadClone(ctx: AontuContext): Val;
|
|
84
|
+
_isPathDependent?: boolean;
|
|
85
|
+
get isPathDependent(): boolean;
|
|
83
86
|
place(v: Val): Val;
|
|
84
87
|
unify(_peer: Val, _ctx: AontuContext): Val;
|
|
85
88
|
get canon(): string;
|