aontu 0.61.0 → 0.63.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 +4 -4
- package/dist/agentsmd.d.ts +1 -0
- package/dist/agentsmd.js +7 -28
- package/dist/agentsmd.js.map +1 -1
- package/dist/alias.js.map +1 -1
- package/dist/allow.d.ts +23 -0
- package/dist/allow.js +138 -0
- package/dist/allow.js.map +1 -0
- package/dist/aontu.d.ts +4 -2
- package/dist/aontu.js +4 -80
- package/dist/aontu.js.map +1 -1
- package/dist/aontumodel.d.ts +4 -0
- package/dist/aontumodel.js +33 -0
- package/dist/aontumodel.js.map +1 -0
- package/dist/cli.d.ts +10 -1
- package/dist/cli.js +877 -479
- package/dist/cli.js.map +1 -1
- package/dist/ctx.js +0 -48
- package/dist/ctx.js.map +1 -1
- package/dist/diff.js +0 -32
- package/dist/diff.js.map +1 -1
- package/dist/err.js +0 -40
- package/dist/err.js.map +1 -1
- package/dist/escape.js +0 -45
- package/dist/escape.js.map +1 -1
- package/dist/exactjson.d.ts +0 -35
- package/dist/exactjson.js +0 -131
- package/dist/exactjson.js.map +1 -1
- package/dist/format.js +55 -189
- package/dist/format.js.map +1 -1
- package/dist/grammar.d.ts +9 -0
- package/dist/grammar.js +54 -0
- package/dist/grammar.js.map +1 -0
- package/dist/graph.js +0 -26
- package/dist/graph.js.map +1 -1
- package/dist/hcanon.js +0 -82
- package/dist/hcanon.js.map +1 -1
- package/dist/helpdoc.d.ts +16 -0
- package/dist/helpdoc.js +59 -0
- package/dist/helpdoc.js.map +1 -0
- package/dist/hints.d.ts +0 -6
- package/dist/hints.js +59 -47
- package/dist/hints.js.map +1 -1
- package/dist/jsonschema.js +0 -114
- package/dist/jsonschema.js.map +1 -1
- package/dist/keyorder.d.ts +0 -7
- package/dist/keyorder.js +0 -41
- package/dist/keyorder.js.map +1 -1
- package/dist/lang.js +32 -877
- package/dist/lang.js.map +1 -1
- package/dist/lower.d.ts +3 -0
- package/dist/lower.js +14 -61
- package/dist/lower.js.map +1 -1
- package/dist/lsp-server.js +0 -16
- package/dist/lsp-server.js.map +1 -1
- package/dist/lsp.d.ts +1 -1
- package/dist/lsp.js +12 -159
- package/dist/lsp.js.map +1 -1
- package/dist/mcp-server.js +0 -26
- package/dist/mcp-server.js.map +1 -1
- package/dist/mcp.js +0 -113
- package/dist/mcp.js.map +1 -1
- package/dist/mod-tool.js +0 -130
- package/dist/mod-tool.js.map +1 -1
- package/dist/mod.js +0 -162
- package/dist/mod.js.map +1 -1
- package/dist/patch.js +0 -217
- package/dist/patch.js.map +1 -1
- package/dist/provenance.js +0 -140
- package/dist/provenance.js.map +1 -1
- package/dist/query.js +0 -75
- package/dist/query.js.map +1 -1
- package/dist/reach.js +0 -43
- package/dist/reach.js.map +1 -1
- package/dist/relation.d.ts +2 -0
- package/dist/relation.js +3 -58
- package/dist/relation.js.map +1 -1
- package/dist/render.js +33 -143
- package/dist/render.js.map +1 -1
- package/dist/report-sarif.d.ts +0 -11
- package/dist/report-sarif.js +0 -28
- package/dist/report-sarif.js.map +1 -1
- package/dist/sig.js +0 -35
- package/dist/sig.js.map +1 -1
- package/dist/sigdecl.js +1 -1
- package/dist/sigdecl.js.map +1 -1
- package/dist/siggate.js +0 -4
- package/dist/siggate.js.map +1 -1
- package/dist/site.js +3 -29
- package/dist/site.js.map +1 -1
- package/dist/subsume.d.ts +0 -10
- package/dist/subsume.js +0 -137
- package/dist/subsume.js.map +1 -1
- package/dist/template.d.ts +2 -1
- package/dist/template.js +58 -138
- package/dist/template.js.map +1 -1
- package/dist/trim.js +0 -41
- package/dist/trim.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/type.js.map +1 -1
- package/dist/unify.js +12 -242
- package/dist/unify.js.map +1 -1
- package/dist/utility.js +0 -22
- package/dist/utility.js.map +1 -1
- package/dist/val/AbnfFuncVal.d.ts +18 -0
- package/dist/val/AbnfFuncVal.js +132 -0
- package/dist/val/AbnfFuncVal.js.map +1 -0
- package/dist/val/AbsentVal.d.ts +11 -0
- package/dist/val/AbsentVal.js +30 -0
- package/dist/val/AbsentVal.js.map +1 -0
- package/dist/val/AggFuncVal.d.ts +10 -1
- package/dist/val/AggFuncVal.js +104 -116
- package/dist/val/AggFuncVal.js.map +1 -1
- package/dist/val/ArithFuncVal.js +0 -12
- package/dist/val/ArithFuncVal.js.map +1 -1
- package/dist/val/BagVal.js +1 -78
- package/dist/val/BagVal.js.map +1 -1
- package/dist/val/BigDecimalVal.js +0 -16
- package/dist/val/BigDecimalVal.js.map +1 -1
- package/dist/val/BigIntegerVal.js +0 -16
- package/dist/val/BigIntegerVal.js.map +1 -1
- package/dist/val/CloseFuncVal.js +0 -9
- package/dist/val/CloseFuncVal.js.map +1 -1
- package/dist/val/CmpFuncVal.d.ts +20 -0
- package/dist/val/CmpFuncVal.js +188 -0
- package/dist/val/CmpFuncVal.js.map +1 -0
- package/dist/val/ConjunctVal.js +0 -29
- package/dist/val/ConjunctVal.js.map +1 -1
- package/dist/val/ConstraintVal.js +0 -500
- package/dist/val/ConstraintVal.js.map +1 -1
- package/dist/val/ContainerKindVal.js +0 -2
- package/dist/val/ContainerKindVal.js.map +1 -1
- package/dist/val/CopyFuncVal.js +0 -3
- package/dist/val/CopyFuncVal.js.map +1 -1
- package/dist/val/Decimal.js +0 -179
- package/dist/val/Decimal.js.map +1 -1
- package/dist/val/DeprecateFuncVal.js.map +1 -1
- package/dist/val/DisjunctVal.js +0 -152
- package/dist/val/DisjunctVal.js.map +1 -1
- package/dist/val/EachFuncVal.d.ts +1 -2
- package/dist/val/EachFuncVal.js +12 -29
- package/dist/val/EachFuncVal.js.map +1 -1
- package/dist/val/EmitFuncVal.d.ts +1 -1
- package/dist/val/EmitFuncVal.js +6 -119
- package/dist/val/EmitFuncVal.js.map +1 -1
- package/dist/val/ExpectVal.js +0 -62
- package/dist/val/ExpectVal.js.map +1 -1
- package/dist/val/FilterFuncVal.js +0 -25
- package/dist/val/FilterFuncVal.js.map +1 -1
- package/dist/val/FuncBaseVal.d.ts +1 -0
- package/dist/val/FuncBaseVal.js +7 -127
- package/dist/val/FuncBaseVal.js.map +1 -1
- package/dist/val/GraphAtomVal.js +0 -15
- package/dist/val/GraphAtomVal.js.map +1 -1
- package/dist/val/HideFuncVal.js +0 -13
- package/dist/val/HideFuncVal.js.map +1 -1
- package/dist/val/IntegerVal.js +0 -61
- package/dist/val/IntegerVal.js.map +1 -1
- package/dist/val/JunctionVal.js +0 -20
- package/dist/val/JunctionVal.js.map +1 -1
- package/dist/val/KeyFuncVal.js +0 -46
- package/dist/val/KeyFuncVal.js.map +1 -1
- package/dist/val/ListVal.js +0 -57
- package/dist/val/ListVal.js.map +1 -1
- package/dist/val/LowerFuncVal.js +11 -6
- package/dist/val/LowerFuncVal.js.map +1 -1
- package/dist/val/MapVal.js +0 -151
- package/dist/val/MapVal.js.map +1 -1
- package/dist/val/MatchFuncVal.js +0 -27
- package/dist/val/MatchFuncVal.js.map +1 -1
- package/dist/val/{FormFuncVal.d.ts → MaybeFuncVal.d.ts} +5 -5
- package/dist/val/MaybeFuncVal.js +50 -0
- package/dist/val/MaybeFuncVal.js.map +1 -0
- package/dist/val/MoveFuncVal.js +0 -18
- package/dist/val/MoveFuncVal.js.map +1 -1
- package/dist/val/NilVal.js +2 -36
- package/dist/val/NilVal.js.map +1 -1
- package/dist/val/NomFuncVal.d.ts +12 -0
- package/dist/val/NomFuncVal.js +153 -0
- package/dist/val/NomFuncVal.js.map +1 -0
- package/dist/val/NumberVal.js +0 -15
- package/dist/val/NumberVal.js.map +1 -1
- package/dist/val/OpBaseVal.d.ts +1 -0
- package/dist/val/OpBaseVal.js +3 -15
- package/dist/val/OpBaseVal.js.map +1 -1
- package/dist/val/PackFuncVal.js +0 -34
- package/dist/val/PackFuncVal.js.map +1 -1
- package/dist/val/PathFuncVal.js +0 -6
- package/dist/val/PathFuncVal.js.map +1 -1
- package/dist/val/PathVal.js +0 -41
- package/dist/val/PathVal.js.map +1 -1
- package/dist/val/PlaceVal.js +0 -25
- package/dist/val/PlaceVal.js.map +1 -1
- package/dist/val/PlusOpVal.d.ts +1 -7
- package/dist/val/PlusOpVal.js +13 -74
- package/dist/val/PlusOpVal.js.map +1 -1
- package/dist/val/PrefFuncVal.js +0 -1
- package/dist/val/PrefFuncVal.js.map +1 -1
- package/dist/val/PrefVal.js +0 -167
- package/dist/val/PrefVal.js.map +1 -1
- package/dist/val/RecurseVal.js +0 -55
- package/dist/val/RecurseVal.js.map +1 -1
- package/dist/val/RefVal.js +0 -282
- package/dist/val/RefVal.js.map +1 -1
- package/dist/val/ReferFuncVal.js +0 -232
- package/dist/val/ReferFuncVal.js.map +1 -1
- package/dist/val/ScalarKindVal.js +0 -49
- package/dist/val/ScalarKindVal.js.map +1 -1
- package/dist/val/ScalarVal.js +0 -11
- package/dist/val/ScalarVal.js.map +1 -1
- package/dist/val/StrFuncVal.js +0 -18
- package/dist/val/StrFuncVal.js.map +1 -1
- package/dist/val/SuperFuncVal.js +0 -32
- package/dist/val/SuperFuncVal.js.map +1 -1
- package/dist/val/TopVal.js +0 -1
- package/dist/val/TopVal.js.map +1 -1
- package/dist/val/TranslateFuncVal.d.ts +12 -0
- package/dist/val/TranslateFuncVal.js +99 -0
- package/dist/val/TranslateFuncVal.js.map +1 -0
- package/dist/val/UpperFuncVal.js +11 -6
- package/dist/val/UpperFuncVal.js.map +1 -1
- package/dist/val/Val.d.ts +1 -0
- package/dist/val/Val.js +2 -133
- package/dist/val/Val.js.map +1 -1
- package/dist/val/VarVal.js +0 -12
- package/dist/val/VarVal.js.map +1 -1
- package/dist/val/arith.js +0 -37
- package/dist/val/arith.js.map +1 -1
- package/dist/val/caserange.d.ts +3 -0
- package/dist/val/caserange.js +49 -0
- package/dist/val/caserange.js.map +1 -0
- package/dist/val/members.js +0 -6
- package/dist/val/members.js.map +1 -1
- package/dist/val/numcmp.js +0 -11
- package/dist/val/numcmp.js.map +1 -1
- package/dist/val/numkind.js +0 -145
- package/dist/val/numkind.js.map +1 -1
- package/dist/val/valutil.js +0 -16
- package/dist/val/valutil.js.map +1 -1
- package/dist/vet.d.ts +12 -0
- package/dist/vet.js +159 -412
- package/dist/vet.js.map +1 -1
- package/dist/view.js +0 -414
- package/dist/view.js.map +1 -1
- package/dist/walk.js +0 -41
- package/dist/walk.js.map +1 -1
- package/grammar/aontu.abnf +9 -7
- package/grammar/aontu.gbnf +5 -5
- package/grammar/aontu.lark +5 -5
- package/grammar/aontu.tmLanguage.json +1 -1
- package/package.json +4 -2
- package/skill/SKILL.md +8 -0
- package/skill/init/check.sh +28 -0
- package/skill/init/data.aon +12 -0
- package/skill/init/model.aon +19 -0
- package/skill/tasks.md +151 -0
- package/src/agentsmd.ts +8 -32
- package/src/alias.ts +0 -39
- package/src/allow.ts +221 -0
- package/src/aontu.ts +10 -108
- package/src/aontumodel.ts +32 -0
- package/src/cli.ts +1009 -540
- package/src/ctx.ts +0 -103
- package/src/diff.ts +0 -40
- package/src/err.ts +0 -40
- package/src/escape.ts +0 -46
- package/src/exactjson.ts +0 -131
- package/src/format.ts +63 -234
- package/src/grammar.ts +72 -0
- package/src/graph.ts +0 -61
- package/src/hcanon.ts +0 -82
- package/src/helpdoc.ts +77 -0
- package/src/hints.ts +72 -49
- package/src/jsonschema.ts +0 -123
- package/src/keyorder.ts +0 -42
- package/src/lang.ts +39 -895
- package/src/lower.ts +15 -65
- package/src/lsp-server.ts +0 -16
- package/src/lsp.ts +12 -180
- package/src/mcp-server.ts +0 -31
- package/src/mcp.ts +0 -130
- package/src/mod-tool.ts +0 -158
- package/src/mod.ts +0 -178
- package/src/patch.ts +0 -232
- package/src/provenance.ts +0 -183
- package/src/query.ts +0 -84
- package/src/reach.ts +0 -53
- package/src/relation.ts +7 -71
- package/src/render.ts +33 -180
- package/src/report-sarif.ts +0 -48
- package/src/sig.ts +0 -35
- package/src/sigdecl.ts +1 -1
- package/src/siggate.ts +0 -30
- package/src/site.ts +3 -29
- package/src/subsume.ts +1 -161
- package/src/template.ts +69 -140
- package/src/trim.ts +0 -53
- package/src/type.ts +2 -45
- package/src/unify.ts +13 -251
- package/src/utility.ts +0 -31
- package/src/val/AbnfFuncVal.ts +181 -0
- package/src/val/AbsentVal.ts +54 -0
- package/src/val/AggFuncVal.ts +152 -188
- package/src/val/ArithFuncVal.ts +0 -20
- package/src/val/BagVal.ts +1 -78
- package/src/val/BigDecimalVal.ts +0 -16
- package/src/val/BigIntegerVal.ts +0 -16
- package/src/val/CloseFuncVal.ts +0 -9
- package/src/val/CmpFuncVal.ts +249 -0
- package/src/val/ConjunctVal.ts +0 -33
- package/src/val/ConstraintVal.ts +2 -537
- package/src/val/ContainerKindVal.ts +0 -18
- package/src/val/CopyFuncVal.ts +0 -5
- package/src/val/Decimal.ts +1 -185
- package/src/val/DeprecateFuncVal.ts +0 -10
- package/src/val/DisjunctVal.ts +0 -157
- package/src/val/EachFuncVal.ts +12 -53
- package/src/val/EmitFuncVal.ts +8 -208
- package/src/val/ExpectVal.ts +0 -62
- package/src/val/FilterFuncVal.ts +0 -55
- package/src/val/FuncBaseVal.ts +9 -130
- package/src/val/GraphAtomVal.ts +0 -42
- package/src/val/HideFuncVal.ts +0 -15
- package/src/val/IntegerVal.ts +0 -61
- package/src/val/JunctionVal.ts +0 -20
- package/src/val/KeyFuncVal.ts +0 -48
- package/src/val/ListVal.ts +0 -59
- package/src/val/LowerFuncVal.ts +12 -7
- package/src/val/MapVal.ts +0 -151
- package/src/val/MatchFuncVal.ts +0 -59
- package/src/val/MaybeFuncVal.ts +86 -0
- package/src/val/MoveFuncVal.ts +0 -20
- package/src/val/NilVal.ts +2 -36
- package/src/val/NomFuncVal.ts +200 -0
- package/src/val/NumberVal.ts +0 -16
- package/src/val/OpBaseVal.ts +4 -17
- package/src/val/PackFuncVal.ts +0 -63
- package/src/val/PathFuncVal.ts +0 -32
- package/src/val/PathVal.ts +0 -66
- package/src/val/PlaceVal.ts +0 -45
- package/src/val/PlusOpVal.ts +18 -75
- package/src/val/PrefFuncVal.ts +0 -1
- package/src/val/PrefVal.ts +0 -179
- package/src/val/RecurseVal.ts +0 -81
- package/src/val/RefVal.ts +1 -285
- package/src/val/ReferFuncVal.ts +0 -255
- package/src/val/ScalarKindVal.ts +0 -50
- package/src/val/ScalarVal.ts +0 -12
- package/src/val/StrFuncVal.ts +0 -44
- package/src/val/SuperFuncVal.ts +0 -42
- package/src/val/TopVal.ts +0 -1
- package/src/val/TranslateFuncVal.ts +132 -0
- package/src/val/UpperFuncVal.ts +12 -7
- package/src/val/Val.ts +3 -192
- package/src/val/VarVal.ts +0 -15
- package/src/val/arith.ts +0 -92
- package/src/val/caserange.ts +53 -0
- package/src/val/members.ts +0 -23
- package/src/val/numcmp.ts +1 -27
- package/src/val/numkind.ts +0 -149
- package/src/val/valutil.ts +0 -16
- package/src/vet.ts +209 -504
- package/src/view.ts +0 -507
- package/src/walk.ts +0 -41
- package/dist/std.d.ts +0 -3
- package/dist/std.js +0 -637
- package/dist/std.js.map +0 -1
- package/dist/val/FormFuncVal.js +0 -55
- package/dist/val/FormFuncVal.js.map +0 -1
- package/src/std.ts +0 -648
- package/src/val/FormFuncVal.ts +0 -119
package/dist/val/PackFuncVal.js
CHANGED
|
@@ -10,14 +10,7 @@ const FuncBaseVal_1 = require("./FuncBaseVal");
|
|
|
10
10
|
const Val_1 = require("./Val");
|
|
11
11
|
const PlaceVal_1 = require("./PlaceVal");
|
|
12
12
|
const members_1 = require("./members");
|
|
13
|
-
// The keys a data bag names, in the order the result must carry them,
|
|
14
|
-
// or a code naming what is wrong with it. Shared with `each`, which
|
|
15
|
-
// asks the same question of the same argument and answers it with the
|
|
16
|
-
// values rather than the keys.
|
|
17
13
|
function dataKeys(data, ctx) {
|
|
18
|
-
// The candidates are the bag's MEMBERS -- what generation would
|
|
19
|
-
// emit (./members.ts, BUGS.md §79) -- so a hidden key, or a hidden
|
|
20
|
-
// name in a list of names, packs nothing.
|
|
21
14
|
const members = (0, members_1.bagMembers)(data, ctx);
|
|
22
15
|
if (undefined === members) {
|
|
23
16
|
return 'pack_data';
|
|
@@ -42,21 +35,11 @@ class PackFuncVal extends FuncBaseVal_1.FuncBaseVal {
|
|
|
42
35
|
constructor(spec, ctx) {
|
|
43
36
|
super(spec, ctx);
|
|
44
37
|
this.isPackFunc = true;
|
|
45
|
-
// THE STAGING RULE (G8 phase 0, see AontuContext.settle). A
|
|
46
|
-
// generator's data argument is not settled merely by being `done`
|
|
47
|
-
// once: a sibling conjunct, an include or a spread can still merge
|
|
48
|
-
// keys into it, and children generated from the half-merged bag
|
|
49
|
-
// would be missing. It fires on the settle pass and only then.
|
|
50
38
|
this.staged = true;
|
|
51
39
|
}
|
|
52
40
|
funcname() {
|
|
53
41
|
return 'pack';
|
|
54
42
|
}
|
|
55
|
-
// The TEMPLATE IS NOT AN ARGUMENT TO DRIVE. Driving it would resolve
|
|
56
|
-
// its `key()` at the CALL SITE -- the one position the template is
|
|
57
|
-
// never used at -- and freeze whatever else in it is path-dependent
|
|
58
|
-
// there too. The data argument is driven by `unify` below instead,
|
|
59
|
-
// one argument by hand rather than all of them by the base.
|
|
60
43
|
prepare(_ctx, _args) {
|
|
61
44
|
return null;
|
|
62
45
|
}
|
|
@@ -80,24 +63,7 @@ class PackFuncVal extends FuncBaseVal_1.FuncBaseVal {
|
|
|
80
63
|
const src = args[0];
|
|
81
64
|
for (const key of keys) {
|
|
82
65
|
const keyctx = ctx.descend(key);
|
|
83
|
-
// THE PLACEHOLDER BINDS THE SOURCE CHILD (G8 phase 3): inside a
|
|
84
|
-
// generator's template `_` is the datum this child is being made
|
|
85
|
-
// FROM. For a map that is the child's value; for a list of names
|
|
86
|
-
// it is the name, which is also the key -- so `_` and `key()`
|
|
87
|
-
// agree there, and differ the moment the data is a map.
|
|
88
66
|
const source = true === src?.isMap ? src.peg[key] : src.peg[keys.indexOf(key)];
|
|
89
|
-
// CLONED, never shared. A spread may share a template that holds
|
|
90
|
-
// nothing path-dependent (MapVal.spreadClone), because a spread
|
|
91
|
-
// CONSTRAINS a child that exists; a generator's template IS the
|
|
92
|
-
// child, and a child is a position. Sharing left every generated
|
|
93
|
-
// child pointing at the template's own parse-time location, which
|
|
94
|
-
// is the position the template is never used at -- visible as the
|
|
95
|
-
// site an error inside a generated child reports.
|
|
96
|
-
//
|
|
97
|
-
// A FULL INSTANCE, to the leaves (`dup`, ADR-005): a bare clone
|
|
98
|
-
// shares the inner structure of any call, preference or
|
|
99
|
-
// operation in the template, so the first child's resolution of
|
|
100
|
-
// a shared key()/ref answered for every child (BUGS.md §8, §9).
|
|
101
67
|
const inst = tmpl.clone(keyctx, { dup: true });
|
|
102
68
|
(0, Val_1.repathInstance)(inst, inst.path);
|
|
103
69
|
const child = (0, PlaceVal_1.fillPlace)(inst, source, keyctx);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PackFuncVal.js","sourceRoot":"","sources":["../../src/val/PackFuncVal.ts"],"names":[],"mappings":";AAAA,oDAAoD;;;
|
|
1
|
+
{"version":3,"file":"PackFuncVal.js","sourceRoot":"","sources":["../../src/val/PackFuncVal.ts"],"names":[],"mappings":"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"}
|
package/dist/val/PathFuncVal.js
CHANGED
|
@@ -58,12 +58,6 @@ class PathFuncVal extends FuncBaseVal_1.FuncBaseVal {
|
|
|
58
58
|
if (null == arg) {
|
|
59
59
|
return [];
|
|
60
60
|
}
|
|
61
|
-
// The captured spelling, from a reference's segments or from a
|
|
62
|
-
// string literal read as address text. Both go through
|
|
63
|
-
// parseAddress, so what capture admits and what refer reads
|
|
64
|
-
// cannot drift. Anything else -- an expression, a reference to
|
|
65
|
-
// a string -- is left for the driving loop, and resolve
|
|
66
|
-
// converts the driven result below.
|
|
67
61
|
let spelling;
|
|
68
62
|
if (true === arg.isRef) {
|
|
69
63
|
spelling = captureSpelling(arg);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PathFuncVal.js","sourceRoot":"","sources":["../../src/val/PathFuncVal.ts"],"names":[],"mappings":";AAAA,yDAAyD;;;
|
|
1
|
+
{"version":3,"file":"PathFuncVal.js","sourceRoot":"","sources":["../../src/val/PathFuncVal.ts"],"names":[],"mappings":"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"}
|
package/dist/val/PathVal.js
CHANGED
|
@@ -9,16 +9,7 @@ const err_1 = require("../err");
|
|
|
9
9
|
const utility_1 = require("../utility");
|
|
10
10
|
const ScalarVal_1 = require("./ScalarVal");
|
|
11
11
|
const ScalarKindVal_1 = require("./ScalarKindVal");
|
|
12
|
-
// A segment of a tree path: a map key or a list index. The same
|
|
13
|
-
// grammar the rest of the engine spells keys with, and a leading digit
|
|
14
|
-
// is legitimate because a list index is one.
|
|
15
12
|
const ADDR_SEGMENT = /^[A-Za-z0-9_-]+$/;
|
|
16
|
-
// The address a string spells, or undefined when it does not spell
|
|
17
|
-
// one. An address is a TREE PATH, in exactly the two spellings a
|
|
18
|
-
// reference uses: `$.services.auth` from the root, `.auth` from the
|
|
19
|
-
// link's own sibling scope. The tree is the only namespace -- which is
|
|
20
|
-
// what makes a model instantiable more than once, each instance
|
|
21
|
-
// resolving its relative links inside itself (ADR-014).
|
|
22
13
|
function parseAddress(s) {
|
|
23
14
|
if ('$' === s) {
|
|
24
15
|
// The whole document is not a relation's target: an address must
|
|
@@ -57,27 +48,9 @@ function parseAddress(s) {
|
|
|
57
48
|
}
|
|
58
49
|
return { absolute: false, up, parts };
|
|
59
50
|
}
|
|
60
|
-
// The spelling string TEXT converts by, inside a `path(...)` call:
|
|
61
|
-
// text that carries no anchor is RELATIVE (`"a.b"` is the address
|
|
62
|
-
// `.a.b`), matching the raw form (`path(a.b)` captures `.a.b`). Only
|
|
63
|
-
// the anchor is supplied -- the result still has to parse, so
|
|
64
|
-
// malformed text (`""`, `"a..b"`, a bad `$` spelling) refuses as
|
|
65
|
-
// before. The prefix is not applied to text that claims an anchor:
|
|
66
|
-
// `"$x"` is a broken absolute address, not a relative one.
|
|
67
51
|
function textAddress(s) {
|
|
68
52
|
return ('$' === s[0] || '.' === s[0]) ? s : '.' + s;
|
|
69
53
|
}
|
|
70
|
-
// The LONGER of two addresses when one spells a prefix of the other
|
|
71
|
-
// (docs/design/PATHS.0.md, amended): same anchor -- absolute or the
|
|
72
|
-
// same number of parent steps -- and the shorter's segments open the
|
|
73
|
-
// longer's. The meet of two path values, and of a refer's address
|
|
74
|
-
// with a later path peer: a path can always be told more precisely,
|
|
75
|
-
// and the more precise spelling is the result. Undefined when the two
|
|
76
|
-
// are not comparable, which refuses as any two unequal scalars do.
|
|
77
|
-
// Both arguments must already be valid addresses: every caller hands
|
|
78
|
-
// over a PathVal peg or a refer addrsrc, and both are validated at
|
|
79
|
-
// capture or conversion -- the same trust `unify`'s own address arm
|
|
80
|
-
// extends (`parseAddress(p.peg) as Address`).
|
|
81
54
|
function prefixMeet(a, b) {
|
|
82
55
|
const pa = parseAddress(a);
|
|
83
56
|
const pb = parseAddress(b);
|
|
@@ -98,11 +71,6 @@ class PathVal extends ScalarVal_1.ScalarVal {
|
|
|
98
71
|
super({ peg: spec.peg, kind: ScalarKindVal_1.Path }, ctx);
|
|
99
72
|
this.isPath = true;
|
|
100
73
|
}
|
|
101
|
-
// Two path values meet by the PREFIX rule (ADR-016): the longer
|
|
102
|
-
// when one opens the other, refusal otherwise. Exactly equal pegs
|
|
103
|
-
// are absorbed by unite's fast path before this runs, so the arm
|
|
104
|
-
// sees the unequal pairs; the winner carries both sides' marks, as
|
|
105
|
-
// the equal-scalar arm has always ratcheted them.
|
|
106
74
|
unify(peer, ctx) {
|
|
107
75
|
const p = peer;
|
|
108
76
|
if (true === p.isPath) {
|
|
@@ -123,20 +91,11 @@ class PathVal extends ScalarVal_1.ScalarVal {
|
|
|
123
91
|
get canon() {
|
|
124
92
|
return 'path(' + this.peg + ')';
|
|
125
93
|
}
|
|
126
|
-
// The super() ladder lifts a path value to its own kind, and the
|
|
127
|
-
// kind must render as `path()` -- the bare word `path` is an
|
|
128
|
-
// ordinary string. ScalarVal.superior would mint the plain
|
|
129
|
-
// ScalarKindVal, whose canon is the bare word.
|
|
130
94
|
superior() {
|
|
131
95
|
return this.place(new PathKindVal({}));
|
|
132
96
|
}
|
|
133
97
|
} /* node:coverage ignore next 4 */
|
|
134
98
|
exports.PathVal = PathVal;
|
|
135
|
-
// The path KIND, `path()`: admits every path value and defaults to
|
|
136
|
-
// nothing, as `string` does. It does NOT promote (ADR-016): a bare
|
|
137
|
-
// string meeting the kind refuses through the generic kind ladder,
|
|
138
|
-
// exactly as `integer & "x"` does -- `path("...")` is the one string
|
|
139
|
-
// conversion, and it happens at the call.
|
|
140
99
|
class PathKindVal extends ScalarKindVal_1.ScalarKindVal {
|
|
141
100
|
constructor(spec, ctx) {
|
|
142
101
|
super({ ...spec, peg: ScalarKindVal_1.Path }, ctx);
|
package/dist/val/PathVal.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PathVal.js","sourceRoot":"","sources":["../../src/val/PathVal.ts"],"names":[],"mappings":";AAAA,oDAAoD;;;;;;
|
|
1
|
+
{"version":3,"file":"PathVal.js","sourceRoot":"","sources":["../../src/val/PathVal.ts"],"names":[],"mappings":"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"}
|
package/dist/val/PlaceVal.js
CHANGED
|
@@ -32,26 +32,11 @@ class PlaceVal extends Val_1.Val {
|
|
|
32
32
|
}
|
|
33
33
|
}
|
|
34
34
|
exports.PlaceVal = PlaceVal;
|
|
35
|
-
// A HOLE BELONGS TO ITS NEAREST ENCLOSING GENERATOR. A `_` inside a
|
|
36
|
-
// generator's template (pack/each, arg 1), condition (filter, arg 1)
|
|
37
|
-
// or rule table (emit, arg 1) is that generator's to bind — "_ is the
|
|
38
|
-
// source child" — so neither the hole test nor the fill walk may cross
|
|
39
|
-
// into those arguments from outside. Before this boundary, `close(pack(d, _ & t))` reported a
|
|
40
|
-
// hole to the OUTER call, so an ordinary overlay statement was
|
|
41
|
-
// absorbed into the template instead of merging with the generated
|
|
42
|
-
// child (use-cases/BUGS.md §10), and an outer pack's fill pass
|
|
43
|
-
// captured a NESTED pack's hole lexically, binding it to the outer
|
|
44
|
-
// source (§34). The data argument (arg 0) is not a binding position,
|
|
45
|
-
// so it stays visible: a hole there is an outer hole as before.
|
|
46
35
|
function boundArgStart(v) {
|
|
47
36
|
return true === v.isPackFunc || true === v.isEachFunc ||
|
|
48
37
|
true === v.isFilterFunc || true === v.isEmitFunc ||
|
|
49
38
|
true === v.isFormFunc ? 1 : Infinity;
|
|
50
39
|
}
|
|
51
|
-
// Does this value CONTAIN a hole? Asked of a call before it resolves:
|
|
52
|
-
// a call holding one must wait for a peer to fill it. Holes inside a
|
|
53
|
-
// generator's own binding arguments are NOT this value's holes — see
|
|
54
|
-
// boundArgStart above.
|
|
55
40
|
function hasPlace(v) {
|
|
56
41
|
if (true === v.isPlace) {
|
|
57
42
|
return true;
|
|
@@ -78,18 +63,8 @@ function hasPlace(v) {
|
|
|
78
63
|
}
|
|
79
64
|
return false;
|
|
80
65
|
}
|
|
81
|
-
// The same tree with every hole filled by `fill`. Answers the value
|
|
82
|
-
// UNCHANGED when it holds no hole, so a caller can test identity to
|
|
83
|
-
// know whether anything was filled -- and so a tree with no hole is
|
|
84
|
-
// never needlessly cloned. A nested generator's binding arguments are
|
|
85
|
-
// left untouched (boundArgStart): those holes are the inner
|
|
86
|
-
// generator's to fill with its OWN source children when it fires.
|
|
87
66
|
function fillPlace(v, fill, ctx) {
|
|
88
67
|
if (true === v.isPlace) {
|
|
89
|
-
// A FILL IS A POSITION. The hole knows where it sits in the
|
|
90
|
-
// instance; the datum arriving in it does not, and inserted as it
|
|
91
|
-
// stands it keeps the paths it had at its SOURCE, so every finding
|
|
92
|
-
// under it names a path that does not exist.
|
|
93
68
|
return fill.clone(ctx, { path: [...v.path] });
|
|
94
69
|
}
|
|
95
70
|
const peg = v.peg;
|
package/dist/val/PlaceVal.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlaceVal.js","sourceRoot":"","sources":["../../src/val/PlaceVal.ts"],"names":[],"mappings":";AAAA,oDAAoD;;;
|
|
1
|
+
{"version":3,"file":"PlaceVal.js","sourceRoot":"","sources":["../../src/val/PlaceVal.ts"],"names":[],"mappings":"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"}
|
package/dist/val/PlusOpVal.d.ts
CHANGED
|
@@ -1,11 +1,5 @@
|
|
|
1
1
|
import type { Val, ValSpec } from '../type';
|
|
2
2
|
import { AontuContext } from '../ctx';
|
|
3
|
-
import { IntegerVal } from '../val/IntegerVal';
|
|
4
|
-
import { NumberVal } from '../val/NumberVal';
|
|
5
|
-
import { StringVal } from '../val/StringVal';
|
|
6
|
-
import { BooleanVal } from '../val/BooleanVal';
|
|
7
|
-
import { BigIntegerVal } from '../val/BigIntegerVal';
|
|
8
|
-
import { BigDecimalVal } from '../val/BigDecimalVal';
|
|
9
3
|
import { OpBaseVal } from './OpBaseVal';
|
|
10
4
|
declare function plusText(v: Val): string | undefined;
|
|
11
5
|
declare class PlusOpVal extends OpBaseVal {
|
|
@@ -13,7 +7,7 @@ declare class PlusOpVal extends OpBaseVal {
|
|
|
13
7
|
constructor(spec: ValSpec, ctx?: AontuContext);
|
|
14
8
|
make(_ctx: AontuContext, spec: ValSpec): Val;
|
|
15
9
|
opname(): string;
|
|
16
|
-
operate(ctx: AontuContext, args: Val[]):
|
|
10
|
+
operate(ctx: AontuContext, args: Val[]): Val | undefined;
|
|
17
11
|
get canon(): string;
|
|
18
12
|
}
|
|
19
13
|
export { PlusOpVal, plusText, };
|
package/dist/val/PlusOpVal.js
CHANGED
|
@@ -8,26 +8,13 @@ const IntegerVal_1 = require("../val/IntegerVal");
|
|
|
8
8
|
const NumberVal_1 = require("../val/NumberVal");
|
|
9
9
|
const StringVal_1 = require("../val/StringVal");
|
|
10
10
|
const BooleanVal_1 = require("../val/BooleanVal");
|
|
11
|
+
const ListVal_1 = require("../val/ListVal");
|
|
11
12
|
const BigIntegerVal_1 = require("../val/BigIntegerVal");
|
|
12
13
|
const BigDecimalVal_1 = require("../val/BigDecimalVal");
|
|
13
14
|
const Decimal_1 = require("../val/Decimal");
|
|
14
15
|
const numkind_1 = require("../val/numkind");
|
|
15
16
|
const numkind_2 = require("../val/numkind");
|
|
16
17
|
const OpBaseVal_1 = require("./OpBaseVal");
|
|
17
|
-
// D6 -- THE EXACT LADDER: integer < biginteger < bigdecimal. A mixed
|
|
18
|
-
// operation between exact leaves promotes to the WIDEST operand and is
|
|
19
|
-
// computed exactly, so `1 + 0d2` is a biginteger and `1 + 0d0.5` a
|
|
20
|
-
// bigdecimal.
|
|
21
|
-
//
|
|
22
|
-
// `float` is deliberately absent: it is OFF the ladder, keeping only its
|
|
23
|
-
// classic contagion against `integer`. Its absence from this table is
|
|
24
|
-
// what makes the float-with-big pairs fall through to the hard error
|
|
25
|
-
// below rather than promoting.
|
|
26
|
-
//
|
|
27
|
-
// Results NEVER demote: `0d5 + -0d2` stays a biginteger even though 3
|
|
28
|
-
// would fit an int64. Demotion would make the result kind depend on the
|
|
29
|
-
// values rather than on the operand kinds, and a document could then
|
|
30
|
-
// change leaf under a value edit.
|
|
31
18
|
const EXACT_RANK = {
|
|
32
19
|
integer: 1,
|
|
33
20
|
biginteger: 2,
|
|
@@ -36,13 +23,6 @@ const EXACT_RANK = {
|
|
|
36
23
|
function isBig(k) {
|
|
37
24
|
return 'biginteger' === k || 'bigdecimal' === k;
|
|
38
25
|
}
|
|
39
|
-
// Only concrete scalar operands are valid: anything else (kinds, maps,
|
|
40
|
-
// lists, null, top, funcs) must not coerce — the JS `+` would leak
|
|
41
|
-
// internals like "[object Object]" into output. A non-scalar operand
|
|
42
|
-
// leaves the op unresolved, which generate() reports.
|
|
43
|
-
//
|
|
44
|
-
// A pref operand contributes its preferred value (`pref(1)+2`), and
|
|
45
|
-
// therefore that value's kind too.
|
|
46
26
|
function operand(v) {
|
|
47
27
|
while (v?.isPref) {
|
|
48
28
|
v = v.peg;
|
|
@@ -72,14 +52,6 @@ function opkind(v) {
|
|
|
72
52
|
'boolean' === t ? 'boolean' :
|
|
73
53
|
undefined;
|
|
74
54
|
}
|
|
75
|
-
// THE TEXT `+` WOULD MAKE OF THIS OPERAND, or undefined if `+` would not
|
|
76
|
-
// take it at all.
|
|
77
|
-
//
|
|
78
|
-
// `join` folds with `+` seeded with `""`, so every member goes through
|
|
79
|
-
// concatenation's string branch — and this is the function that branch
|
|
80
|
-
// calls. Exported so that the fold and the operator cannot drift into
|
|
81
|
-
// two answers to "how does a number become text": there is one
|
|
82
|
-
// rendering, `digits` below, and both reach it here.
|
|
83
55
|
function plusText(v) {
|
|
84
56
|
const o = operand(v);
|
|
85
57
|
const k = opkind(o);
|
|
@@ -99,6 +71,18 @@ class PlusOpVal extends OpBaseVal_1.OpBaseVal {
|
|
|
99
71
|
operate(ctx, args) {
|
|
100
72
|
const av = operand(args[0]);
|
|
101
73
|
const bv = operand(args[1]);
|
|
74
|
+
// ABSENCE PROPAGATES (ADR-034).
|
|
75
|
+
if (true === av?.isAbsent) {
|
|
76
|
+
return av;
|
|
77
|
+
}
|
|
78
|
+
if (true === bv?.isAbsent) {
|
|
79
|
+
return bv;
|
|
80
|
+
}
|
|
81
|
+
// Lists concatenate (ADR-037).
|
|
82
|
+
if (true === av?.isList && true === bv?.isList) {
|
|
83
|
+
const peg = [...av.peg, ...bv.peg].map((v, i) => v.clone(ctx.descend(String(i))));
|
|
84
|
+
return new ListVal_1.ListVal({ peg }, ctx);
|
|
85
|
+
}
|
|
102
86
|
const ak = opkind(av);
|
|
103
87
|
const bk = opkind(bv);
|
|
104
88
|
if (undefined === ak || undefined === bk) {
|
|
@@ -107,12 +91,6 @@ class PlusOpVal extends OpBaseVal_1.OpBaseVal {
|
|
|
107
91
|
if ('boolean' === ak && 'boolean' === bk) {
|
|
108
92
|
return new BooleanVal_1.BooleanVal({ peg: av.peg || bv.peg });
|
|
109
93
|
}
|
|
110
|
-
// STRING CONCATENATION RENDERS DIGITS, NOT KIND DECORATION. The `0d`
|
|
111
|
-
// marker is canon's way of naming the leaf and never belongs in a
|
|
112
|
-
// string, exactly as R4's `.0` float suffix does not ("q" + 0d0.1 is
|
|
113
|
-
// "q0.1", and "q" + 1.0 is "q1"). Decimal.toString() is that
|
|
114
|
-
// marker-free rendering, which is why canon() wraps it rather than
|
|
115
|
-
// the other way round.
|
|
116
94
|
if ('string' === ak || 'string' === bk) {
|
|
117
95
|
return new StringVal_1.StringVal({ peg: digits(av, ak) + digits(bv, bk) });
|
|
118
96
|
}
|
|
@@ -120,23 +98,9 @@ class PlusOpVal extends OpBaseVal_1.OpBaseVal {
|
|
|
120
98
|
if ('boolean' === ak || 'boolean' === bk) {
|
|
121
99
|
return undefined;
|
|
122
100
|
}
|
|
123
|
-
// FLOAT IS OFF THE EXACT LADDER, and mixing it with either big leaf
|
|
124
|
-
// is a hard error in BOTH operand orders: a big type never silently
|
|
125
|
-
// becomes a binary float. Promotion the other way is no better —
|
|
126
|
-
// binary64 cannot hold every exact value, so either direction throws
|
|
127
|
-
// away exactness the document explicitly asked for by writing `0d`.
|
|
128
|
-
// The error names both leaves in operand order.
|
|
129
101
|
if (('float' === ak && isBig(bk)) || (isBig(ak) && 'float' === bk)) {
|
|
130
102
|
return (0, err_1.makeNilErr)(ctx, 'exact_float_mix', this, undefined, 'add', { left: ak, right: bk });
|
|
131
103
|
}
|
|
132
|
-
// Float with float or integer: unchanged R5 contagion, binary64
|
|
133
|
-
// addition, float result (`1 + 2.0` is `3.0`) -- but a sum that
|
|
134
|
-
// leaves binary64's finite range is NOT a value. Aontu is a JSON
|
|
135
|
-
// superset and there is no notation for an infinity, so one here
|
|
136
|
-
// used to escape as `[aontu/internal]` in TypeScript and as Go's
|
|
137
|
-
// raw `json: unsupported value: +Inf` with no code at all
|
|
138
|
-
// (use-cases/BUGS.md 39). The same check governs the arithmetic
|
|
139
|
-
// family (float_overflow, ts/src/val/arith.ts).
|
|
140
104
|
if ('float' === ak || 'float' === bk) {
|
|
141
105
|
const sum = av.peg + bv.peg;
|
|
142
106
|
return Number.isFinite(sum) ?
|
|
@@ -161,13 +125,6 @@ class PlusOpVal extends OpBaseVal_1.OpBaseVal {
|
|
|
161
125
|
// `integer` however small the result.
|
|
162
126
|
return new BigIntegerVal_1.BigIntegerVal({ peg: sum });
|
|
163
127
|
}
|
|
164
|
-
// INTEGER + INTEGER IS COMPUTED EXACTLY, then offered to the integer
|
|
165
|
-
// leaf under the same storage contract R1 applies to a literal.
|
|
166
|
-
// Adding through float64 (as this did) silently rounded sums of
|
|
167
|
-
// exact operands — 4503599627370496 + 4503599627370497 came back as
|
|
168
|
-
// …992 — which is precisely the corruption the tower refuses. The
|
|
169
|
-
// sum that will not fit is an error pointing at `0d`, not a rounded
|
|
170
|
-
// answer.
|
|
171
128
|
return (0, numkind_2.isIntegerStorable)(sum) ?
|
|
172
129
|
new IntegerVal_1.IntegerVal({ peg: Number(sum) }) :
|
|
173
130
|
(0, err_1.makeNilErr)(ctx, 'inexact_integer_sum', this, undefined, 'add', { sum: sum.toString() });
|
|
@@ -177,32 +134,14 @@ class PlusOpVal extends OpBaseVal_1.OpBaseVal {
|
|
|
177
134
|
}
|
|
178
135
|
}
|
|
179
136
|
exports.PlusOpVal = PlusOpVal;
|
|
180
|
-
// The digits of an operand for string concatenation: no `0d` marker, no
|
|
181
|
-
// R4 `.0` suffix — the plain rendering of the number, in every leaf.
|
|
182
|
-
//
|
|
183
|
-
// INTEGER KIND GOES THROUGH integerDigits. This was the THIRD site to
|
|
184
|
-
// render an integer-kind peg with JavaScript's shortest round-tripping
|
|
185
|
-
// form, so `"" + 1152921504606846976` produced "1152921504606847000" — a
|
|
186
|
-
// different integer — where Go produced the exact digits. See #21 and
|
|
187
|
-
// integerDigits, which exists so the set of such sites is greppable.
|
|
188
|
-
//
|
|
189
|
-
// The other leaves are already exact or already correct: a bigint
|
|
190
|
-
// stringifies to its exact digits, a Decimal renders its own, and a FLOAT
|
|
191
|
-
// must keep String() because its shortest form is the right answer and is
|
|
192
|
-
// what Go prints too (`"a" + 1.0` is "a1").
|
|
193
137
|
function digits(v, k) {
|
|
194
138
|
return 'bigdecimal' === k ? v.peg.toString() :
|
|
195
139
|
'integer' === k ? (0, numkind_1.integerDigits)(v.peg) :
|
|
196
140
|
String(v.peg);
|
|
197
141
|
}
|
|
198
|
-
// An exact-ladder operand as an exact integer. Only reached for the two
|
|
199
|
-
// integral leaves; an `integer` peg is integral by construction, so
|
|
200
|
-
// BigInt() is exact.
|
|
201
142
|
function integer(v, k) {
|
|
202
143
|
return 'biginteger' === k ? v.peg : BigInt(v.peg);
|
|
203
144
|
}
|
|
204
|
-
// An exact-ladder operand as a Decimal, for the promotion to bigdecimal.
|
|
205
|
-
// Scale 0 normalises to the one decimal place the leaf keeps.
|
|
206
145
|
function decimal(v, k) {
|
|
207
146
|
return 'bigdecimal' === k ? v.peg : new Decimal_1.Decimal(integer(v, k), 0);
|
|
208
147
|
} /* node:coverage ignore next 6 */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlusOpVal.js","sourceRoot":"","sources":["../../src/val/PlusOpVal.ts"],"names":[],"mappings":";AAAA,yDAAyD;;;
|
|
1
|
+
{"version":3,"file":"PlusOpVal.js","sourceRoot":"","sources":["../../src/val/PlusOpVal.ts"],"names":[],"mappings":"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"}
|
package/dist/val/PrefFuncVal.js
CHANGED
|
@@ -24,7 +24,6 @@ class PrefFuncVal extends FuncBaseVal_1.FuncBaseVal {
|
|
|
24
24
|
// Wrap every child val in a PrefVal
|
|
25
25
|
out = (0, utility_1.walk)(out, (_key, val) => {
|
|
26
26
|
let oval = val;
|
|
27
|
-
// console.log('PREFVAL', _key, oval.canon, oval.constructor.name)
|
|
28
27
|
if (val.isScalar
|
|
29
28
|
|| val.isPref) {
|
|
30
29
|
oval = new PrefVal_1.PrefVal({ peg: val }, ctx);
|
|
@@ -1 +1 @@
|
|
|
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,
|
|
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,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"}
|