aontu 0.52.1 → 0.54.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 +15 -3
- package/dist/aontu.js +126 -5
- package/dist/aontu.js.map +1 -1
- package/dist/cli.d.ts +45 -1
- package/dist/cli.js +2845 -69
- package/dist/cli.js.map +1 -1
- package/dist/ctx.d.ts +18 -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 +45 -8
- package/dist/err.js.map +1 -1
- package/dist/graph.d.ts +13 -0
- package/dist/graph.js +110 -0
- package/dist/graph.js.map +1 -0
- package/dist/hcanon.d.ts +3 -0
- package/dist/hcanon.js +145 -0
- package/dist/hcanon.js.map +1 -0
- package/dist/hints.js +235 -8
- package/dist/hints.js.map +1 -1
- package/dist/jsonschema.d.ts +20 -0
- package/dist/jsonschema.js +425 -0
- package/dist/jsonschema.js.map +1 -0
- package/dist/lang.js +955 -110
- package/dist/lang.js.map +1 -1
- package/dist/lsp.d.ts +9 -2
- package/dist/lsp.js +343 -48
- 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 +941 -0
- package/dist/mcp.js.map +1 -0
- package/dist/mod-tool.d.ts +58 -0
- package/dist/mod-tool.js +532 -0
- package/dist/mod-tool.js.map +1 -0
- package/dist/mod.d.ts +35 -0
- package/dist/mod.js +345 -0
- package/dist/mod.js.map +1 -0
- package/dist/patch.d.ts +49 -0
- package/dist/patch.js +506 -0
- package/dist/patch.js.map +1 -0
- package/dist/provenance.d.ts +41 -0
- package/dist/provenance.js +336 -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 +15 -0
- package/dist/reach.js +168 -0
- package/dist/reach.js.map +1 -0
- package/dist/relation.d.ts +23 -0
- package/dist/relation.js +230 -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/sig.d.ts +25 -0
- package/dist/sig.js +277 -0
- package/dist/sig.js.map +1 -0
- package/dist/sigdecl.d.ts +2 -0
- package/dist/sigdecl.js +11 -0
- package/dist/sigdecl.js.map +1 -0
- package/dist/siggate.d.ts +4 -0
- package/dist/siggate.js +90 -0
- package/dist/siggate.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 +129 -0
- package/dist/std.js.map +1 -0
- package/dist/subsume.d.ts +39 -0
- package/dist/subsume.js +573 -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 +2 -1
- package/dist/unify.js +234 -38
- package/dist/unify.js.map +1 -1
- package/dist/utility.d.ts +8 -1
- package/dist/utility.js +68 -1
- package/dist/utility.js.map +1 -1
- package/dist/val/AggFuncVal.d.ts +44 -0
- package/dist/val/AggFuncVal.js +364 -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 +7 -0
- package/dist/val/BagVal.js +150 -11
- 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 +7 -1
- package/dist/val/ConstraintVal.js +523 -45
- package/dist/val/ConstraintVal.js.map +1 -1
- package/dist/val/ContainerKindVal.d.ts +35 -0
- package/dist/val/ContainerKindVal.js +99 -0
- package/dist/val/ContainerKindVal.js.map +1 -0
- package/dist/val/CopyFuncVal.d.ts +1 -2
- 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.d.ts +1 -2
- package/dist/val/DisjunctVal.js +269 -53
- 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.js +62 -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 +7 -1
- package/dist/val/FuncBaseVal.js +183 -2
- package/dist/val/FuncBaseVal.js.map +1 -1
- package/dist/val/GraphAtomVal.d.ts +39 -0
- package/dist/val/GraphAtomVal.js +184 -0
- package/dist/val/GraphAtomVal.js.map +1 -0
- package/dist/val/HideFuncVal.js.map +1 -1
- package/dist/val/JunctionVal.js +24 -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 +94 -14
- package/dist/val/ListVal.js.map +1 -1
- package/dist/val/LowerFuncVal.js.map +1 -1
- package/dist/val/MapVal.d.ts +1 -0
- package/dist/val/MapVal.js +146 -14
- 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 +19 -1
- 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.d.ts +2 -2
- package/dist/val/PathFuncVal.js +75 -16
- package/dist/val/PathFuncVal.js.map +1 -1
- package/dist/val/PathVal.d.ts +25 -0
- package/dist/val/PathVal.js +150 -0
- package/dist/val/PathVal.js.map +1 -0
- 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.d.ts +2 -1
- package/dist/val/PlusOpVal.js +61 -37
- package/dist/val/PlusOpVal.js.map +1 -1
- package/dist/val/PrefFuncVal.js.map +1 -1
- package/dist/val/PrefVal.d.ts +4 -2
- package/dist/val/PrefVal.js +223 -41
- package/dist/val/PrefVal.js.map +1 -1
- package/dist/val/RecurseVal.d.ts +19 -0
- package/dist/val/RecurseVal.js +217 -0
- package/dist/val/RecurseVal.js.map +1 -0
- package/dist/val/RefVal.d.ts +3 -2
- package/dist/val/RefVal.js +181 -66
- package/dist/val/RefVal.js.map +1 -1
- package/dist/val/ReferFuncVal.d.ts +59 -0
- package/dist/val/ReferFuncVal.js +604 -0
- package/dist/val/ReferFuncVal.js.map +1 -0
- package/dist/val/ScalarKindVal.d.ts +4 -3
- package/dist/val/ScalarKindVal.js +12 -12
- package/dist/val/ScalarKindVal.js.map +1 -1
- package/dist/val/SuperFuncVal.d.ts +4 -2
- package/dist/val/SuperFuncVal.js +118 -14
- package/dist/val/SuperFuncVal.js.map +1 -1
- package/dist/val/TopVal.d.ts +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 +7 -1
- package/dist/val/Val.js +170 -2
- 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 +173 -0
- package/dist/val/arith.js.map +1 -0
- package/dist/vet.d.ts +45 -0
- package/dist/vet.js +802 -0
- package/dist/vet.js.map +1 -0
- package/dist/view.d.ts +85 -0
- package/dist/view.js +1948 -0
- package/dist/view.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 +138 -0
- package/grammar/aontu.lark +118 -0
- package/grammar/aontu.tmLanguage.json +184 -0
- package/package.json +30 -8
- package/skill/SKILL.md +37 -0
- package/skill/error-codes.md +62 -0
- package/skill/examples.md +99 -0
- package/skill/grammar-card.md +56 -0
- package/src/agentsmd.ts +135 -0
- package/src/aontu.ts +166 -5
- package/src/cli.ts +3324 -72
- package/src/ctx.ts +93 -1
- package/src/diff.ts +198 -0
- package/src/err.ts +50 -8
- package/src/graph.ts +185 -0
- package/src/hcanon.ts +167 -0
- package/src/hints.ts +291 -8
- package/src/jsonschema.ts +552 -0
- package/src/lang.ts +1049 -110
- package/src/lsp.ts +351 -49
- package/src/mcp-server.ts +187 -0
- package/src/mcp.ts +1130 -0
- package/src/mod-tool.ts +718 -0
- package/src/mod.ts +453 -0
- package/src/patch.ts +628 -0
- package/src/provenance.ts +437 -0
- package/src/query.ts +381 -0
- package/src/reach.ts +213 -0
- package/src/relation.ts +298 -0
- package/src/report-sarif.ts +137 -0
- package/src/sig.ts +345 -0
- package/src/sigdecl.ts +11 -0
- package/src/siggate.ts +144 -0
- package/src/site.ts +36 -1
- package/src/std.ts +131 -0
- package/src/subsume.ts +739 -0
- package/src/trim.ts +195 -0
- package/src/tsconfig.json +10 -4
- package/src/type.ts +51 -2
- package/src/unify.ts +253 -38
- package/src/utility.ts +79 -1
- package/src/val/AggFuncVal.ts +546 -0
- package/src/val/ArithFuncVal.ts +108 -0
- package/src/val/BagVal.ts +158 -12
- package/src/val/CloseFuncVal.ts +9 -1
- package/src/val/ConjunctVal.ts +20 -0
- package/src/val/ConstraintVal.ts +576 -48
- package/src/val/ContainerKindVal.ts +158 -0
- package/src/val/CopyFuncVal.ts +0 -1
- package/src/val/Decimal.ts +15 -0
- package/src/val/DeprecateFuncVal.ts +84 -0
- package/src/val/DisjunctVal.ts +282 -59
- package/src/val/EachFuncVal.ts +133 -0
- package/src/val/ExpectVal.ts +65 -8
- package/src/val/FeatureVal.ts +1 -1
- package/src/val/FilterFuncVal.ts +154 -0
- package/src/val/FuncBaseVal.ts +206 -2
- package/src/val/GraphAtomVal.ts +264 -0
- package/src/val/HideFuncVal.ts +0 -2
- package/src/val/JunctionVal.ts +24 -1
- package/src/val/KeyFuncVal.ts +39 -35
- package/src/val/ListVal.ts +101 -15
- package/src/val/LowerFuncVal.ts +0 -1
- package/src/val/MapVal.ts +153 -14
- 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 +20 -1
- package/src/val/OpenFuncVal.ts +4 -2
- package/src/val/PackFuncVal.ts +175 -0
- package/src/val/PathFuncVal.ts +107 -20
- package/src/val/PathVal.ts +221 -0
- package/src/val/PlaceVal.ts +193 -0
- package/src/val/PlusOpVal.ts +67 -39
- package/src/val/PrefFuncVal.ts +0 -1
- package/src/val/PrefVal.ts +251 -60
- package/src/val/RecurseVal.ts +285 -0
- package/src/val/RefVal.ts +183 -78
- package/src/val/ReferFuncVal.ts +732 -0
- package/src/val/ScalarKindVal.ts +12 -13
- package/src/val/SuperFuncVal.ts +137 -13
- package/src/val/TopVal.ts +1 -2
- package/src/val/TypeFuncVal.ts +0 -2
- package/src/val/UpperFuncVal.ts +0 -1
- package/src/val/Val.ts +216 -4
- package/src/val/VarVal.ts +0 -1
- package/src/val/arith.ts +319 -0
- package/src/vet.ts +1025 -0
- package/src/view.ts +2563 -0
- package/src/walk.ts +99 -0
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/* Copyright (c) 2025 Richard Rodger, MIT License */
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.arith = arith;
|
|
5
|
+
const err_1 = require("../err");
|
|
6
|
+
const IntegerVal_1 = require("./IntegerVal");
|
|
7
|
+
const NumberVal_1 = require("./NumberVal");
|
|
8
|
+
const BigIntegerVal_1 = require("./BigIntegerVal");
|
|
9
|
+
const BigDecimalVal_1 = require("./BigDecimalVal");
|
|
10
|
+
const Decimal_1 = require("./Decimal");
|
|
11
|
+
const numkind_1 = require("./numkind");
|
|
12
|
+
// The three that divide, and therefore the three that can be handed a
|
|
13
|
+
// zero divisor and cannot answer over the decimal leaf.
|
|
14
|
+
function divides(op) {
|
|
15
|
+
return 'div' === op || 'mod' === op || 'rem' === op;
|
|
16
|
+
}
|
|
17
|
+
const EXACT_RANK = {
|
|
18
|
+
integer: 1,
|
|
19
|
+
biginteger: 2,
|
|
20
|
+
bigdecimal: 3,
|
|
21
|
+
};
|
|
22
|
+
function isBig(k) {
|
|
23
|
+
return 'biginteger' === k || 'bigdecimal' === k;
|
|
24
|
+
}
|
|
25
|
+
// A pref operand contributes its preferred value, and therefore that
|
|
26
|
+
// value's kind too -- the same rule `+` applies.
|
|
27
|
+
function unpref(v) {
|
|
28
|
+
while (v?.isPref) {
|
|
29
|
+
v = v.peg;
|
|
30
|
+
}
|
|
31
|
+
return v;
|
|
32
|
+
}
|
|
33
|
+
function arithKind(v) {
|
|
34
|
+
// Every caller hands a driven Val (an operand past the signature
|
|
35
|
+
// gate, or a bag member from the aggregate fold), so scalarhood is
|
|
36
|
+
// the one question -- a container member lands here.
|
|
37
|
+
if (true !== v?.isScalar) {
|
|
38
|
+
return undefined;
|
|
39
|
+
}
|
|
40
|
+
if (v.isBigInteger) {
|
|
41
|
+
return 'biginteger';
|
|
42
|
+
}
|
|
43
|
+
if (v.isBigDecimal) {
|
|
44
|
+
return 'bigdecimal';
|
|
45
|
+
}
|
|
46
|
+
if (v.isInteger) {
|
|
47
|
+
return 'integer';
|
|
48
|
+
}
|
|
49
|
+
return 'number' === typeof v.peg ? 'float' : undefined;
|
|
50
|
+
}
|
|
51
|
+
// An exact-ladder operand as an exact integer. Only reached for the two
|
|
52
|
+
// integral leaves; an `integer` peg is integral by construction.
|
|
53
|
+
function asInteger(v, k) {
|
|
54
|
+
return 'biginteger' === k ? v.peg : BigInt(v.peg);
|
|
55
|
+
}
|
|
56
|
+
function asDecimal(v, k) {
|
|
57
|
+
return 'bigdecimal' === k ? v.peg : new Decimal_1.Decimal(asInteger(v, k), 0);
|
|
58
|
+
}
|
|
59
|
+
// The whole family, in one function, because every rule above is a rule
|
|
60
|
+
// about ARITHMETIC and not about any one operation. `node` is the value
|
|
61
|
+
// the error is located at -- the call, or the `+` op.
|
|
62
|
+
// `attempt` is the name the ERROR reports, which is the operation
|
|
63
|
+
// except when a fold borrows one: `sum` adds, but a bad member is the
|
|
64
|
+
// author's `sum` call and must say so.
|
|
65
|
+
function arith(ctx, op, node, a, b, attempt) {
|
|
66
|
+
const name = attempt ?? op;
|
|
67
|
+
const av = unpref(a);
|
|
68
|
+
const bv = unpref(b);
|
|
69
|
+
const ak = arithKind(av);
|
|
70
|
+
const bk = arithKind(bv);
|
|
71
|
+
// A non-numeric operand is not something to wait for: `resolve` is
|
|
72
|
+
// only reached once every argument has settled, so a kind, a map, a
|
|
73
|
+
// string or a boolean here is the author's mistake and is named as
|
|
74
|
+
// one. (`+` differs, and must: it has answers for strings and
|
|
75
|
+
// booleans.)
|
|
76
|
+
if (undefined === ak || undefined === bk) {
|
|
77
|
+
return (0, err_1.makeNilErr)(ctx, 'invalid-arg', node, undefined, name);
|
|
78
|
+
}
|
|
79
|
+
// A big leaf never silently becomes a binary float, in EITHER operand
|
|
80
|
+
// order. The error names both leaves in operand order.
|
|
81
|
+
if (('float' === ak && isBig(bk)) || (isBig(ak) && 'float' === bk)) {
|
|
82
|
+
return (0, err_1.makeNilErr)(ctx, 'exact_float_mix', node, undefined, name, { left: ak, right: bk });
|
|
83
|
+
}
|
|
84
|
+
if ('float' === ak || 'float' === bk) {
|
|
85
|
+
return floatArith(ctx, op, name, node, av.peg, bv.peg);
|
|
86
|
+
}
|
|
87
|
+
const rank = EXACT_RANK[bk] < EXACT_RANK[ak] ? EXACT_RANK[ak] : EXACT_RANK[bk];
|
|
88
|
+
if (EXACT_RANK.bigdecimal === rank) {
|
|
89
|
+
return decimalArith(ctx, op, name, node, asDecimal(av, ak), asDecimal(bv, bk));
|
|
90
|
+
}
|
|
91
|
+
return integerArith(ctx, op, name, node, asInteger(av, ak), asInteger(bv, bk), EXACT_RANK.biginteger === rank);
|
|
92
|
+
}
|
|
93
|
+
// IEEE-754 binary64, with the JSON-superset constraint still biting: an
|
|
94
|
+
// infinite or NaN result is a located error rather than a value, because
|
|
95
|
+
// there is no way to write one down and no JSON that could carry it.
|
|
96
|
+
function floatArith(ctx, op, name, node, x, y) {
|
|
97
|
+
if (divides(op) && 0 === y) {
|
|
98
|
+
return (0, err_1.makeNilErr)(ctx, 'divide_by_zero', node, undefined, name);
|
|
99
|
+
}
|
|
100
|
+
const out = 'add' === op ? x + y :
|
|
101
|
+
'sub' === op ? x - y :
|
|
102
|
+
'mul' === op ? x * y :
|
|
103
|
+
'div' === op ? x / y :
|
|
104
|
+
// Truncated remainder, sign following the DIVIDEND, which is
|
|
105
|
+
// what JavaScript's `%` and Go's math.Mod both give...
|
|
106
|
+
'rem' === op ? x % y :
|
|
107
|
+
// ...and the floored modulus, sign following the DIVISOR,
|
|
108
|
+
// built from it. Adding the divisor back moves a remainder
|
|
109
|
+
// whose sign disagrees into agreement, and leaves an exact
|
|
110
|
+
// zero alone.
|
|
111
|
+
flooredMod(x % y, y);
|
|
112
|
+
return Number.isFinite(out) ?
|
|
113
|
+
new NumberVal_1.NumberVal({ peg: out }) :
|
|
114
|
+
(0, err_1.makeNilErr)(ctx, 'float_overflow', node, undefined, name);
|
|
115
|
+
}
|
|
116
|
+
function flooredMod(rem, y) {
|
|
117
|
+
return 0 !== rem && (rem < 0) !== (y < 0) ? rem + y : rem;
|
|
118
|
+
}
|
|
119
|
+
// The exact integral leaves. Both compute in bigint, so nothing passes
|
|
120
|
+
// through binary64 and nothing rounds; only the storage test at the end
|
|
121
|
+
// differs, because `biginteger` is unbounded and `integer` is not.
|
|
122
|
+
function integerArith(ctx, op, name, node, x, y, big) {
|
|
123
|
+
if (divides(op) && 0n === y) {
|
|
124
|
+
return (0, err_1.makeNilErr)(ctx, 'divide_by_zero', node, undefined, name);
|
|
125
|
+
}
|
|
126
|
+
const out = 'add' === op ? x + y :
|
|
127
|
+
'sub' === op ? x - y :
|
|
128
|
+
'mul' === op ? x * y :
|
|
129
|
+
// TRUNCATION TOWARD ZERO, stated once here rather than left to
|
|
130
|
+
// whichever host `/` each port happens to call: div(-7, 2) is
|
|
131
|
+
// -3, not -4. BigInt division truncates, and so does Go's
|
|
132
|
+
// big.Int.Quo (its Div floors, which is why the Go twin must
|
|
133
|
+
// not use it).
|
|
134
|
+
'div' === op ? x / y :
|
|
135
|
+
'rem' === op ? x % y :
|
|
136
|
+
flooredModBig(x % y, y);
|
|
137
|
+
if (big) {
|
|
138
|
+
// Unbounded and exact: nothing to check, and no demotion to
|
|
139
|
+
// `integer` however small the result.
|
|
140
|
+
return new BigIntegerVal_1.BigIntegerVal({ peg: out });
|
|
141
|
+
}
|
|
142
|
+
// The result faces the SAME storage contract R1 puts on a literal --
|
|
143
|
+
// integral, inside the int64 window, and exactly representable in
|
|
144
|
+
// binary64 -- because Go's int64 holds results TypeScript's double
|
|
145
|
+
// cannot, and without a shared test a document would resolve in one
|
|
146
|
+
// port and round in the other.
|
|
147
|
+
return (0, numkind_1.isIntegerStorable)(out) ?
|
|
148
|
+
new IntegerVal_1.IntegerVal({ peg: Number(out) }) :
|
|
149
|
+
(0, err_1.makeNilErr)(ctx, 'inexact_integer_sum', node, undefined, name, { sum: out.toString() });
|
|
150
|
+
}
|
|
151
|
+
function flooredModBig(rem, y) {
|
|
152
|
+
return 0n !== rem && (rem < 0n) !== (y < 0n) ? rem + y : rem;
|
|
153
|
+
}
|
|
154
|
+
// The decimal leaf. Addition, subtraction and multiplication are exact
|
|
155
|
+
// coefficient arithmetic and land here; division does not, and says so.
|
|
156
|
+
function decimalArith(ctx, op, name, node, x, y) {
|
|
157
|
+
if (divides(op)) {
|
|
158
|
+
// EXACT DECIMAL DIVISION IS NOT CLOSED: one third has no finite
|
|
159
|
+
// decimal form, so a `div` over this leaf either rounds -- the one
|
|
160
|
+
// thing the leaf exists to refuse -- or refuses. It refuses, and the
|
|
161
|
+
// hint names both ways out.
|
|
162
|
+
return (0, err_1.makeNilErr)(ctx, 'inexact_divide', node, undefined, name);
|
|
163
|
+
}
|
|
164
|
+
const out = 'add' === op ? x.add(y) :
|
|
165
|
+
'sub' === op ? x.add(y.negate()) :
|
|
166
|
+
x.multiply(y);
|
|
167
|
+
// The budget applies to RESULTS as well as literals: an exact answer
|
|
168
|
+
// too wide to hold is refused, never rounded to fit.
|
|
169
|
+
return (0, Decimal_1.decimalOverBudget)(out) ?
|
|
170
|
+
(0, err_1.makeNilErr)(ctx, 'decimal_budget', node, undefined, name) :
|
|
171
|
+
new BigDecimalVal_1.BigDecimalVal({ peg: out });
|
|
172
|
+
} /* node:coverage ignore next 9 */
|
|
173
|
+
//# sourceMappingURL=arith.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arith.js","sourceRoot":"","sources":["../../src/val/arith.ts"],"names":[],"mappings":"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"}
|
package/dist/vet.d.ts
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { TrustOptions, Val } from './type';
|
|
2
|
+
export type VetVerdict = 'valid' | 'invalid' | 'incomplete' | 'error';
|
|
3
|
+
export type VetRole = 'data' | 'schema';
|
|
4
|
+
export type VetSite = {
|
|
5
|
+
file: string;
|
|
6
|
+
row: number;
|
|
7
|
+
col: number;
|
|
8
|
+
len: number;
|
|
9
|
+
role: VetRole;
|
|
10
|
+
src?: string;
|
|
11
|
+
value?: string;
|
|
12
|
+
};
|
|
13
|
+
export type VetFinding = {
|
|
14
|
+
code: string;
|
|
15
|
+
class: string;
|
|
16
|
+
severity: 'error' | 'warning' | 'info';
|
|
17
|
+
path: string;
|
|
18
|
+
message: string;
|
|
19
|
+
hint?: string;
|
|
20
|
+
sites: VetSite[];
|
|
21
|
+
expected?: string;
|
|
22
|
+
actual?: string;
|
|
23
|
+
note?: string;
|
|
24
|
+
};
|
|
25
|
+
export type VetReport = {
|
|
26
|
+
verdict: VetVerdict;
|
|
27
|
+
truncated: boolean;
|
|
28
|
+
findings: VetFinding[];
|
|
29
|
+
};
|
|
30
|
+
export type VetOptions = {
|
|
31
|
+
at?: string;
|
|
32
|
+
closed?: boolean;
|
|
33
|
+
partial?: boolean;
|
|
34
|
+
maxErrors?: number;
|
|
35
|
+
schemaUrl?: string;
|
|
36
|
+
dataUrl?: string;
|
|
37
|
+
schemaPath?: string;
|
|
38
|
+
dataPath?: string;
|
|
39
|
+
trust?: TrustOptions;
|
|
40
|
+
};
|
|
41
|
+
export declare const VET_MAX_ERRORS = 20;
|
|
42
|
+
export declare function displayFile(url: string, label: string, path?: string): string;
|
|
43
|
+
export declare function failureFinding(ctx: any, url?: string, failed?: any): VetFinding;
|
|
44
|
+
export declare function anchorAt(root: any, at: string): Val | undefined;
|
|
45
|
+
export declare function vet(schemaSrc: string, dataSrc: string, opts?: VetOptions): VetReport;
|