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.
Files changed (79) hide show
  1. package/dist/ctx.d.ts +5 -2
  2. package/dist/ctx.js +2 -1
  3. package/dist/ctx.js.map +1 -1
  4. package/dist/lang.d.ts +5 -1
  5. package/dist/lang.js +100 -24
  6. package/dist/lang.js.map +1 -1
  7. package/dist/tsconfig.tsbuildinfo +1 -1
  8. package/dist/type.d.ts +5 -0
  9. package/dist/type.js.map +1 -1
  10. package/dist/unify.js +292 -13
  11. package/dist/unify.js.map +1 -1
  12. package/dist/utility.js +6 -2
  13. package/dist/utility.js.map +1 -1
  14. package/dist/val/BagVal.d.ts +0 -3
  15. package/dist/val/BagVal.js +6 -6
  16. package/dist/val/BagVal.js.map +1 -1
  17. package/dist/val/ConjunctVal.d.ts +1 -1
  18. package/dist/val/ConjunctVal.js +137 -14
  19. package/dist/val/ConjunctVal.js.map +1 -1
  20. package/dist/val/CopyFuncVal.js +3 -2
  21. package/dist/val/CopyFuncVal.js.map +1 -1
  22. package/dist/val/DisjunctVal.js +4 -0
  23. package/dist/val/DisjunctVal.js.map +1 -1
  24. package/dist/val/ExpectVal.js +16 -3
  25. package/dist/val/ExpectVal.js.map +1 -1
  26. package/dist/val/JunctionVal.d.ts +1 -0
  27. package/dist/val/JunctionVal.js +6 -1
  28. package/dist/val/JunctionVal.js.map +1 -1
  29. package/dist/val/KeyFuncVal.js +0 -2
  30. package/dist/val/KeyFuncVal.js.map +1 -1
  31. package/dist/val/ListVal.d.ts +1 -0
  32. package/dist/val/ListVal.js +33 -66
  33. package/dist/val/ListVal.js.map +1 -1
  34. package/dist/val/MapVal.d.ts +3 -2
  35. package/dist/val/MapVal.js +67 -95
  36. package/dist/val/MapVal.js.map +1 -1
  37. package/dist/val/MoveFuncVal.d.ts +2 -1
  38. package/dist/val/MoveFuncVal.js +78 -13
  39. package/dist/val/MoveFuncVal.js.map +1 -1
  40. package/dist/val/PathFuncVal.js +25 -4
  41. package/dist/val/PathFuncVal.js.map +1 -1
  42. package/dist/val/{RefVal.d.ts → PathVal.d.ts} +4 -3
  43. package/dist/val/{RefVal.js → PathVal.js} +75 -77
  44. package/dist/val/PathVal.js.map +1 -0
  45. package/dist/val/PlusOpVal.d.ts +1 -1
  46. package/dist/val/PrefVal.js +18 -5
  47. package/dist/val/PrefVal.js.map +1 -1
  48. package/dist/val/SpreadVal.d.ts +20 -0
  49. package/dist/val/SpreadVal.js +194 -0
  50. package/dist/val/SpreadVal.js.map +1 -0
  51. package/dist/val/Val.d.ts +2 -1
  52. package/dist/val/Val.js +7 -8
  53. package/dist/val/Val.js.map +1 -1
  54. package/dist/val/VarVal.js +2 -2
  55. package/dist/val/VarVal.js.map +1 -1
  56. package/package.json +5 -6
  57. package/src/ctx.ts +16 -3
  58. package/src/lang.ts +113 -23
  59. package/src/type.ts +5 -0
  60. package/src/unify.ts +310 -13
  61. package/src/utility.ts +5 -2
  62. package/src/val/BagVal.ts +6 -7
  63. package/src/val/ConjunctVal.ts +131 -13
  64. package/src/val/CopyFuncVal.ts +3 -2
  65. package/src/val/DisjunctVal.ts +6 -0
  66. package/src/val/ExpectVal.ts +18 -4
  67. package/src/val/JunctionVal.ts +5 -1
  68. package/src/val/KeyFuncVal.ts +0 -3
  69. package/src/val/ListVal.ts +38 -88
  70. package/src/val/MapVal.ts +75 -124
  71. package/src/val/MoveFuncVal.ts +79 -14
  72. package/src/val/PathFuncVal.ts +29 -4
  73. package/src/val/PathVal.ts +435 -0
  74. package/src/val/PrefVal.ts +19 -6
  75. package/src/val/{RefVal.ts → RefVal.ts.old} +30 -19
  76. package/src/val/SpreadVal.ts +275 -0
  77. package/src/val/Val.ts +9 -9
  78. package/src/val/VarVal.ts +2 -2
  79. package/dist/val/RefVal.js.map +0 -1
@@ -1,26 +1,28 @@
1
1
  "use strict";
2
- /* Copyright (c) 2021-2025 Richard Rodger, MIT License */
2
+ /* Copyright (c) 2025 Richard Rodger, MIT License */
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.RefVal = void 0;
5
- const utility_1 = require("../utility");
4
+ exports.PathVal = void 0;
6
5
  const type_1 = require("../type");
7
- const err_1 = require("../err");
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 RefVal extends FeatureVal_1.FeatureVal {
17
+ class PathVal extends FeatureVal_1.FeatureVal {
17
18
  constructor(spec, ctx) {
18
19
  super(spec, ctx);
19
- this.isRef = true;
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 RefVal) {
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
- const te = ctx.explain && (0, utility_1.explainOpen)(ctx, ctx.explain, 'Ref', this, peer);
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
- let why = 'id';
88
- if (this.id !== peer.id) {
89
- // TODO: not resolved when all Vals in path are done is an error
90
- // as path cannot be found
91
- // let resolved: Val | undefined = null == ctx ? this : ctx.find(this)
92
- let found = null == ctx ? this : this.find(ctx);
93
- const resolved = found ?? this;
94
- if (null == resolved && this.canon === peer.canon) {
95
- out = this;
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
- // console.log('FOUND-B', out)
278
- out = out.clone(ctx);
279
- // if (this.mark.type || this.mark.hide) {
280
- (0, utility_1.walk)(out, (_key, val) => {
281
- val.mark.type = false;
282
- val.mark.hide = false;
283
- return val;
284
- });
285
- //}
286
- // onsole.log('FOUND-C', out)
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
- // Unresolved ref cannot be generated, so always an error.
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.RefVal = RefVal;
332
- //# sourceMappingURL=RefVal.js.map
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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"}
@@ -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[]): BooleanVal | IntegerVal | NumberVal | StringVal | undefined;
13
+ operate(_ctx: AontuContext, args: Val[]): StringVal | IntegerVal | NumberVal | BooleanVal | undefined;
14
14
  get canon(): string;
15
15
  }
16
16
  export { PlusOpVal, };
@@ -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
- out = (0, unify_1.unite)(te ? ctx.clone({ explain: (0, utility_1.ec)(te, 'SUPER') }) : ctx, this.superpeg, peer, 'pref-super/' + this.id);
73
- if (out.same(this.superpeg)) {
74
- out = this.peg;
75
- why += 'same';
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
  }
@@ -1 +1 @@
1
- {"version":3,"file":"PrefVal.js","sourceRoot":"","sources":["../../src/val/PrefVal.ts"],"names":[],"mappings":"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"}
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
- isRef: boolean;
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
- this.peg = this.peg.filter(n => undefined !== n);
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.isRef || this.isKeyFunc || this.isPathFunc ||
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
- isRef: false,
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,