aontu 0.52.0 → 0.53.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/README.md +88 -0
- package/bin/aontu-mcp.js +4 -0
- package/dist/agentsmd.d.ts +16 -0
- package/dist/agentsmd.js +107 -0
- package/dist/agentsmd.js.map +1 -0
- package/dist/aontu.d.ts +14 -3
- package/dist/aontu.js +145 -4
- package/dist/aontu.js.map +1 -1
- package/dist/cli.d.ts +44 -1
- package/dist/cli.js +2401 -44
- package/dist/cli.js.map +1 -1
- package/dist/ctx.d.ts +16 -0
- package/dist/ctx.js +44 -0
- package/dist/ctx.js.map +1 -1
- package/dist/diff.d.ts +22 -0
- package/dist/diff.js +141 -0
- package/dist/diff.js.map +1 -0
- package/dist/err.d.ts +3 -1
- package/dist/err.js +48 -8
- package/dist/err.js.map +1 -1
- package/dist/graph.d.ts +16 -0
- package/dist/graph.js +73 -0
- package/dist/graph.js.map +1 -0
- package/dist/hcanon.d.ts +3 -0
- package/dist/hcanon.js +146 -0
- package/dist/hcanon.js.map +1 -0
- package/dist/hints.js +223 -5
- package/dist/hints.js.map +1 -1
- package/dist/jsonschema.d.ts +20 -0
- package/dist/jsonschema.js +391 -0
- package/dist/jsonschema.js.map +1 -0
- package/dist/lang.js +698 -35
- package/dist/lang.js.map +1 -1
- package/dist/lsp.d.ts +9 -2
- package/dist/lsp.js +262 -46
- package/dist/lsp.js.map +1 -1
- package/dist/mcp-server.d.ts +20 -0
- package/dist/mcp-server.js +147 -0
- package/dist/mcp-server.js.map +1 -0
- package/dist/mcp.d.ts +42 -0
- package/dist/mcp.js +814 -0
- package/dist/mcp.js.map +1 -0
- package/dist/mod-tool.d.ts +58 -0
- package/dist/mod-tool.js +498 -0
- package/dist/mod-tool.js.map +1 -0
- package/dist/mod.d.ts +31 -0
- package/dist/mod.js +250 -0
- package/dist/mod.js.map +1 -0
- package/dist/patch.d.ts +44 -0
- package/dist/patch.js +506 -0
- package/dist/patch.js.map +1 -0
- package/dist/provenance.d.ts +40 -0
- package/dist/provenance.js +335 -0
- package/dist/provenance.js.map +1 -0
- package/dist/query.d.ts +27 -0
- package/dist/query.js +294 -0
- package/dist/query.js.map +1 -0
- package/dist/reach.d.ts +14 -0
- package/dist/reach.js +140 -0
- package/dist/reach.js.map +1 -0
- package/dist/relation.d.ts +19 -0
- package/dist/relation.js +305 -0
- package/dist/relation.js.map +1 -0
- package/dist/report-sarif.d.ts +14 -0
- package/dist/report-sarif.js +102 -0
- package/dist/report-sarif.js.map +1 -0
- package/dist/site.d.ts +4 -0
- package/dist/site.js +31 -0
- package/dist/site.js.map +1 -1
- package/dist/std.d.ts +1 -0
- package/dist/std.js +73 -0
- package/dist/std.js.map +1 -0
- package/dist/subsume.d.ts +39 -0
- package/dist/subsume.js +526 -0
- package/dist/subsume.js.map +1 -0
- package/dist/trim.d.ts +19 -0
- package/dist/trim.js +155 -0
- package/dist/trim.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/type.d.ts +17 -1
- package/dist/type.js.map +1 -1
- package/dist/unify.d.ts +3 -1
- package/dist/unify.js +287 -18
- package/dist/unify.js.map +1 -1
- package/dist/utility.d.ts +9 -1
- package/dist/utility.js +122 -1
- package/dist/utility.js.map +1 -1
- package/dist/val/AggFuncVal.d.ts +33 -0
- package/dist/val/AggFuncVal.js +202 -0
- package/dist/val/AggFuncVal.js.map +1 -0
- package/dist/val/ArithFuncVal.d.ts +31 -0
- package/dist/val/ArithFuncVal.js +62 -0
- package/dist/val/ArithFuncVal.js.map +1 -0
- package/dist/val/BagVal.d.ts +5 -0
- package/dist/val/BagVal.js +96 -5
- package/dist/val/BagVal.js.map +1 -1
- package/dist/val/CloseFuncVal.js +9 -1
- package/dist/val/CloseFuncVal.js.map +1 -1
- package/dist/val/ConjunctVal.d.ts +1 -1
- package/dist/val/ConjunctVal.js +19 -0
- package/dist/val/ConjunctVal.js.map +1 -1
- package/dist/val/ConstraintVal.d.ts +48 -1
- package/dist/val/ConstraintVal.js +1501 -110
- package/dist/val/ConstraintVal.js.map +1 -1
- package/dist/val/CopyFuncVal.d.ts +1 -2
- package/dist/val/CopyFuncVal.js +7 -0
- package/dist/val/CopyFuncVal.js.map +1 -1
- package/dist/val/Decimal.d.ts +1 -0
- package/dist/val/Decimal.js +13 -0
- package/dist/val/Decimal.js.map +1 -1
- package/dist/val/DeprecateFuncVal.d.ts +11 -0
- package/dist/val/DeprecateFuncVal.js +47 -0
- package/dist/val/DeprecateFuncVal.js.map +1 -0
- package/dist/val/DisjunctVal.js +130 -21
- package/dist/val/DisjunctVal.js.map +1 -1
- package/dist/val/EachFuncVal.d.ts +15 -0
- package/dist/val/EachFuncVal.js +75 -0
- package/dist/val/EachFuncVal.js.map +1 -0
- package/dist/val/ExpectVal.d.ts +1 -0
- package/dist/val/ExpectVal.js +41 -4
- package/dist/val/ExpectVal.js.map +1 -1
- package/dist/val/FeatureVal.js +1 -1
- package/dist/val/FeatureVal.js.map +1 -1
- package/dist/val/FilterFuncVal.d.ts +15 -0
- package/dist/val/FilterFuncVal.js +91 -0
- package/dist/val/FilterFuncVal.js.map +1 -0
- package/dist/val/FuncBaseVal.d.ts +6 -1
- package/dist/val/FuncBaseVal.js +178 -2
- package/dist/val/FuncBaseVal.js.map +1 -1
- package/dist/val/HideFuncVal.js.map +1 -1
- package/dist/val/IdFuncVal.d.ts +13 -0
- package/dist/val/IdFuncVal.js +54 -0
- package/dist/val/IdFuncVal.js.map +1 -0
- package/dist/val/JunctionVal.js +7 -1
- package/dist/val/JunctionVal.js.map +1 -1
- package/dist/val/KeyFuncVal.d.ts +1 -1
- package/dist/val/KeyFuncVal.js +38 -30
- package/dist/val/KeyFuncVal.js.map +1 -1
- package/dist/val/ListVal.js +117 -17
- package/dist/val/ListVal.js.map +1 -1
- package/dist/val/LowerFuncVal.js.map +1 -1
- package/dist/val/MapVal.js +102 -8
- package/dist/val/MapVal.js.map +1 -1
- package/dist/val/MatchFuncVal.d.ts +15 -0
- package/dist/val/MatchFuncVal.js +107 -0
- package/dist/val/MatchFuncVal.js.map +1 -0
- package/dist/val/MoveFuncVal.js.map +1 -1
- package/dist/val/NilVal.js +24 -0
- package/dist/val/NilVal.js.map +1 -1
- package/dist/val/OpBaseVal.d.ts +1 -1
- package/dist/val/OpBaseVal.js +24 -2
- package/dist/val/OpBaseVal.js.map +1 -1
- package/dist/val/OpenFuncVal.js +4 -1
- package/dist/val/OpenFuncVal.js.map +1 -1
- package/dist/val/PackFuncVal.d.ts +15 -0
- package/dist/val/PackFuncVal.js +108 -0
- package/dist/val/PackFuncVal.js.map +1 -0
- package/dist/val/PathFuncVal.js.map +1 -1
- package/dist/val/PlaceVal.d.ts +13 -0
- package/dist/val/PlaceVal.js +131 -0
- package/dist/val/PlaceVal.js.map +1 -0
- package/dist/val/PlusOpVal.js +11 -2
- package/dist/val/PlusOpVal.js.map +1 -1
- package/dist/val/PrefFuncVal.js.map +1 -1
- package/dist/val/PrefVal.d.ts +2 -2
- package/dist/val/PrefVal.js +78 -23
- package/dist/val/PrefVal.js.map +1 -1
- package/dist/val/RefVal.d.ts +1 -1
- package/dist/val/RefVal.js +158 -30
- package/dist/val/RefVal.js.map +1 -1
- package/dist/val/ReferFuncVal.d.ts +36 -0
- package/dist/val/ReferFuncVal.js +303 -0
- package/dist/val/ReferFuncVal.js.map +1 -0
- package/dist/val/ScalarKindVal.d.ts +1 -2
- package/dist/val/ScalarKindVal.js +0 -11
- package/dist/val/ScalarKindVal.js.map +1 -1
- package/dist/val/TopVal.js.map +1 -1
- package/dist/val/TypeFuncVal.js.map +1 -1
- package/dist/val/UpperFuncVal.js.map +1 -1
- package/dist/val/Val.d.ts +9 -2
- package/dist/val/Val.js +150 -4
- package/dist/val/Val.js.map +1 -1
- package/dist/val/VarVal.js.map +1 -1
- package/dist/val/arith.d.ts +6 -0
- package/dist/val/arith.js +170 -0
- package/dist/val/arith.js.map +1 -0
- package/dist/vet.d.ts +45 -0
- package/dist/vet.js +776 -0
- package/dist/vet.js.map +1 -0
- package/dist/walk.d.ts +2 -0
- package/dist/walk.js +91 -0
- package/dist/walk.js.map +1 -0
- package/grammar/aontu.gbnf +130 -0
- package/grammar/aontu.lark +113 -0
- package/package.json +30 -15
- package/skill/SKILL.md +37 -0
- package/skill/error-codes.md +62 -0
- package/skill/examples.md +99 -0
- package/skill/grammar-card.md +57 -0
- package/src/agentsmd.ts +135 -0
- package/src/aontu.ts +192 -4
- package/src/cli.ts +2858 -71
- package/src/ctx.ts +81 -0
- package/src/diff.ts +196 -0
- package/src/err.ts +52 -8
- package/src/graph.ts +135 -0
- package/src/hcanon.ts +169 -0
- package/src/hints.ts +271 -5
- package/src/jsonschema.ts +511 -0
- package/src/lang.ts +779 -37
- package/src/lsp.ts +281 -47
- package/src/mcp-server.ts +187 -0
- package/src/mcp.ts +993 -0
- package/src/mod-tool.ts +679 -0
- package/src/mod.ts +344 -0
- package/src/patch.ts +624 -0
- package/src/provenance.ts +430 -0
- package/src/query.ts +379 -0
- package/src/reach.ts +184 -0
- package/src/relation.ts +395 -0
- package/src/report-sarif.ts +137 -0
- package/src/site.ts +36 -1
- package/src/std.ts +73 -0
- package/src/subsume.ts +690 -0
- package/src/trim.ts +195 -0
- package/src/tsconfig.json +10 -4
- package/src/type.ts +51 -2
- package/src/unify.ts +311 -16
- package/src/utility.ts +139 -1
- package/src/val/AggFuncVal.ts +319 -0
- package/src/val/ArithFuncVal.ts +108 -0
- package/src/val/BagVal.ts +101 -4
- package/src/val/CloseFuncVal.ts +9 -1
- package/src/val/ConjunctVal.ts +20 -0
- package/src/val/ConstraintVal.ts +1699 -116
- package/src/val/CopyFuncVal.ts +7 -1
- package/src/val/Decimal.ts +15 -0
- package/src/val/DeprecateFuncVal.ts +84 -0
- package/src/val/DisjunctVal.ts +139 -28
- package/src/val/EachFuncVal.ts +133 -0
- package/src/val/ExpectVal.ts +43 -6
- package/src/val/FeatureVal.ts +1 -1
- package/src/val/FilterFuncVal.ts +154 -0
- package/src/val/FuncBaseVal.ts +200 -3
- package/src/val/HideFuncVal.ts +0 -2
- package/src/val/IdFuncVal.ts +91 -0
- package/src/val/JunctionVal.ts +7 -1
- package/src/val/KeyFuncVal.ts +39 -35
- package/src/val/ListVal.ts +125 -18
- package/src/val/LowerFuncVal.ts +0 -1
- package/src/val/MapVal.ts +110 -8
- package/src/val/MatchFuncVal.ts +176 -0
- package/src/val/MoveFuncVal.ts +0 -2
- package/src/val/NilVal.ts +25 -0
- package/src/val/OpBaseVal.ts +26 -3
- package/src/val/OpenFuncVal.ts +4 -2
- package/src/val/PackFuncVal.ts +175 -0
- package/src/val/PathFuncVal.ts +0 -1
- package/src/val/PlaceVal.ts +193 -0
- package/src/val/PlusOpVal.ts +11 -2
- package/src/val/PrefFuncVal.ts +0 -1
- package/src/val/PrefVal.ts +79 -36
- package/src/val/RefVal.ts +163 -30
- package/src/val/ReferFuncVal.ts +387 -0
- package/src/val/ScalarKindVal.ts +0 -13
- package/src/val/TopVal.ts +0 -1
- package/src/val/TypeFuncVal.ts +0 -2
- package/src/val/UpperFuncVal.ts +0 -1
- package/src/val/Val.ts +213 -3
- package/src/val/VarVal.ts +0 -1
- package/src/val/arith.ts +316 -0
- package/src/vet.ts +992 -0
- package/src/walk.ts +99 -0
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/* Copyright (c) 2025 Richard Rodger, MIT License */
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.PackFuncVal = void 0;
|
|
5
|
+
exports.dataKeys = dataKeys;
|
|
6
|
+
const unify_1 = require("../unify");
|
|
7
|
+
const err_1 = require("../err");
|
|
8
|
+
const MapVal_1 = require("./MapVal");
|
|
9
|
+
const FuncBaseVal_1 = require("./FuncBaseVal");
|
|
10
|
+
const Val_1 = require("./Val");
|
|
11
|
+
const PlaceVal_1 = require("./PlaceVal");
|
|
12
|
+
// The keys a data bag names, in the order the result must carry them,
|
|
13
|
+
// or a code naming what is wrong with it. Shared with `each`, which
|
|
14
|
+
// asks the same question of the same argument and answers it with the
|
|
15
|
+
// values rather than the keys.
|
|
16
|
+
function dataKeys(data) {
|
|
17
|
+
const d = data;
|
|
18
|
+
if (true === d?.isMap) {
|
|
19
|
+
return Object.keys(d.peg);
|
|
20
|
+
}
|
|
21
|
+
if (true === d?.isList) {
|
|
22
|
+
const out = [];
|
|
23
|
+
for (const el of d.peg) {
|
|
24
|
+
const e = el;
|
|
25
|
+
// A key is a NAME, and only a string is one. A number would
|
|
26
|
+
// key by position under another spelling, which is the failure
|
|
27
|
+
// mode the data-keyed rule exists to refuse.
|
|
28
|
+
if (true !== e?.isScalar || 'string' !== typeof e.peg) {
|
|
29
|
+
return 'pack_key';
|
|
30
|
+
}
|
|
31
|
+
out.push(e.peg);
|
|
32
|
+
}
|
|
33
|
+
return out;
|
|
34
|
+
}
|
|
35
|
+
return 'pack_data';
|
|
36
|
+
}
|
|
37
|
+
class PackFuncVal extends FuncBaseVal_1.FuncBaseVal {
|
|
38
|
+
constructor(spec, ctx) {
|
|
39
|
+
super(spec, ctx);
|
|
40
|
+
this.isPackFunc = true;
|
|
41
|
+
// THE STAGING RULE (G8 phase 0, see AontuContext.settle). A
|
|
42
|
+
// generator's data argument is not settled merely by being `done`
|
|
43
|
+
// once: a sibling conjunct, an include or a spread can still merge
|
|
44
|
+
// keys into it, and children generated from the half-merged bag
|
|
45
|
+
// would be missing. It fires on the settle pass and only then.
|
|
46
|
+
this.staged = true;
|
|
47
|
+
}
|
|
48
|
+
funcname() {
|
|
49
|
+
return 'pack';
|
|
50
|
+
}
|
|
51
|
+
// The TEMPLATE IS NOT AN ARGUMENT TO DRIVE. Driving it would resolve
|
|
52
|
+
// its `key()` at the CALL SITE -- the one position the template is
|
|
53
|
+
// never used at -- and freeze whatever else in it is path-dependent
|
|
54
|
+
// there too. The data argument is driven by `unify` below instead,
|
|
55
|
+
// one argument by hand rather than all of them by the base.
|
|
56
|
+
prepare(_ctx, _args) {
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
unify(peer, ctx) {
|
|
60
|
+
// ONE argument is driven: the data. The template is not (see
|
|
61
|
+
// prepare above), and driveStagedArgs answers whether the data has
|
|
62
|
+
// settled -- the other half of "ready to fire".
|
|
63
|
+
const ready = this.driveStagedArgs(ctx, 1);
|
|
64
|
+
if (!ready || !ctx.settle) {
|
|
65
|
+
return this.residuate(peer, ctx);
|
|
66
|
+
}
|
|
67
|
+
return super.unify(peer, ctx);
|
|
68
|
+
}
|
|
69
|
+
resolve(ctx, args) {
|
|
70
|
+
const keys = dataKeys(args?.[0]);
|
|
71
|
+
if ('string' === typeof keys) {
|
|
72
|
+
return (0, err_1.makeNilErr)(ctx, keys, this);
|
|
73
|
+
}
|
|
74
|
+
// Arity is checked at parse (funcArity), so both arguments are here.
|
|
75
|
+
const tmpl = args[1];
|
|
76
|
+
const peg = {};
|
|
77
|
+
const src = args[0];
|
|
78
|
+
for (const key of keys) {
|
|
79
|
+
const keyctx = ctx.descend(key);
|
|
80
|
+
// THE PLACEHOLDER BINDS THE SOURCE CHILD (G8 phase 3): inside a
|
|
81
|
+
// generator's template `_` is the datum this child is being made
|
|
82
|
+
// FROM. For a map that is the child's value; for a list of names
|
|
83
|
+
// it is the name, which is also the key -- so `_` and `key()`
|
|
84
|
+
// agree there, and differ the moment the data is a map.
|
|
85
|
+
const source = true === src?.isMap ? src.peg[key] : src.peg[keys.indexOf(key)];
|
|
86
|
+
// CLONED, never shared. A spread may share a template that holds
|
|
87
|
+
// nothing path-dependent (MapVal.spreadClone), because a spread
|
|
88
|
+
// CONSTRAINS a child that exists; a generator's template IS the
|
|
89
|
+
// child, and a child is a position. Sharing left every generated
|
|
90
|
+
// child pointing at the template's own parse-time location, which
|
|
91
|
+
// is the position the template is never used at -- visible as the
|
|
92
|
+
// site an error inside a generated child reports.
|
|
93
|
+
//
|
|
94
|
+
// A FULL INSTANCE, to the leaves (`dup`, ADR-005): a bare clone
|
|
95
|
+
// shares the inner structure of any call, preference or
|
|
96
|
+
// operation in the template, so the first child's resolution of
|
|
97
|
+
// a shared key()/ref answered for every child (BUGS.md §8, §9).
|
|
98
|
+
const inst = tmpl.clone(keyctx, { dup: true });
|
|
99
|
+
(0, Val_1.repathInstance)(inst, inst.path);
|
|
100
|
+
const child = (0, PlaceVal_1.fillPlace)(inst, source, keyctx);
|
|
101
|
+
peg[key] = undefined === peg[key] ? child :
|
|
102
|
+
(0, unify_1.unite)(keyctx, peg[key], child, 'pack');
|
|
103
|
+
}
|
|
104
|
+
return new MapVal_1.MapVal({ peg }, ctx);
|
|
105
|
+
}
|
|
106
|
+
} /* node:coverage ignore next 7 */
|
|
107
|
+
exports.PackFuncVal = PackFuncVal;
|
|
108
|
+
//# sourceMappingURL=PackFuncVal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PackFuncVal.js","sourceRoot":"","sources":["../../src/val/PackFuncVal.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PathFuncVal.js","sourceRoot":"","sources":["../../src/val/PathFuncVal.ts"],"names":[],"mappings":";AAAA,yDAAyD;;;AAYzD,gCAAmC;
|
|
1
|
+
{"version":3,"file":"PathFuncVal.js","sourceRoot":"","sources":["../../src/val/PathFuncVal.ts"],"names":[],"mappings":";AAAA,yDAAyD;;;AAYzD,gCAAmC;AAEnC,0CAAsC;AACtC,+CAA2C;AAG3C,MAAM,WAAY,SAAQ,yBAAW;IAKnC,YACE,IAAa,EACb,GAAkB;QAElB,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QARlB,eAAU,GAAG,IAAI,CAAA;QAEjB,aAAQ,GAAG,CAAC,CAAA;IAOZ,CAAC;IAGD,IAAI,CAAC,IAAkB,EAAE,IAAa;QACpC,MAAM,QAAQ,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,CAAA;QACtC,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAA;QACjC,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED,QAAQ;QACN,OAAO,MAAM,CAAA;IACf,CAAC;IAGD,OAAO,CAAC,GAAiB,EAAE,IAAW;QACpC,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;QAEjB,IAAI,CAAC,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;YACxB,kEAAkE;YAClE,oEAAoE;YACpE,8DAA8D;YAC9D,mEAAmE;YACnE,yDAAyD;YACzD,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC;gBAChB,GAAG,GAAG,IAAA,gBAAU,EAAC,GAAG,EAAE,aAAa,EAAE,IAAI,CAAC,CAAA;YAC5C,CAAC;iBACI,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;gBACtB,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,eAAM,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,CAAA;YAC/D,CAAC;iBACI,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;gBACpB,GAAG,GAAG,IAAA,gBAAU,EAAC,GAAG,EAAE,aAAa,EAAE,IAAI,CAAC,CAAA;YAC5C,CAAC;QACH,CAAC;QAED,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAA;QAEb,IAAI,CAAC,QAAQ,EAAE,CAAA;QAEf,OAAO,IAAI,CAAA;IACb,CAAC;IAGD,OAAO,CAAC,GAAiB,EAAE,IAAW;QACpC,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,IAAA,gBAAU,EAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;QAEjD,OAAO,GAAG,CAAA;IACZ,CAAC;CAEF,CAAC,iCAAiC;QAIjC,WAAW"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { Val, ValSpec } from '../type';
|
|
2
|
+
import { AontuContext } from '../ctx';
|
|
3
|
+
import { Val as ValBase } from './Val';
|
|
4
|
+
declare class PlaceVal extends ValBase {
|
|
5
|
+
isPlace: boolean;
|
|
6
|
+
constructor(spec: ValSpec, ctx?: AontuContext);
|
|
7
|
+
unify(peer: Val, _ctx: AontuContext): Val;
|
|
8
|
+
get canon(): string;
|
|
9
|
+
superior(): Val;
|
|
10
|
+
}
|
|
11
|
+
declare function hasPlace(v: Val): boolean;
|
|
12
|
+
declare function fillPlace(v: Val, fill: Val, ctx: AontuContext): Val;
|
|
13
|
+
export { hasPlace, fillPlace, PlaceVal, };
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/* Copyright (c) 2025 Richard Rodger, MIT License */
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.PlaceVal = void 0;
|
|
5
|
+
exports.hasPlace = hasPlace;
|
|
6
|
+
exports.fillPlace = fillPlace;
|
|
7
|
+
const Val_1 = require("./Val");
|
|
8
|
+
class PlaceVal extends Val_1.Val {
|
|
9
|
+
constructor(spec, ctx) {
|
|
10
|
+
super(spec, ctx);
|
|
11
|
+
this.isPlace = true;
|
|
12
|
+
}
|
|
13
|
+
unify(peer, _ctx) {
|
|
14
|
+
// The peer FILLS the hole. Against TOP there is nothing to fill it
|
|
15
|
+
// with, so it waits -- and waiting is not done, or a call holding
|
|
16
|
+
// it would resolve around it.
|
|
17
|
+
if (peer.isTop) {
|
|
18
|
+
this.notdone();
|
|
19
|
+
return this;
|
|
20
|
+
}
|
|
21
|
+
return peer;
|
|
22
|
+
}
|
|
23
|
+
get canon() {
|
|
24
|
+
return '_';
|
|
25
|
+
}
|
|
26
|
+
// A hole admits everything, so nothing sits above it -- the same
|
|
27
|
+
// answer TOP gives, for the same reason.
|
|
28
|
+
superior() {
|
|
29
|
+
return this;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
exports.PlaceVal = PlaceVal;
|
|
33
|
+
// A HOLE BELONGS TO ITS NEAREST ENCLOSING GENERATOR. A `_` inside a
|
|
34
|
+
// generator's template (pack/each, arg 1) or condition (filter, arg 1)
|
|
35
|
+
// is that generator's to bind — "_ is the source child" — so neither
|
|
36
|
+
// the hole test nor the fill walk may cross into those arguments from
|
|
37
|
+
// outside. Before this boundary, `close(pack(d, _ & t))` reported a
|
|
38
|
+
// hole to the OUTER call, so an ordinary overlay statement was
|
|
39
|
+
// absorbed into the template instead of merging with the generated
|
|
40
|
+
// child (use-cases/BUGS.md §10), and an outer pack's fill pass
|
|
41
|
+
// captured a NESTED pack's hole lexically, binding it to the outer
|
|
42
|
+
// source (§34). The data argument (arg 0) is not a binding position,
|
|
43
|
+
// so it stays visible: a hole there is an outer hole as before.
|
|
44
|
+
function boundArgStart(v) {
|
|
45
|
+
return true === v.isPackFunc || true === v.isEachFunc ||
|
|
46
|
+
true === v.isFilterFunc ? 1 : Infinity;
|
|
47
|
+
}
|
|
48
|
+
// Does this value CONTAIN a hole? Asked of a call before it resolves:
|
|
49
|
+
// a call holding one must wait for a peer to fill it. Holes inside a
|
|
50
|
+
// generator's own binding arguments are NOT this value's holes — see
|
|
51
|
+
// boundArgStart above.
|
|
52
|
+
function hasPlace(v) {
|
|
53
|
+
if (true === v.isPlace) {
|
|
54
|
+
return true;
|
|
55
|
+
}
|
|
56
|
+
const peg = v.peg;
|
|
57
|
+
const bound = boundArgStart(v);
|
|
58
|
+
if (Array.isArray(peg)) {
|
|
59
|
+
for (let cI = 0; cI < peg.length && cI < bound; cI++) {
|
|
60
|
+
const c = peg[cI];
|
|
61
|
+
if (true === c?.isVal && hasPlace(c)) {
|
|
62
|
+
return true;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
else if (true === peg?.isVal) {
|
|
67
|
+
return hasPlace(peg);
|
|
68
|
+
}
|
|
69
|
+
else if (null != peg && 'object' === typeof peg) {
|
|
70
|
+
for (const k of Object.keys(peg)) {
|
|
71
|
+
if (true === peg[k]?.isVal && hasPlace(peg[k])) {
|
|
72
|
+
return true;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
return false;
|
|
77
|
+
}
|
|
78
|
+
// The same tree with every hole filled by `fill`. Answers the value
|
|
79
|
+
// UNCHANGED when it holds no hole, so a caller can test identity to
|
|
80
|
+
// know whether anything was filled -- and so a tree with no hole is
|
|
81
|
+
// never needlessly cloned. A nested generator's binding arguments are
|
|
82
|
+
// left untouched (boundArgStart): those holes are the inner
|
|
83
|
+
// generator's to fill with its OWN source children when it fires.
|
|
84
|
+
function fillPlace(v, fill, ctx) {
|
|
85
|
+
if (true === v.isPlace) {
|
|
86
|
+
return fill;
|
|
87
|
+
}
|
|
88
|
+
const peg = v.peg;
|
|
89
|
+
const bound = boundArgStart(v);
|
|
90
|
+
if (Array.isArray(peg)) {
|
|
91
|
+
let changed = false;
|
|
92
|
+
const out = peg.map((c, cI) => {
|
|
93
|
+
if (true !== c?.isVal || bound <= cI) {
|
|
94
|
+
return c;
|
|
95
|
+
}
|
|
96
|
+
const f = fillPlace(c, fill, ctx);
|
|
97
|
+
changed = changed || f !== c;
|
|
98
|
+
return f;
|
|
99
|
+
});
|
|
100
|
+
return changed ? rebuild(v, out, ctx) : v;
|
|
101
|
+
}
|
|
102
|
+
if (true === peg?.isVal) {
|
|
103
|
+
const f = fillPlace(peg, fill, ctx);
|
|
104
|
+
return f === peg ? v : rebuild(v, f, ctx);
|
|
105
|
+
}
|
|
106
|
+
if (null != peg && 'object' === typeof peg) {
|
|
107
|
+
let changed = false;
|
|
108
|
+
const out = {};
|
|
109
|
+
for (const k of Object.keys(peg)) {
|
|
110
|
+
const c = peg[k];
|
|
111
|
+
// No isVal guard: a slot holding something that is not a Val
|
|
112
|
+
// answers itself, because fillPlace's own first tests -- is it a
|
|
113
|
+
// hole, has it a peg -- are both false for one.
|
|
114
|
+
const f = fillPlace(c, fill, ctx);
|
|
115
|
+
changed = changed || f !== c;
|
|
116
|
+
out[k] = f;
|
|
117
|
+
}
|
|
118
|
+
return changed ? rebuild(v, out, ctx) : v;
|
|
119
|
+
}
|
|
120
|
+
return v;
|
|
121
|
+
}
|
|
122
|
+
// A clone carrying a new peg. `clone` shares the peg by reference (see
|
|
123
|
+
// Val.clone), which is exactly what must NOT happen here: the tree
|
|
124
|
+
// being filled is a template, and the fill is one destination's.
|
|
125
|
+
function rebuild(v, peg, ctx) {
|
|
126
|
+
const out = v.clone(ctx);
|
|
127
|
+
out.peg = peg;
|
|
128
|
+
out.dc = 0;
|
|
129
|
+
return out;
|
|
130
|
+
} /* node:coverage ignore next 8 */
|
|
131
|
+
//# sourceMappingURL=PlaceVal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlaceVal.js","sourceRoot":"","sources":["../../src/val/PlaceVal.ts"],"names":[],"mappings":"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"}
|
package/dist/val/PlusOpVal.js
CHANGED
|
@@ -115,9 +115,18 @@ class PlusOpVal extends OpBaseVal_1.OpBaseVal {
|
|
|
115
115
|
return (0, err_1.makeNilErr)(ctx, 'exact_float_mix', this, undefined, 'add', { left: ak, right: bk });
|
|
116
116
|
}
|
|
117
117
|
// Float with float or integer: unchanged R5 contagion, binary64
|
|
118
|
-
// addition, float result (`1 + 2.0` is `3.0`)
|
|
118
|
+
// addition, float result (`1 + 2.0` is `3.0`) -- but a sum that
|
|
119
|
+
// leaves binary64's finite range is NOT a value. Aontu is a JSON
|
|
120
|
+
// superset and there is no notation for an infinity, so one here
|
|
121
|
+
// used to escape as `[aontu/internal]` in TypeScript and as Go's
|
|
122
|
+
// raw `json: unsupported value: +Inf` with no code at all
|
|
123
|
+
// (use-cases/BUGS.md 39). The same check governs the arithmetic
|
|
124
|
+
// family (float_overflow, ts/src/val/arith.ts).
|
|
119
125
|
if ('float' === ak || 'float' === bk) {
|
|
120
|
-
|
|
126
|
+
const sum = av.peg + bv.peg;
|
|
127
|
+
return Number.isFinite(sum) ?
|
|
128
|
+
new NumberVal_1.NumberVal({ peg: sum }) :
|
|
129
|
+
(0, err_1.makeNilErr)(ctx, 'float_overflow', this, undefined, 'add');
|
|
121
130
|
}
|
|
122
131
|
// Both operands are on the exact ladder: promote to the widest.
|
|
123
132
|
const rank = EXACT_RANK[bk] < EXACT_RANK[ak] ? EXACT_RANK[ak] : EXACT_RANK[bk];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlusOpVal.js","sourceRoot":"","sources":["../../src/val/PlusOpVal.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"PlusOpVal.js","sourceRoot":"","sources":["../../src/val/PlusOpVal.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PrefFuncVal.js","sourceRoot":"","sources":["../../src/val/PrefFuncVal.ts"],"names":[],"mappings":";AAAA,yDAAyD;;;AAYzD,gCAAmC;AAEnC,wCAEmB;
|
|
1
|
+
{"version":3,"file":"PrefFuncVal.js","sourceRoot":"","sources":["../../src/val/PrefFuncVal.ts"],"names":[],"mappings":";AAAA,yDAAyD;;;AAYzD,gCAAmC;AAEnC,wCAEmB;AAEnB,4CAAwC;AACxC,+CAA2C;AAG3C,MAAM,WAAY,SAAQ,yBAAW;IAGnC,YACE,IAAa,EACb,GAAkB;QAElB,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QANlB,eAAU,GAAG,IAAI,CAAA;IAOjB,CAAC;IAGD,IAAI,CAAC,IAAkB,EAAE,IAAa;QACpC,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,CAAA;IAC9B,CAAC;IAED,QAAQ;QACN,OAAO,MAAM,CAAA;IACf,CAAC;IAGD,OAAO,CAAC,GAAiB,EAAE,IAAW;QACpC,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,IAAA,gBAAU,EAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;QAEjD,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;YACf,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YAEpB,oCAAoC;YACpC,GAAG,GAAG,IAAA,cAAI,EAAC,GAAG,EAAE,CAAC,IAAiC,EAAE,GAAQ,EAAE,EAAE;gBAC9D,IAAI,IAAI,GAAG,GAAG,CAAA;gBACd,kEAAkE;gBAClE,IACE,GAAG,CAAC,QAAQ;uBACT,GAAG,CAAC,MAAM,EACb,CAAC;oBACD,IAAI,GAAG,IAAI,iBAAO,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,CAAA;gBACvC,CAAC;gBAED,OAAO,IAAI,CAAA;YACb,CAAC,CAAC,CAAA;QACJ,CAAC;QAED,OAAO,GAAG,CAAA;IACZ,CAAC;CAEF,CAAC,iCAAiC;QAIjC,WAAW"}
|
package/dist/val/PrefVal.d.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import type { Val, ValSpec } from '../type';
|
|
2
2
|
import { AontuContext } from '../ctx';
|
|
3
3
|
import { FeatureVal } from './FeatureVal';
|
|
4
|
+
declare function prefInnerPeg(v: Val): Val;
|
|
4
5
|
declare class PrefVal extends FeatureVal {
|
|
5
6
|
isPref: boolean;
|
|
6
7
|
isGenable: boolean;
|
|
7
8
|
cjo: number;
|
|
8
9
|
superpeg: Val;
|
|
9
|
-
familypeg: Val;
|
|
10
10
|
rank: number;
|
|
11
11
|
constructor(spec: ValSpec, ctx?: AontuContext);
|
|
12
12
|
private resuper;
|
|
@@ -16,4 +16,4 @@ declare class PrefVal extends FeatureVal {
|
|
|
16
16
|
get canon(): string;
|
|
17
17
|
gen(ctx?: AontuContext): any;
|
|
18
18
|
}
|
|
19
|
-
export { PrefVal, };
|
|
19
|
+
export { PrefVal, prefInnerPeg, };
|
package/dist/val/PrefVal.js
CHANGED
|
@@ -2,19 +2,53 @@
|
|
|
2
2
|
/* Copyright (c) 2021-2025 Richard Rodger, MIT License */
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
exports.PrefVal = void 0;
|
|
5
|
+
exports.prefInnerPeg = prefInnerPeg;
|
|
5
6
|
const type_1 = require("../type");
|
|
6
7
|
const unify_1 = require("../unify");
|
|
7
8
|
const err_1 = require("../err");
|
|
8
9
|
const utility_1 = require("../utility");
|
|
9
10
|
const top_1 = require("./top");
|
|
10
11
|
const FeatureVal_1 = require("./FeatureVal");
|
|
11
|
-
|
|
12
|
+
// The innermost preferred value under every pref layer: the value a
|
|
13
|
+
// preference of ANY rank ultimately defends, and the one generation
|
|
14
|
+
// emits for it. Shared by the disjunct admission gate (DisjunctVal),
|
|
15
|
+
// the defaulted-scrutinee rule (MatchFuncVal) and the effective-default
|
|
16
|
+
// walk (subsume.ts) so "the default's value" cannot mean three things.
|
|
17
|
+
function prefInnerPeg(v) {
|
|
18
|
+
let out = v;
|
|
19
|
+
while (true === out?.isPref) {
|
|
20
|
+
out = out.peg;
|
|
21
|
+
}
|
|
22
|
+
return out;
|
|
23
|
+
}
|
|
12
24
|
class PrefVal extends FeatureVal_1.FeatureVal {
|
|
13
25
|
constructor(spec, ctx) {
|
|
14
26
|
super(spec, ctx);
|
|
15
27
|
this.isPref = true;
|
|
16
28
|
this.isGenable = true;
|
|
17
29
|
this.cjo = 30000;
|
|
30
|
+
// THE GATE AN OVERRIDING PEER MUST PASS IS `superpeg` ITSELF — the
|
|
31
|
+
// preferred value's own KIND, not its family.
|
|
32
|
+
//
|
|
33
|
+
// A preference is a DEFAULT, so a concrete peer replaces it, but only
|
|
34
|
+
// where the peer is the same kind of thing: `*lower(1.1) & a` is a
|
|
35
|
+
// conflict, not an override. The number tower made `integer` and
|
|
36
|
+
// `float` disjoint siblings under `number`, and this gate used to
|
|
37
|
+
// widen to that family — so `*2.2 & 3` worked, and so did
|
|
38
|
+
// `*8080 & 3.5`. Those are ONE rule in two directions; no kind-based
|
|
39
|
+
// gate can keep the first and refuse the second.
|
|
40
|
+
//
|
|
41
|
+
// Refusing both is the choice, because the second is the documented
|
|
42
|
+
// default idiom: `port: *8080 | integer` accepted 3.5 in both ports,
|
|
43
|
+
// silently widening every key written that way from integer to
|
|
44
|
+
// number — the finding §6 of the 2026-08-21 status report calls the
|
|
45
|
+
// most consequential, precisely because docs/skill/examples.md
|
|
46
|
+
// teaches the idiom to agents.
|
|
47
|
+
//
|
|
48
|
+
// What the tightening costs is named rather than hidden: mixing the
|
|
49
|
+
// numeric leaves around a preference is now an error instead of a
|
|
50
|
+
// silent widening. `*1.5 & integer` used to answer `integer` and
|
|
51
|
+
// DISCARD a default that could never apply; it now says so.
|
|
18
52
|
this.rank = 0;
|
|
19
53
|
// this.pref = spec.pref || spec.peg
|
|
20
54
|
// this.superpeg = makeSuper(spec.peg)
|
|
@@ -27,7 +61,21 @@ class PrefVal extends FeatureVal_1.FeatureVal {
|
|
|
27
61
|
// Recompute the type yardstick and the override gate from the current
|
|
28
62
|
// peg. Called again whenever the peg resolves (e.g. a ref).
|
|
29
63
|
resuper() {
|
|
30
|
-
|
|
64
|
+
// THE RANK-UNIFORM MEET (ADR-004). The yardstick is the INNERMOST
|
|
65
|
+
// preferred value's kind, whatever the preference's rank: `**1.5`
|
|
66
|
+
// defends `float` exactly as `*1.5` does. The old rule read the
|
|
67
|
+
// immediate peg, and a rank>=2 peg is itself a PrefVal whose
|
|
68
|
+
// superior is top -- so ANY conjunct overrode a ranked default
|
|
69
|
+
// (`**1.5 & float` dropped the default and died as mapval_no_gen;
|
|
70
|
+
// `**2|integer` met by a bare `integer` lost the default the
|
|
71
|
+
// spelling exists to carry -- use-cases/BUGS.md §3), while the
|
|
72
|
+
// rank-1 spelling of the same document kept it. One rule, every
|
|
73
|
+
// rank. Pinned by test/spec/pref.tsv (pref-rank2-* rows, and the
|
|
74
|
+
// flipped pref-nested-concrete-wins).
|
|
75
|
+
let peg = this.peg;
|
|
76
|
+
while (true === peg?.isPref) {
|
|
77
|
+
peg = peg.peg;
|
|
78
|
+
}
|
|
31
79
|
// A preference whose peg is ITSELF a kind (`*integer`) constrains
|
|
32
80
|
// nothing: there is no type-of-a-type in this lattice, so any peer
|
|
33
81
|
// wins. (Pinned by test/spec/var.tsv:var-pref-kind-narrow. Before
|
|
@@ -35,26 +83,12 @@ class PrefVal extends FeatureVal_1.FeatureVal {
|
|
|
35
83
|
// now that a leaf kind lifts to `number`, it has to be said.)
|
|
36
84
|
if (true === peg.isScalarKind) {
|
|
37
85
|
this.superpeg = (0, top_1.top)();
|
|
38
|
-
this.familypeg = this.superpeg;
|
|
39
86
|
return;
|
|
40
87
|
}
|
|
41
|
-
const sup = peg.superior();
|
|
42
|
-
this.superpeg = sup;
|
|
43
88
|
// No optional chain: superior() is contractually non-null (every
|
|
44
89
|
// Val returns one, a NilVal returning itself), so guarding against
|
|
45
90
|
// nullish here would claim a possibility the type does not have.
|
|
46
|
-
|
|
47
|
-
const family = (0, ScalarKindVal_1.kindFamily)(sup.peg);
|
|
48
|
-
// The gate stands in for the preferred value in any conflict it
|
|
49
|
-
// reports, so it must carry the same site and path as the type it
|
|
50
|
-
// widens -- otherwise NilVal.make picks a different primary and
|
|
51
|
-
// the error moves to the wrong path.
|
|
52
|
-
this.familypeg = family === sup.peg ?
|
|
53
|
-
sup : sup.place(new ScalarKindVal_1.ScalarKindVal({ peg: family, path: sup.path }));
|
|
54
|
-
}
|
|
55
|
-
else {
|
|
56
|
-
this.familypeg = sup;
|
|
57
|
-
}
|
|
91
|
+
this.superpeg = peg.superior();
|
|
58
92
|
}
|
|
59
93
|
// PrefVal unify always returns a PrefVal
|
|
60
94
|
// PrefVals can only be removed by becoming Nil in a Disjunct
|
|
@@ -101,12 +135,20 @@ class PrefVal extends FeatureVal_1.FeatureVal {
|
|
|
101
135
|
}
|
|
102
136
|
else if (!peer.isTop) {
|
|
103
137
|
why += 'super-';
|
|
104
|
-
out = (0, unify_1.unite)(te ? ctx.clone({ explain: (0, utility_1.ec)(te, 'SUPER') }) : ctx, this.
|
|
138
|
+
out = (0, unify_1.unite)(te ? ctx.clone({ explain: (0, utility_1.ec)(te, 'SUPER') }) : ctx, this.superpeg, peer, 'pref-super/' + this.id);
|
|
105
139
|
// The peer added nothing beyond a type the preferred value already
|
|
106
140
|
// satisfies (`*1 & integer`, `*1 & number`), so the preference
|
|
107
|
-
// stands
|
|
108
|
-
|
|
109
|
-
|
|
141
|
+
// stands — as ITSELF, rank intact (ADR-004). Returning the peg
|
|
142
|
+
// here (the old rule) demoted the preference to a concrete value
|
|
143
|
+
// at rank 0 and to a lower rank above it, which both destroyed
|
|
144
|
+
// overridability (`*1 & integer` then `2` was a conflict) and
|
|
145
|
+
// broke the layered-defaults ladder: a team's `**debug|string`
|
|
146
|
+
// meeting an env's `string` branch produced a rank-0 `*debug`
|
|
147
|
+
// that then fought the env's own rank-0 `*warn` as an equal.
|
|
148
|
+
// Anything else is a concrete override and wins (subject to the
|
|
149
|
+
// disjunct admission gate in DisjunctVal).
|
|
150
|
+
if (out.same(this.superpeg)) {
|
|
151
|
+
out = this;
|
|
110
152
|
why += 'same';
|
|
111
153
|
}
|
|
112
154
|
// }
|
|
@@ -131,7 +173,20 @@ class PrefVal extends FeatureVal_1.FeatureVal {
|
|
|
131
173
|
}
|
|
132
174
|
clone(ctx, spec) {
|
|
133
175
|
let out = super.clone(ctx, spec);
|
|
134
|
-
//
|
|
176
|
+
// THE PER-DESTINATION INSTANTIATION RULE (ADR-005). The default
|
|
177
|
+
// clone shares the preferred value (`peg: this.peg` in Val.clone)
|
|
178
|
+
// — a cloned pref spread template resolves its inner value at the
|
|
179
|
+
// template's own location, pinned behaviour. But a template
|
|
180
|
+
// INSTANCE must own it: with the peg shared, a rank-2 default
|
|
181
|
+
// (`**key(1) | string`) in a pack template resolved its one
|
|
182
|
+
// shared inner key() at the first destination and every child got
|
|
183
|
+
// the first child's key (use-cases/BUGS.md §9 — rank 1 escaped
|
|
184
|
+
// only because its unify builds a fresh PrefVal per meet). The
|
|
185
|
+
// superpeg yardstick from the shared peg still holds: the clone's
|
|
186
|
+
// innermost value is the same kind.
|
|
187
|
+
if (true === spec?.dup && true === this.peg?.isVal) {
|
|
188
|
+
out.peg = this.peg.clone(ctx, { dup: true });
|
|
189
|
+
}
|
|
135
190
|
return out;
|
|
136
191
|
}
|
|
137
192
|
get canon() {
|
|
@@ -147,6 +202,6 @@ class PrefVal extends FeatureVal_1.FeatureVal {
|
|
|
147
202
|
}
|
|
148
203
|
return val.gen(ctx);
|
|
149
204
|
}
|
|
150
|
-
} /* node:coverage ignore next
|
|
205
|
+
} /* node:coverage ignore next 7 */
|
|
151
206
|
exports.PrefVal = PrefVal;
|
|
152
207
|
//# sourceMappingURL=PrefVal.js.map
|
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;;;
|
|
1
|
+
{"version":3,"file":"PrefVal.js","sourceRoot":"","sources":["../../src/val/PrefVal.ts"],"names":[],"mappings":";AAAA,yDAAyD;;;QAoRvD,YAAY;AA7Qd,kCAEgB;AAGhB,oCAAgC;AAChC,gCAAmC;AAEnC,wCAImB;AAGnB,+BAA2B;AAE3B,6CAAyC;AAGzC,oEAAoE;AACpE,oEAAoE;AACpE,qEAAqE;AACrE,wEAAwE;AACxE,uEAAuE;AACvE,SAAS,YAAY,CAAC,CAAM;IAC1B,IAAI,GAAG,GAAQ,CAAC,CAAA;IAChB,OAAO,IAAI,KAAK,GAAG,EAAE,MAAM,EAAE,CAAC;QAC5B,GAAG,GAAG,GAAG,CAAC,GAAG,CAAA;IACf,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAGD,MAAM,OAAQ,SAAQ,uBAAU;IAoC9B,YACE,IAAa,EACb,GAAkB;QAElB,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QAvClB,WAAM,GAAG,IAAI,CAAA;QACb,cAAS,GAAG,IAAI,CAAA;QAChB,QAAG,GAAG,KAAK,CAAA;QAQX,mEAAmE;QACnE,8CAA8C;QAC9C,EAAE;QACF,sEAAsE;QACtE,mEAAmE;QACnE,iEAAiE;QACjE,kEAAkE;QAClE,0DAA0D;QAC1D,qEAAqE;QACrE,iDAAiD;QACjD,EAAE;QACF,oEAAoE;QACpE,qEAAqE;QACrE,+DAA+D;QAC/D,oEAAoE;QACpE,+DAA+D;QAC/D,+BAA+B;QAC/B,EAAE;QACF,oEAAoE;QACpE,kEAAkE;QAClE,iEAAiE;QACjE,4DAA4D;QAE5D,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,OAAO,EAAE,CAAA;QACd,0DAA0D;IAC5D,CAAC;IAGD,sEAAsE;IACtE,4DAA4D;IACpD,OAAO;QACb,kEAAkE;QAClE,kEAAkE;QAClE,gEAAgE;QAChE,6DAA6D;QAC7D,+DAA+D;QAC/D,kEAAkE;QAClE,6DAA6D;QAC7D,+DAA+D;QAC/D,gEAAgE;QAChE,iEAAiE;QACjE,sCAAsC;QACtC,IAAI,GAAG,GAAQ,IAAI,CAAC,GAAG,CAAA;QACvB,OAAO,IAAI,KAAK,GAAG,EAAE,MAAM,EAAE,CAAC;YAC5B,GAAG,GAAG,GAAG,CAAC,GAAG,CAAA;QACf,CAAC;QAED,kEAAkE;QAClE,mEAAmE;QACnE,kEAAkE;QAClE,mEAAmE;QACnE,8DAA8D;QAC9D,IAAI,IAAI,KAAK,GAAG,CAAC,YAAY,EAAE,CAAC;YAC9B,IAAI,CAAC,QAAQ,GAAG,IAAA,SAAG,GAAE,CAAA;YACrB,OAAM;QACR,CAAC;QAED,iEAAiE;QACjE,mEAAmE;QACnE,iEAAiE;QACjE,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAA;IAChC,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,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,+DAA+D;YAC/D,IAAI,CAAC,GAAG,GAAG,QAAQ,CAAA;YACnB,IAAI,CAAC,OAAO,EAAE,CAAA;QAChB,CAAC;QAED,IAAI,IAAI,YAAY,OAAO,EAAE,CAAC;YAC5B,GAAG,IAAI,OAAO,CAAA;YACd,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,EAAE,CAAC;gBACxB,GAAG,GAAG,IAAI,CAAA;gBACV,GAAG,IAAI,MAAM,CAAA;YACf,CAAC;YAED,wBAAwB;iBACnB,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;gBACrC,GAAG,GAAG,IAAI,CAAA;gBACV,GAAG,IAAI,UAAU,CAAA;YACnB,CAAC;iBAEI,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;gBAC/B,GAAG,GAAG,IAAI,CAAA;gBACV,GAAG,IAAI,UAAU,CAAA;YACnB,CAAC;iBACI,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;gBAC/B,GAAG,GAAG,IAAI,CAAA;gBACV,GAAG,IAAI,WAAW,CAAA;YACpB,CAAC;iBACI,CAAC;gBACJ,2BAA2B;gBAC3B,0CAA0C;gBAC1C,0CAA0C;gBAC1C,IAAI;gBAEJ,IAAI,GAAG,GAAG,IAAA,aAAK,EAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,IAAA,YAAE,EAAC,EAAE,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EACpE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,CAAA;gBAC7C,GAAG,GAAG,IAAI,OAAO,CAAC,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,CAAA;gBAC/B,kEAAkE;gBAClE,GAAG,IAAI,WAAW,CAAA;YACpB,CAAC;QACH,CAAC;aACI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YACrB,GAAG,IAAI,QAAQ,CAAA;YAEf,GAAG,GAAG,IAAA,aAAK,EAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,IAAA,YAAE,EAAC,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAC5D,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,aAAa,GAAG,IAAI,CAAC,EAAE,CAAC,CAAA;YAE/C,mEAAmE;YACnE,+DAA+D;YAC/D,+DAA+D;YAC/D,iEAAiE;YACjE,+DAA+D;YAC/D,8DAA8D;YAC9D,+DAA+D;YAC/D,8DAA8D;YAC9D,6DAA6D;YAC7D,gEAAgE;YAChE,2CAA2C;YAC3C,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC5B,GAAG,GAAG,IAAI,CAAA;gBACV,GAAG,IAAI,MAAM,CAAA;YACf,CAAC;YAED,IAAI;QACN,CAAC;aACI,CAAC;YACJ,GAAG,IAAI,MAAM,CAAA;QACf,CAAC;QAED,iEAAiE;QACjE,4DAA4D;QAC5D,GAAG,CAAC,EAAE,GAAG,WAAI,CAAA;QAEb,qFAAqF;QAErF,GAAG,CAAC,OAAO,IAAI,IAAA,sBAAY,EAAC,EAAE,EAAE,GAAG,CAAC,CAAA;QAEpC,OAAO,GAAG,CAAA;IACZ,CAAC;IAGD,IAAI,CAAC,IAAS;QACZ,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;YACjB,OAAO,KAAK,CAAA;QACd,CAAC;QAED,IAAI,OAAO,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC;YACnC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;QAE7C,OAAO,OAAO,CAAA;IAChB,CAAC;IAGD,KAAK,CAAC,GAAiB,EAAE,IAAc;QACrC,IAAI,GAAG,GAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAa,CAAA;QAC7C,gEAAgE;QAChE,kEAAkE;QAClE,kEAAkE;QAClE,4DAA4D;QAC5D,8DAA8D;QAC9D,4DAA4D;QAC5D,kEAAkE;QAClE,+DAA+D;QAC/D,+DAA+D;QAC/D,kEAAkE;QAClE,oCAAoC;QACpC,IAAI,IAAI,KAAK,IAAI,EAAE,GAAG,IAAI,IAAI,KAAM,IAAI,CAAC,GAAW,EAAE,KAAK,EAAE,CAAC;YAC5D,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAA;QAC9C,CAAC;QACD,OAAO,GAAG,CAAA;IACZ,CAAC;IAGD,IAAI,KAAK;QACP,2EAA2E;QAC3E,OAAO,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAA;IAC7B,CAAC;IAGD,GAAG,CAAC,GAAkB;QACpB,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAA;QAElB,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;YACd,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC;gBAChB,MAAM,IAAI,gBAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YAC/B,CAAC;QACH,CAAC;QAED,OAAO,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACrB,CAAC;CACF,CAAC,iCAAiC;QAIjC,OAAO"}
|
package/dist/val/RefVal.d.ts
CHANGED
|
@@ -14,7 +14,7 @@ declare class RefVal extends FeatureVal {
|
|
|
14
14
|
}, ctx?: AontuContext);
|
|
15
15
|
append(part: any): void;
|
|
16
16
|
unify(peer: Val, ctx: AontuContext): Val;
|
|
17
|
-
find(ctx: AontuContext): Val | undefined;
|
|
17
|
+
find(ctx: AontuContext, snap?: boolean): import("./NilVal").NilVal | Val | undefined;
|
|
18
18
|
detectRefCycle(ctx: AontuContext): boolean;
|
|
19
19
|
plainRefPath(): string[] | undefined;
|
|
20
20
|
same(peer: Val): boolean;
|