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.
Files changed (310) hide show
  1. package/README.md +88 -0
  2. package/bin/aontu-mcp.js +4 -0
  3. package/dist/agentsmd.d.ts +16 -0
  4. package/dist/agentsmd.js +107 -0
  5. package/dist/agentsmd.js.map +1 -0
  6. package/dist/aontu.d.ts +15 -3
  7. package/dist/aontu.js +126 -5
  8. package/dist/aontu.js.map +1 -1
  9. package/dist/cli.d.ts +45 -1
  10. package/dist/cli.js +2845 -69
  11. package/dist/cli.js.map +1 -1
  12. package/dist/ctx.d.ts +18 -0
  13. package/dist/ctx.js +44 -0
  14. package/dist/ctx.js.map +1 -1
  15. package/dist/diff.d.ts +22 -0
  16. package/dist/diff.js +141 -0
  17. package/dist/diff.js.map +1 -0
  18. package/dist/err.d.ts +3 -1
  19. package/dist/err.js +45 -8
  20. package/dist/err.js.map +1 -1
  21. package/dist/graph.d.ts +13 -0
  22. package/dist/graph.js +110 -0
  23. package/dist/graph.js.map +1 -0
  24. package/dist/hcanon.d.ts +3 -0
  25. package/dist/hcanon.js +145 -0
  26. package/dist/hcanon.js.map +1 -0
  27. package/dist/hints.js +235 -8
  28. package/dist/hints.js.map +1 -1
  29. package/dist/jsonschema.d.ts +20 -0
  30. package/dist/jsonschema.js +425 -0
  31. package/dist/jsonschema.js.map +1 -0
  32. package/dist/lang.js +955 -110
  33. package/dist/lang.js.map +1 -1
  34. package/dist/lsp.d.ts +9 -2
  35. package/dist/lsp.js +343 -48
  36. package/dist/lsp.js.map +1 -1
  37. package/dist/mcp-server.d.ts +20 -0
  38. package/dist/mcp-server.js +147 -0
  39. package/dist/mcp-server.js.map +1 -0
  40. package/dist/mcp.d.ts +42 -0
  41. package/dist/mcp.js +941 -0
  42. package/dist/mcp.js.map +1 -0
  43. package/dist/mod-tool.d.ts +58 -0
  44. package/dist/mod-tool.js +532 -0
  45. package/dist/mod-tool.js.map +1 -0
  46. package/dist/mod.d.ts +35 -0
  47. package/dist/mod.js +345 -0
  48. package/dist/mod.js.map +1 -0
  49. package/dist/patch.d.ts +49 -0
  50. package/dist/patch.js +506 -0
  51. package/dist/patch.js.map +1 -0
  52. package/dist/provenance.d.ts +41 -0
  53. package/dist/provenance.js +336 -0
  54. package/dist/provenance.js.map +1 -0
  55. package/dist/query.d.ts +27 -0
  56. package/dist/query.js +294 -0
  57. package/dist/query.js.map +1 -0
  58. package/dist/reach.d.ts +15 -0
  59. package/dist/reach.js +168 -0
  60. package/dist/reach.js.map +1 -0
  61. package/dist/relation.d.ts +23 -0
  62. package/dist/relation.js +230 -0
  63. package/dist/relation.js.map +1 -0
  64. package/dist/report-sarif.d.ts +14 -0
  65. package/dist/report-sarif.js +102 -0
  66. package/dist/report-sarif.js.map +1 -0
  67. package/dist/sig.d.ts +25 -0
  68. package/dist/sig.js +277 -0
  69. package/dist/sig.js.map +1 -0
  70. package/dist/sigdecl.d.ts +2 -0
  71. package/dist/sigdecl.js +11 -0
  72. package/dist/sigdecl.js.map +1 -0
  73. package/dist/siggate.d.ts +4 -0
  74. package/dist/siggate.js +90 -0
  75. package/dist/siggate.js.map +1 -0
  76. package/dist/site.d.ts +4 -0
  77. package/dist/site.js +31 -0
  78. package/dist/site.js.map +1 -1
  79. package/dist/std.d.ts +1 -0
  80. package/dist/std.js +129 -0
  81. package/dist/std.js.map +1 -0
  82. package/dist/subsume.d.ts +39 -0
  83. package/dist/subsume.js +573 -0
  84. package/dist/subsume.js.map +1 -0
  85. package/dist/trim.d.ts +19 -0
  86. package/dist/trim.js +155 -0
  87. package/dist/trim.js.map +1 -0
  88. package/dist/tsconfig.tsbuildinfo +1 -1
  89. package/dist/type.d.ts +17 -1
  90. package/dist/type.js.map +1 -1
  91. package/dist/unify.d.ts +2 -1
  92. package/dist/unify.js +234 -38
  93. package/dist/unify.js.map +1 -1
  94. package/dist/utility.d.ts +8 -1
  95. package/dist/utility.js +68 -1
  96. package/dist/utility.js.map +1 -1
  97. package/dist/val/AggFuncVal.d.ts +44 -0
  98. package/dist/val/AggFuncVal.js +364 -0
  99. package/dist/val/AggFuncVal.js.map +1 -0
  100. package/dist/val/ArithFuncVal.d.ts +31 -0
  101. package/dist/val/ArithFuncVal.js +62 -0
  102. package/dist/val/ArithFuncVal.js.map +1 -0
  103. package/dist/val/BagVal.d.ts +7 -0
  104. package/dist/val/BagVal.js +150 -11
  105. package/dist/val/BagVal.js.map +1 -1
  106. package/dist/val/CloseFuncVal.js +9 -1
  107. package/dist/val/CloseFuncVal.js.map +1 -1
  108. package/dist/val/ConjunctVal.d.ts +1 -1
  109. package/dist/val/ConjunctVal.js +19 -0
  110. package/dist/val/ConjunctVal.js.map +1 -1
  111. package/dist/val/ConstraintVal.d.ts +7 -1
  112. package/dist/val/ConstraintVal.js +523 -45
  113. package/dist/val/ConstraintVal.js.map +1 -1
  114. package/dist/val/ContainerKindVal.d.ts +35 -0
  115. package/dist/val/ContainerKindVal.js +99 -0
  116. package/dist/val/ContainerKindVal.js.map +1 -0
  117. package/dist/val/CopyFuncVal.d.ts +1 -2
  118. package/dist/val/CopyFuncVal.js.map +1 -1
  119. package/dist/val/Decimal.d.ts +1 -0
  120. package/dist/val/Decimal.js +13 -0
  121. package/dist/val/Decimal.js.map +1 -1
  122. package/dist/val/DeprecateFuncVal.d.ts +11 -0
  123. package/dist/val/DeprecateFuncVal.js +47 -0
  124. package/dist/val/DeprecateFuncVal.js.map +1 -0
  125. package/dist/val/DisjunctVal.d.ts +1 -2
  126. package/dist/val/DisjunctVal.js +269 -53
  127. package/dist/val/DisjunctVal.js.map +1 -1
  128. package/dist/val/EachFuncVal.d.ts +15 -0
  129. package/dist/val/EachFuncVal.js +75 -0
  130. package/dist/val/EachFuncVal.js.map +1 -0
  131. package/dist/val/ExpectVal.js +62 -4
  132. package/dist/val/ExpectVal.js.map +1 -1
  133. package/dist/val/FeatureVal.js +1 -1
  134. package/dist/val/FeatureVal.js.map +1 -1
  135. package/dist/val/FilterFuncVal.d.ts +15 -0
  136. package/dist/val/FilterFuncVal.js +91 -0
  137. package/dist/val/FilterFuncVal.js.map +1 -0
  138. package/dist/val/FuncBaseVal.d.ts +7 -1
  139. package/dist/val/FuncBaseVal.js +183 -2
  140. package/dist/val/FuncBaseVal.js.map +1 -1
  141. package/dist/val/GraphAtomVal.d.ts +39 -0
  142. package/dist/val/GraphAtomVal.js +184 -0
  143. package/dist/val/GraphAtomVal.js.map +1 -0
  144. package/dist/val/HideFuncVal.js.map +1 -1
  145. package/dist/val/JunctionVal.js +24 -1
  146. package/dist/val/JunctionVal.js.map +1 -1
  147. package/dist/val/KeyFuncVal.d.ts +1 -1
  148. package/dist/val/KeyFuncVal.js +38 -30
  149. package/dist/val/KeyFuncVal.js.map +1 -1
  150. package/dist/val/ListVal.js +94 -14
  151. package/dist/val/ListVal.js.map +1 -1
  152. package/dist/val/LowerFuncVal.js.map +1 -1
  153. package/dist/val/MapVal.d.ts +1 -0
  154. package/dist/val/MapVal.js +146 -14
  155. package/dist/val/MapVal.js.map +1 -1
  156. package/dist/val/MatchFuncVal.d.ts +15 -0
  157. package/dist/val/MatchFuncVal.js +107 -0
  158. package/dist/val/MatchFuncVal.js.map +1 -0
  159. package/dist/val/MoveFuncVal.js.map +1 -1
  160. package/dist/val/NilVal.js +24 -0
  161. package/dist/val/NilVal.js.map +1 -1
  162. package/dist/val/OpBaseVal.d.ts +1 -1
  163. package/dist/val/OpBaseVal.js +19 -1
  164. package/dist/val/OpBaseVal.js.map +1 -1
  165. package/dist/val/OpenFuncVal.js +4 -1
  166. package/dist/val/OpenFuncVal.js.map +1 -1
  167. package/dist/val/PackFuncVal.d.ts +15 -0
  168. package/dist/val/PackFuncVal.js +108 -0
  169. package/dist/val/PackFuncVal.js.map +1 -0
  170. package/dist/val/PathFuncVal.d.ts +2 -2
  171. package/dist/val/PathFuncVal.js +75 -16
  172. package/dist/val/PathFuncVal.js.map +1 -1
  173. package/dist/val/PathVal.d.ts +25 -0
  174. package/dist/val/PathVal.js +150 -0
  175. package/dist/val/PathVal.js.map +1 -0
  176. package/dist/val/PlaceVal.d.ts +13 -0
  177. package/dist/val/PlaceVal.js +131 -0
  178. package/dist/val/PlaceVal.js.map +1 -0
  179. package/dist/val/PlusOpVal.d.ts +2 -1
  180. package/dist/val/PlusOpVal.js +61 -37
  181. package/dist/val/PlusOpVal.js.map +1 -1
  182. package/dist/val/PrefFuncVal.js.map +1 -1
  183. package/dist/val/PrefVal.d.ts +4 -2
  184. package/dist/val/PrefVal.js +223 -41
  185. package/dist/val/PrefVal.js.map +1 -1
  186. package/dist/val/RecurseVal.d.ts +19 -0
  187. package/dist/val/RecurseVal.js +217 -0
  188. package/dist/val/RecurseVal.js.map +1 -0
  189. package/dist/val/RefVal.d.ts +3 -2
  190. package/dist/val/RefVal.js +181 -66
  191. package/dist/val/RefVal.js.map +1 -1
  192. package/dist/val/ReferFuncVal.d.ts +59 -0
  193. package/dist/val/ReferFuncVal.js +604 -0
  194. package/dist/val/ReferFuncVal.js.map +1 -0
  195. package/dist/val/ScalarKindVal.d.ts +4 -3
  196. package/dist/val/ScalarKindVal.js +12 -12
  197. package/dist/val/ScalarKindVal.js.map +1 -1
  198. package/dist/val/SuperFuncVal.d.ts +4 -2
  199. package/dist/val/SuperFuncVal.js +118 -14
  200. package/dist/val/SuperFuncVal.js.map +1 -1
  201. package/dist/val/TopVal.d.ts +1 -1
  202. package/dist/val/TopVal.js.map +1 -1
  203. package/dist/val/TypeFuncVal.js.map +1 -1
  204. package/dist/val/UpperFuncVal.js.map +1 -1
  205. package/dist/val/Val.d.ts +7 -1
  206. package/dist/val/Val.js +170 -2
  207. package/dist/val/Val.js.map +1 -1
  208. package/dist/val/VarVal.js.map +1 -1
  209. package/dist/val/arith.d.ts +6 -0
  210. package/dist/val/arith.js +173 -0
  211. package/dist/val/arith.js.map +1 -0
  212. package/dist/vet.d.ts +45 -0
  213. package/dist/vet.js +802 -0
  214. package/dist/vet.js.map +1 -0
  215. package/dist/view.d.ts +85 -0
  216. package/dist/view.js +1948 -0
  217. package/dist/view.js.map +1 -0
  218. package/dist/walk.d.ts +2 -0
  219. package/dist/walk.js +91 -0
  220. package/dist/walk.js.map +1 -0
  221. package/grammar/aontu.gbnf +138 -0
  222. package/grammar/aontu.lark +118 -0
  223. package/grammar/aontu.tmLanguage.json +184 -0
  224. package/package.json +30 -8
  225. package/skill/SKILL.md +37 -0
  226. package/skill/error-codes.md +62 -0
  227. package/skill/examples.md +99 -0
  228. package/skill/grammar-card.md +56 -0
  229. package/src/agentsmd.ts +135 -0
  230. package/src/aontu.ts +166 -5
  231. package/src/cli.ts +3324 -72
  232. package/src/ctx.ts +93 -1
  233. package/src/diff.ts +198 -0
  234. package/src/err.ts +50 -8
  235. package/src/graph.ts +185 -0
  236. package/src/hcanon.ts +167 -0
  237. package/src/hints.ts +291 -8
  238. package/src/jsonschema.ts +552 -0
  239. package/src/lang.ts +1049 -110
  240. package/src/lsp.ts +351 -49
  241. package/src/mcp-server.ts +187 -0
  242. package/src/mcp.ts +1130 -0
  243. package/src/mod-tool.ts +718 -0
  244. package/src/mod.ts +453 -0
  245. package/src/patch.ts +628 -0
  246. package/src/provenance.ts +437 -0
  247. package/src/query.ts +381 -0
  248. package/src/reach.ts +213 -0
  249. package/src/relation.ts +298 -0
  250. package/src/report-sarif.ts +137 -0
  251. package/src/sig.ts +345 -0
  252. package/src/sigdecl.ts +11 -0
  253. package/src/siggate.ts +144 -0
  254. package/src/site.ts +36 -1
  255. package/src/std.ts +131 -0
  256. package/src/subsume.ts +739 -0
  257. package/src/trim.ts +195 -0
  258. package/src/tsconfig.json +10 -4
  259. package/src/type.ts +51 -2
  260. package/src/unify.ts +253 -38
  261. package/src/utility.ts +79 -1
  262. package/src/val/AggFuncVal.ts +546 -0
  263. package/src/val/ArithFuncVal.ts +108 -0
  264. package/src/val/BagVal.ts +158 -12
  265. package/src/val/CloseFuncVal.ts +9 -1
  266. package/src/val/ConjunctVal.ts +20 -0
  267. package/src/val/ConstraintVal.ts +576 -48
  268. package/src/val/ContainerKindVal.ts +158 -0
  269. package/src/val/CopyFuncVal.ts +0 -1
  270. package/src/val/Decimal.ts +15 -0
  271. package/src/val/DeprecateFuncVal.ts +84 -0
  272. package/src/val/DisjunctVal.ts +282 -59
  273. package/src/val/EachFuncVal.ts +133 -0
  274. package/src/val/ExpectVal.ts +65 -8
  275. package/src/val/FeatureVal.ts +1 -1
  276. package/src/val/FilterFuncVal.ts +154 -0
  277. package/src/val/FuncBaseVal.ts +206 -2
  278. package/src/val/GraphAtomVal.ts +264 -0
  279. package/src/val/HideFuncVal.ts +0 -2
  280. package/src/val/JunctionVal.ts +24 -1
  281. package/src/val/KeyFuncVal.ts +39 -35
  282. package/src/val/ListVal.ts +101 -15
  283. package/src/val/LowerFuncVal.ts +0 -1
  284. package/src/val/MapVal.ts +153 -14
  285. package/src/val/MatchFuncVal.ts +176 -0
  286. package/src/val/MoveFuncVal.ts +0 -2
  287. package/src/val/NilVal.ts +25 -0
  288. package/src/val/OpBaseVal.ts +20 -1
  289. package/src/val/OpenFuncVal.ts +4 -2
  290. package/src/val/PackFuncVal.ts +175 -0
  291. package/src/val/PathFuncVal.ts +107 -20
  292. package/src/val/PathVal.ts +221 -0
  293. package/src/val/PlaceVal.ts +193 -0
  294. package/src/val/PlusOpVal.ts +67 -39
  295. package/src/val/PrefFuncVal.ts +0 -1
  296. package/src/val/PrefVal.ts +251 -60
  297. package/src/val/RecurseVal.ts +285 -0
  298. package/src/val/RefVal.ts +183 -78
  299. package/src/val/ReferFuncVal.ts +732 -0
  300. package/src/val/ScalarKindVal.ts +12 -13
  301. package/src/val/SuperFuncVal.ts +137 -13
  302. package/src/val/TopVal.ts +1 -2
  303. package/src/val/TypeFuncVal.ts +0 -2
  304. package/src/val/UpperFuncVal.ts +0 -1
  305. package/src/val/Val.ts +216 -4
  306. package/src/val/VarVal.ts +0 -1
  307. package/src/val/arith.ts +319 -0
  308. package/src/vet.ts +1025 -0
  309. package/src/view.ts +2563 -0
  310. 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;