aontu 0.44.0 → 0.46.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/cli.d.ts +9 -0
- package/dist/cli.js +203 -0
- package/dist/cli.js.map +1 -0
- package/dist/ctx.d.ts +2 -5
- package/dist/ctx.js +1 -2
- package/dist/ctx.js.map +1 -1
- package/dist/lang.d.ts +1 -5
- package/dist/lang.js +24 -100
- package/dist/lang.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/type.d.ts +0 -5
- package/dist/type.js.map +1 -1
- package/dist/unify.js +13 -292
- package/dist/unify.js.map +1 -1
- package/dist/utility.js +2 -6
- package/dist/utility.js.map +1 -1
- package/dist/val/BagVal.d.ts +3 -0
- 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 +14 -137
- package/dist/val/ConjunctVal.js.map +1 -1
- package/dist/val/CopyFuncVal.js +2 -3
- package/dist/val/CopyFuncVal.js.map +1 -1
- package/dist/val/DisjunctVal.js +0 -4
- package/dist/val/DisjunctVal.js.map +1 -1
- package/dist/val/ExpectVal.js +3 -16
- package/dist/val/ExpectVal.js.map +1 -1
- package/dist/val/JunctionVal.d.ts +0 -1
- package/dist/val/JunctionVal.js +1 -6
- package/dist/val/JunctionVal.js.map +1 -1
- package/dist/val/KeyFuncVal.js +2 -0
- package/dist/val/KeyFuncVal.js.map +1 -1
- package/dist/val/ListVal.d.ts +0 -1
- package/dist/val/ListVal.js +66 -33
- package/dist/val/ListVal.js.map +1 -1
- package/dist/val/MapVal.d.ts +2 -3
- package/dist/val/MapVal.js +95 -67
- package/dist/val/MapVal.js.map +1 -1
- package/dist/val/MoveFuncVal.d.ts +1 -2
- package/dist/val/MoveFuncVal.js +13 -78
- package/dist/val/MoveFuncVal.js.map +1 -1
- package/dist/val/PathFuncVal.js +4 -25
- package/dist/val/PathFuncVal.js.map +1 -1
- package/dist/val/PlusOpVal.d.ts +1 -1
- package/dist/val/PrefVal.js +5 -18
- package/dist/val/PrefVal.js.map +1 -1
- package/dist/val/{PathVal.d.ts → RefVal.d.ts} +3 -4
- package/dist/val/{PathVal.js → RefVal.js} +77 -75
- package/dist/val/RefVal.js.map +1 -0
- package/dist/val/Val.d.ts +1 -2
- package/dist/val/Val.js +8 -7
- 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 +9 -4
- package/src/cli.ts +193 -0
- package/src/ctx.ts +3 -16
- package/src/lang.ts +23 -113
- package/src/type.ts +0 -5
- package/src/unify.ts +13 -310
- package/src/utility.ts +2 -5
- package/src/val/BagVal.ts +7 -6
- package/src/val/ConjunctVal.ts +13 -131
- package/src/val/CopyFuncVal.ts +2 -3
- package/src/val/DisjunctVal.ts +0 -6
- package/src/val/ExpectVal.ts +4 -18
- package/src/val/JunctionVal.ts +1 -5
- package/src/val/KeyFuncVal.ts +3 -0
- package/src/val/ListVal.ts +88 -38
- package/src/val/MapVal.ts +124 -75
- package/src/val/MoveFuncVal.ts +14 -79
- package/src/val/PathFuncVal.ts +4 -29
- package/src/val/PrefVal.ts +6 -19
- package/src/val/{RefVal.ts.old → RefVal.ts} +19 -30
- package/src/val/Val.ts +9 -9
- package/src/val/VarVal.ts +2 -2
- package/README.md +0 -18
- package/dist/val/PathVal.js.map +0 -1
- package/dist/val/SpreadVal.d.ts +0 -20
- package/dist/val/SpreadVal.js +0 -194
- package/dist/val/SpreadVal.js.map +0 -1
- package/src/val/PathVal.ts +0 -435
- package/src/val/SpreadVal.ts +0 -275
package/src/val/MoveFuncVal.ts
CHANGED
|
@@ -13,7 +13,6 @@ import {
|
|
|
13
13
|
import { makeNilErr } from '../err'
|
|
14
14
|
|
|
15
15
|
import { NilVal } from '../val/NilVal'
|
|
16
|
-
import { PathVal } from '../val/PathVal'
|
|
17
16
|
|
|
18
17
|
import {
|
|
19
18
|
walk
|
|
@@ -27,60 +26,6 @@ import { PrefFuncVal } from './PrefFuncVal'
|
|
|
27
26
|
|
|
28
27
|
|
|
29
28
|
|
|
30
|
-
// Navigate the tree using a PathVal's resolved path and hide the source.
|
|
31
|
-
function hideAtPath(root: Val, pv: PathVal) {
|
|
32
|
-
// Compute the refpath the same way PathVal.find does
|
|
33
|
-
const parts: string[] = []
|
|
34
|
-
for (const part of pv.peg) {
|
|
35
|
-
if ('string' === typeof part) parts.push(part)
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
let refpath: string[]
|
|
39
|
-
if (pv.absolute) {
|
|
40
|
-
refpath = parts
|
|
41
|
-
}
|
|
42
|
-
else {
|
|
43
|
-
refpath = pv.path.slice(0, -1).concat(parts)
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
// Walk to the source, handling conjuncts/disjuncts
|
|
47
|
-
let node: any = root
|
|
48
|
-
for (let i = 0; i < refpath.length; i++) {
|
|
49
|
-
const part = refpath[i]
|
|
50
|
-
if (node?.isMap || node?.isList) {
|
|
51
|
-
node = node.peg[part]
|
|
52
|
-
}
|
|
53
|
-
else if (node?.isConjunct || node?.isDisjunct) {
|
|
54
|
-
// Search junction terms for the key
|
|
55
|
-
let found = null
|
|
56
|
-
const stack = [...node.peg]
|
|
57
|
-
while (stack.length > 0) {
|
|
58
|
-
const term = stack.pop()
|
|
59
|
-
if (term?.isConjunct || term?.isDisjunct) {
|
|
60
|
-
stack.push(...term.peg)
|
|
61
|
-
}
|
|
62
|
-
else if ((term?.isMap || term?.isList) && term.peg[part] != null) {
|
|
63
|
-
found = term.peg[part]
|
|
64
|
-
break
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
node = found
|
|
68
|
-
}
|
|
69
|
-
else {
|
|
70
|
-
return
|
|
71
|
-
}
|
|
72
|
-
if (node == null) return
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
// Mark the source value hidden
|
|
76
|
-
node.mark.hide = true
|
|
77
|
-
walk(node, (_key: string | number | undefined, val: Val) => {
|
|
78
|
-
val.mark.hide = true
|
|
79
|
-
return val
|
|
80
|
-
})
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
|
|
84
29
|
class MoveFuncVal extends FuncBaseVal {
|
|
85
30
|
isMoveFunc = true
|
|
86
31
|
|
|
@@ -105,40 +50,30 @@ class MoveFuncVal extends FuncBaseVal {
|
|
|
105
50
|
}
|
|
106
51
|
|
|
107
52
|
resolve(ctx: AontuContext, args: Val[]) {
|
|
108
|
-
let
|
|
109
|
-
if (arg.isNil) return arg
|
|
53
|
+
let out = args[0] ?? makeNilErr(ctx, 'arg', this)
|
|
110
54
|
|
|
111
|
-
|
|
55
|
+
const orig = out
|
|
112
56
|
|
|
113
|
-
if (
|
|
114
|
-
|
|
115
|
-
src = arg.find(ctx) as Val
|
|
116
|
-
if (src == null || src.isNil) return makeNilErr(ctx, 'arg', this)
|
|
57
|
+
if (!orig.isNil) {
|
|
58
|
+
const src = orig.clone(ctx)
|
|
117
59
|
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
else {
|
|
122
|
-
src = arg.clone(ctx)
|
|
60
|
+
if (src.isRef) {
|
|
61
|
+
src.mark._hide_found = true
|
|
62
|
+
}
|
|
123
63
|
|
|
124
|
-
|
|
125
|
-
arg.mark.hide = true
|
|
126
|
-
walk(arg, (_key: string | number | undefined, val: Val) => {
|
|
64
|
+
walk(orig, (_key: string | number | undefined, val: Val) => {
|
|
127
65
|
val.mark.hide = true
|
|
128
66
|
return val
|
|
129
67
|
})
|
|
68
|
+
|
|
69
|
+
// out = new CopyFuncVal({ peg: [src] }, ctx)
|
|
70
|
+
out = new PrefFuncVal({ peg: [src] }, ctx)
|
|
71
|
+
// out = src
|
|
130
72
|
}
|
|
131
73
|
|
|
132
|
-
//
|
|
133
|
-
src.mark.type = false
|
|
134
|
-
src.mark.hide = false
|
|
135
|
-
walk(src, (_key: string | number | undefined, val: Val) => {
|
|
136
|
-
val.mark.type = false
|
|
137
|
-
val.mark.hide = false
|
|
138
|
-
return val
|
|
139
|
-
})
|
|
74
|
+
// console.log('MOVE-resolve', orig, out)
|
|
140
75
|
|
|
141
|
-
return
|
|
76
|
+
return out
|
|
142
77
|
}
|
|
143
78
|
}
|
|
144
79
|
|
package/src/val/PathFuncVal.ts
CHANGED
|
@@ -6,10 +6,6 @@ import type {
|
|
|
6
6
|
ValSpec,
|
|
7
7
|
} from '../type'
|
|
8
8
|
|
|
9
|
-
import {
|
|
10
|
-
DONE,
|
|
11
|
-
} from '../type'
|
|
12
|
-
|
|
13
9
|
import {
|
|
14
10
|
AontuContext,
|
|
15
11
|
} from '../ctx'
|
|
@@ -17,7 +13,7 @@ import {
|
|
|
17
13
|
import { makeNilErr } from '../err'
|
|
18
14
|
|
|
19
15
|
import { NilVal } from '../val/NilVal'
|
|
20
|
-
import {
|
|
16
|
+
import { RefVal } from '../val/RefVal'
|
|
21
17
|
import { FuncBaseVal } from './FuncBaseVal'
|
|
22
18
|
|
|
23
19
|
|
|
@@ -49,26 +45,12 @@ class PathFuncVal extends FuncBaseVal {
|
|
|
49
45
|
let arg = args[0]
|
|
50
46
|
|
|
51
47
|
if (0 === this.prepared) {
|
|
52
|
-
if (arg
|
|
53
|
-
|
|
54
|
-
const found = arg.find(ctx)
|
|
55
|
-
if (found != null && !found.isNil) {
|
|
56
|
-
arg = found
|
|
57
|
-
}
|
|
58
|
-
else {
|
|
59
|
-
arg.dc = DONE
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
else if (arg.isScalar && arg.peg != null && arg.peg !== ''
|
|
63
|
-
&& ('string' === typeof arg.peg || arg.isNumber)) {
|
|
64
|
-
// String or number arg like path("foo") or path(0.2) — create a path value
|
|
65
|
-
arg = this.place(new PathVal({ peg: [arg], absolute: false })) as PathVal
|
|
66
|
-
arg.dc = DONE
|
|
48
|
+
if (arg.isScalar) {
|
|
49
|
+
arg = this.place(new RefVal({ peg: [arg], absolute: false }))
|
|
67
50
|
}
|
|
68
|
-
else if (arg.
|
|
51
|
+
else if (!arg.isRef) {
|
|
69
52
|
arg = makeNilErr(ctx, 'invalid-arg', this)
|
|
70
53
|
}
|
|
71
|
-
// else: already resolved by preprocessing — pass through
|
|
72
54
|
}
|
|
73
55
|
|
|
74
56
|
args[0] = arg
|
|
@@ -82,13 +64,6 @@ class PathFuncVal extends FuncBaseVal {
|
|
|
82
64
|
resolve(ctx: AontuContext, args: Val[]) {
|
|
83
65
|
let out = args[0] ?? makeNilErr(ctx, 'arg', this)
|
|
84
66
|
|
|
85
|
-
if (out instanceof PathVal) {
|
|
86
|
-
const found = out.find(ctx)
|
|
87
|
-
if (found != null && !found.isNil) {
|
|
88
|
-
out = found
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
|
|
92
67
|
return out
|
|
93
68
|
}
|
|
94
69
|
|
package/src/val/PrefVal.ts
CHANGED
|
@@ -22,7 +22,6 @@ import {
|
|
|
22
22
|
|
|
23
23
|
import { top } from './top'
|
|
24
24
|
|
|
25
|
-
import { ConjunctVal } from './ConjunctVal'
|
|
26
25
|
import { FeatureVal } from './FeatureVal'
|
|
27
26
|
|
|
28
27
|
|
|
@@ -65,13 +64,10 @@ class PrefVal extends FeatureVal {
|
|
|
65
64
|
if (!this.peg.done) {
|
|
66
65
|
const resolved = unite(te ? ctx.clone({ explain: ec(te, 'RES') }) : ctx,
|
|
67
66
|
this.peg, top(), 'pref/resolve')
|
|
67
|
+
// console.log('PREF-RESOLVED', this.peg.canon, '->', resolved)
|
|
68
68
|
this.peg = resolved
|
|
69
69
|
this.superpeg = this.peg.superior()
|
|
70
70
|
}
|
|
71
|
-
else if (this.superpeg.isTop && !this.peg.isTop) {
|
|
72
|
-
// Stale superpeg from pre-resolved PathVal — recalculate
|
|
73
|
-
this.superpeg = this.peg.superior()
|
|
74
|
-
}
|
|
75
71
|
|
|
76
72
|
if (peer instanceof PrefVal) {
|
|
77
73
|
why += 'pref-'
|
|
@@ -110,20 +106,11 @@ class PrefVal extends FeatureVal {
|
|
|
110
106
|
else if (!peer.isTop) {
|
|
111
107
|
why += 'super-'
|
|
112
108
|
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
if (
|
|
116
|
-
out =
|
|
117
|
-
|
|
118
|
-
why += 'defer'
|
|
119
|
-
}
|
|
120
|
-
else {
|
|
121
|
-
out = unite(te ? ctx.clone({ explain: ec(te, 'SUPER') }) : ctx,
|
|
122
|
-
this.superpeg, peer, 'pref-super/' + this.id)
|
|
123
|
-
if (out.same(this.superpeg)) {
|
|
124
|
-
out = this.peg
|
|
125
|
-
why += 'same'
|
|
126
|
-
}
|
|
109
|
+
out = unite(te ? ctx.clone({ explain: ec(te, 'SUPER') }) : ctx,
|
|
110
|
+
this.superpeg, peer, 'pref-super/' + this.id)
|
|
111
|
+
if (out.same(this.superpeg)) {
|
|
112
|
+
out = this.peg
|
|
113
|
+
why += 'same'
|
|
127
114
|
}
|
|
128
115
|
|
|
129
116
|
// }
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
/* Copyright (c) 2021-2025 Richard Rodger, MIT License */
|
|
2
2
|
|
|
3
3
|
|
|
4
|
+
import Util from 'node:util'
|
|
5
|
+
|
|
4
6
|
import {
|
|
5
7
|
walk,
|
|
6
8
|
explainOpen,
|
|
@@ -14,7 +16,6 @@ import type {
|
|
|
14
16
|
ValSpec,
|
|
15
17
|
} from '../type'
|
|
16
18
|
|
|
17
|
-
|
|
18
19
|
import {
|
|
19
20
|
DONE,
|
|
20
21
|
} from '../type'
|
|
@@ -136,23 +137,10 @@ class RefVal extends FeatureVal {
|
|
|
136
137
|
unify(peer: Val, ctx: AontuContext): Val {
|
|
137
138
|
peer = peer ?? top()
|
|
138
139
|
|
|
139
|
-
// TEMPORARY: nerf RefVals to verify spread-first resolution
|
|
140
|
-
return makeNilErr(ctx, 'ref_test_block', this, peer)
|
|
141
|
-
|
|
142
140
|
const te = ctx.explain && explainOpen(ctx, ctx.explain, 'Ref', this, peer)
|
|
143
141
|
let out: Val = this
|
|
144
142
|
let why = 'id'
|
|
145
143
|
|
|
146
|
-
// Defer ref resolution on first pass and while spreads remain
|
|
147
|
-
if (0 === ctx.cc || 0 < ctx.sc) {
|
|
148
|
-
if (!peer.isTop && this.id !== peer.id) {
|
|
149
|
-
out = new ConjunctVal({ peg: [this, peer] }, ctx)
|
|
150
|
-
}
|
|
151
|
-
out.dc = DONE === out.dc ? DONE : this.dc + 1
|
|
152
|
-
explainClose(te, out)
|
|
153
|
-
return out
|
|
154
|
-
}
|
|
155
|
-
|
|
156
144
|
if (this.id !== peer.id) {
|
|
157
145
|
|
|
158
146
|
// TODO: not resolved when all Vals in path are done is an error
|
|
@@ -371,30 +359,31 @@ class RefVal extends FeatureVal {
|
|
|
371
359
|
if (this.mark.type || this.mark.hide) {
|
|
372
360
|
out.mark.type = this.mark.type
|
|
373
361
|
out.mark.hide = this.mark.hide
|
|
362
|
+
|
|
363
|
+
// walk(out, (_key: string | number | undefined, val: Val) => {
|
|
364
|
+
// val.mark.type = this.mark.type
|
|
365
|
+
// val.mark.hide = this.mark.hide
|
|
366
|
+
// return val
|
|
367
|
+
// })
|
|
374
368
|
}
|
|
375
369
|
|
|
376
370
|
if (this.mark._hide_found) {
|
|
377
371
|
out.mark.hide = true
|
|
378
372
|
}
|
|
379
373
|
|
|
380
|
-
//
|
|
381
|
-
const cacheKey = this.id + '|' + out.id
|
|
382
|
-
const cache = ctx._refCloneCache
|
|
383
|
-
const cached = cache?.get(cacheKey)
|
|
384
|
-
if (cached !== undefined) {
|
|
385
|
-
out = cached
|
|
386
|
-
}
|
|
387
|
-
else {
|
|
388
|
-
out = out.clone(ctx)
|
|
374
|
+
// console.log('FOUND-B', out)
|
|
389
375
|
|
|
390
|
-
|
|
391
|
-
val.mark.type = false
|
|
392
|
-
val.mark.hide = false
|
|
393
|
-
return val
|
|
394
|
-
})
|
|
376
|
+
out = out.clone(ctx)
|
|
395
377
|
|
|
396
|
-
|
|
397
|
-
|
|
378
|
+
// if (this.mark.type || this.mark.hide) {
|
|
379
|
+
walk(out, (_key: string | number | undefined, val: Val) => {
|
|
380
|
+
val.mark.type = false
|
|
381
|
+
val.mark.hide = false
|
|
382
|
+
return val
|
|
383
|
+
})
|
|
384
|
+
//}
|
|
385
|
+
|
|
386
|
+
// onsole.log('FOUND-C', out)
|
|
398
387
|
}
|
|
399
388
|
}
|
|
400
389
|
}
|
package/src/val/Val.ts
CHANGED
|
@@ -69,11 +69,10 @@ abstract class Val {
|
|
|
69
69
|
declare isList: boolean
|
|
70
70
|
declare isScalar: boolean
|
|
71
71
|
declare isScalarKind: boolean
|
|
72
|
-
declare
|
|
72
|
+
declare isRef: boolean
|
|
73
73
|
declare isPref: boolean
|
|
74
74
|
declare isVar: boolean
|
|
75
75
|
declare isBag: boolean
|
|
76
|
-
declare isSpread: boolean
|
|
77
76
|
declare isNumber: boolean
|
|
78
77
|
declare isInteger: boolean
|
|
79
78
|
declare isString: boolean
|
|
@@ -151,10 +150,8 @@ abstract class Val {
|
|
|
151
150
|
|
|
152
151
|
if (Array.isArray(this.peg)) {
|
|
153
152
|
let spread = (this.peg as any)[SPREAD]
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
}
|
|
157
|
-
;(this.peg as any)[SPREAD] = spread
|
|
153
|
+
this.peg = this.peg.filter(n => undefined !== n)
|
|
154
|
+
; (this.peg as any)[SPREAD] = spread
|
|
158
155
|
}
|
|
159
156
|
|
|
160
157
|
// spec.path takes precedence over ctx.path: lets callers (notably
|
|
@@ -242,7 +239,7 @@ abstract class Val {
|
|
|
242
239
|
get isPathDependent(): boolean {
|
|
243
240
|
if (this._isPathDependent !== undefined) return this._isPathDependent
|
|
244
241
|
let dep =
|
|
245
|
-
this.
|
|
242
|
+
this.isRef || this.isKeyFunc || this.isPathFunc ||
|
|
246
243
|
this.isMoveFunc || this.isSuperFunc
|
|
247
244
|
if (!dep) {
|
|
248
245
|
const peg = this.peg
|
|
@@ -258,6 +255,10 @@ abstract class Val {
|
|
|
258
255
|
if (c && c.isVal && c.isPathDependent) { dep = true; break }
|
|
259
256
|
}
|
|
260
257
|
}
|
|
258
|
+
if (!dep) {
|
|
259
|
+
const spreadCj = (this as any).spread?.cj as Val | undefined
|
|
260
|
+
if (spreadCj && spreadCj.isPathDependent) dep = true
|
|
261
|
+
}
|
|
261
262
|
}
|
|
262
263
|
this._isPathDependent = dep
|
|
263
264
|
return dep
|
|
@@ -366,11 +367,10 @@ Object.assign(Val.prototype, {
|
|
|
366
367
|
isList: false,
|
|
367
368
|
isScalar: false,
|
|
368
369
|
isScalarKind: false,
|
|
369
|
-
|
|
370
|
+
isRef: false,
|
|
370
371
|
isPref: false,
|
|
371
372
|
isVar: false,
|
|
372
373
|
isBag: false,
|
|
373
|
-
isSpread: false,
|
|
374
374
|
isNumber: false,
|
|
375
375
|
isInteger: false,
|
|
376
376
|
isString: false,
|
package/src/val/VarVal.ts
CHANGED
|
@@ -62,7 +62,7 @@ class VarVal extends FeatureVal {
|
|
|
62
62
|
if (this.peg.isVal) {
|
|
63
63
|
// $.a.b.c - convert path to absolute
|
|
64
64
|
// if (this.peg instanceof RefVal) {
|
|
65
|
-
if (this.peg.
|
|
65
|
+
if (this.peg.isRef) {
|
|
66
66
|
this.peg.absolute = true
|
|
67
67
|
nameVal = this.peg
|
|
68
68
|
}
|
|
@@ -76,7 +76,7 @@ class VarVal extends FeatureVal {
|
|
|
76
76
|
}
|
|
77
77
|
|
|
78
78
|
// if (!(nameVal instanceof RefVal) && DONE === nameVal.dc) {
|
|
79
|
-
if (!(nameVal.
|
|
79
|
+
if (!(nameVal.isRef) && DONE === nameVal.dc) {
|
|
80
80
|
if (nameVal instanceof StringVal) {
|
|
81
81
|
let found = ctx.vars[nameVal.peg]
|
|
82
82
|
if (undefined === found) {
|
package/README.md
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
<a name="top"></a>
|
|
2
|
-
|
|
3
|
-
# Aontu: JSON Structure unifier
|
|
4
|
-
|
|
5
|
-
[](https://npmjs.com/package/aontu)
|
|
6
|
-
[](https://github.com/rjrodger/aontu/actions/workflows/build.yml)
|
|
7
|
-
[](https://coveralls.io/github/rjrodger/aontu?branch=main)
|
|
8
|
-
[](https://snyk.io/test/github/rjrodger/aontu)
|
|
9
|
-
[](https://deepscan.io/dashboard#view=project&tid=5016&pid=26218&bid=831193)
|
|
10
|
-
[](https://codeclimate.com/github/rjrodger/aontu/maintainability)
|
|
11
|
-
|
|
12
|
-
|  | This open source module is sponsored and supported by [Voxgig](https://www.voxgig.com). |
|
|
13
|
-
|---|---|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
This unifier is heavily inspired by [Cue Lang](https://cuelang.org/)
|
|
17
|
-
and may be regarded as a purpose-specific dialect.
|
|
18
|
-
|
package/dist/val/PathVal.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PathVal.js","sourceRoot":"","sources":["../../src/val/PathVal.ts"],"names":[],"mappings":"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"}
|
package/dist/val/SpreadVal.d.ts
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
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, };
|
package/dist/val/SpreadVal.js
DELETED
|
@@ -1,194 +0,0 @@
|
|
|
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
|