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.
Files changed (371) hide show
  1. package/README.md +4 -4
  2. package/dist/agentsmd.d.ts +1 -0
  3. package/dist/agentsmd.js +7 -28
  4. package/dist/agentsmd.js.map +1 -1
  5. package/dist/alias.js.map +1 -1
  6. package/dist/allow.d.ts +23 -0
  7. package/dist/allow.js +138 -0
  8. package/dist/allow.js.map +1 -0
  9. package/dist/aontu.d.ts +4 -2
  10. package/dist/aontu.js +4 -80
  11. package/dist/aontu.js.map +1 -1
  12. package/dist/aontumodel.d.ts +4 -0
  13. package/dist/aontumodel.js +33 -0
  14. package/dist/aontumodel.js.map +1 -0
  15. package/dist/cli.d.ts +10 -1
  16. package/dist/cli.js +877 -479
  17. package/dist/cli.js.map +1 -1
  18. package/dist/ctx.js +0 -48
  19. package/dist/ctx.js.map +1 -1
  20. package/dist/diff.js +0 -32
  21. package/dist/diff.js.map +1 -1
  22. package/dist/err.js +0 -40
  23. package/dist/err.js.map +1 -1
  24. package/dist/escape.js +0 -45
  25. package/dist/escape.js.map +1 -1
  26. package/dist/exactjson.d.ts +0 -35
  27. package/dist/exactjson.js +0 -131
  28. package/dist/exactjson.js.map +1 -1
  29. package/dist/format.js +55 -189
  30. package/dist/format.js.map +1 -1
  31. package/dist/grammar.d.ts +9 -0
  32. package/dist/grammar.js +54 -0
  33. package/dist/grammar.js.map +1 -0
  34. package/dist/graph.js +0 -26
  35. package/dist/graph.js.map +1 -1
  36. package/dist/hcanon.js +0 -82
  37. package/dist/hcanon.js.map +1 -1
  38. package/dist/helpdoc.d.ts +16 -0
  39. package/dist/helpdoc.js +59 -0
  40. package/dist/helpdoc.js.map +1 -0
  41. package/dist/hints.d.ts +0 -6
  42. package/dist/hints.js +59 -47
  43. package/dist/hints.js.map +1 -1
  44. package/dist/jsonschema.js +0 -114
  45. package/dist/jsonschema.js.map +1 -1
  46. package/dist/keyorder.d.ts +0 -7
  47. package/dist/keyorder.js +0 -41
  48. package/dist/keyorder.js.map +1 -1
  49. package/dist/lang.js +32 -877
  50. package/dist/lang.js.map +1 -1
  51. package/dist/lower.d.ts +3 -0
  52. package/dist/lower.js +14 -61
  53. package/dist/lower.js.map +1 -1
  54. package/dist/lsp-server.js +0 -16
  55. package/dist/lsp-server.js.map +1 -1
  56. package/dist/lsp.d.ts +1 -1
  57. package/dist/lsp.js +12 -159
  58. package/dist/lsp.js.map +1 -1
  59. package/dist/mcp-server.js +0 -26
  60. package/dist/mcp-server.js.map +1 -1
  61. package/dist/mcp.js +0 -113
  62. package/dist/mcp.js.map +1 -1
  63. package/dist/mod-tool.js +0 -130
  64. package/dist/mod-tool.js.map +1 -1
  65. package/dist/mod.js +0 -162
  66. package/dist/mod.js.map +1 -1
  67. package/dist/patch.js +0 -217
  68. package/dist/patch.js.map +1 -1
  69. package/dist/provenance.js +0 -140
  70. package/dist/provenance.js.map +1 -1
  71. package/dist/query.js +0 -75
  72. package/dist/query.js.map +1 -1
  73. package/dist/reach.js +0 -43
  74. package/dist/reach.js.map +1 -1
  75. package/dist/relation.d.ts +2 -0
  76. package/dist/relation.js +3 -58
  77. package/dist/relation.js.map +1 -1
  78. package/dist/render.js +33 -143
  79. package/dist/render.js.map +1 -1
  80. package/dist/report-sarif.d.ts +0 -11
  81. package/dist/report-sarif.js +0 -28
  82. package/dist/report-sarif.js.map +1 -1
  83. package/dist/sig.js +0 -35
  84. package/dist/sig.js.map +1 -1
  85. package/dist/sigdecl.js +1 -1
  86. package/dist/sigdecl.js.map +1 -1
  87. package/dist/siggate.js +0 -4
  88. package/dist/siggate.js.map +1 -1
  89. package/dist/site.js +3 -29
  90. package/dist/site.js.map +1 -1
  91. package/dist/subsume.d.ts +0 -10
  92. package/dist/subsume.js +0 -137
  93. package/dist/subsume.js.map +1 -1
  94. package/dist/template.d.ts +2 -1
  95. package/dist/template.js +58 -138
  96. package/dist/template.js.map +1 -1
  97. package/dist/trim.js +0 -41
  98. package/dist/trim.js.map +1 -1
  99. package/dist/tsconfig.tsbuildinfo +1 -1
  100. package/dist/type.js.map +1 -1
  101. package/dist/unify.js +12 -242
  102. package/dist/unify.js.map +1 -1
  103. package/dist/utility.js +0 -22
  104. package/dist/utility.js.map +1 -1
  105. package/dist/val/AbnfFuncVal.d.ts +18 -0
  106. package/dist/val/AbnfFuncVal.js +132 -0
  107. package/dist/val/AbnfFuncVal.js.map +1 -0
  108. package/dist/val/AbsentVal.d.ts +11 -0
  109. package/dist/val/AbsentVal.js +30 -0
  110. package/dist/val/AbsentVal.js.map +1 -0
  111. package/dist/val/AggFuncVal.d.ts +10 -1
  112. package/dist/val/AggFuncVal.js +104 -116
  113. package/dist/val/AggFuncVal.js.map +1 -1
  114. package/dist/val/ArithFuncVal.js +0 -12
  115. package/dist/val/ArithFuncVal.js.map +1 -1
  116. package/dist/val/BagVal.js +1 -78
  117. package/dist/val/BagVal.js.map +1 -1
  118. package/dist/val/BigDecimalVal.js +0 -16
  119. package/dist/val/BigDecimalVal.js.map +1 -1
  120. package/dist/val/BigIntegerVal.js +0 -16
  121. package/dist/val/BigIntegerVal.js.map +1 -1
  122. package/dist/val/CloseFuncVal.js +0 -9
  123. package/dist/val/CloseFuncVal.js.map +1 -1
  124. package/dist/val/CmpFuncVal.d.ts +20 -0
  125. package/dist/val/CmpFuncVal.js +188 -0
  126. package/dist/val/CmpFuncVal.js.map +1 -0
  127. package/dist/val/ConjunctVal.js +0 -29
  128. package/dist/val/ConjunctVal.js.map +1 -1
  129. package/dist/val/ConstraintVal.js +0 -500
  130. package/dist/val/ConstraintVal.js.map +1 -1
  131. package/dist/val/ContainerKindVal.js +0 -2
  132. package/dist/val/ContainerKindVal.js.map +1 -1
  133. package/dist/val/CopyFuncVal.js +0 -3
  134. package/dist/val/CopyFuncVal.js.map +1 -1
  135. package/dist/val/Decimal.js +0 -179
  136. package/dist/val/Decimal.js.map +1 -1
  137. package/dist/val/DeprecateFuncVal.js.map +1 -1
  138. package/dist/val/DisjunctVal.js +0 -152
  139. package/dist/val/DisjunctVal.js.map +1 -1
  140. package/dist/val/EachFuncVal.d.ts +1 -2
  141. package/dist/val/EachFuncVal.js +12 -29
  142. package/dist/val/EachFuncVal.js.map +1 -1
  143. package/dist/val/EmitFuncVal.d.ts +1 -1
  144. package/dist/val/EmitFuncVal.js +6 -119
  145. package/dist/val/EmitFuncVal.js.map +1 -1
  146. package/dist/val/ExpectVal.js +0 -62
  147. package/dist/val/ExpectVal.js.map +1 -1
  148. package/dist/val/FilterFuncVal.js +0 -25
  149. package/dist/val/FilterFuncVal.js.map +1 -1
  150. package/dist/val/FuncBaseVal.d.ts +1 -0
  151. package/dist/val/FuncBaseVal.js +7 -127
  152. package/dist/val/FuncBaseVal.js.map +1 -1
  153. package/dist/val/GraphAtomVal.js +0 -15
  154. package/dist/val/GraphAtomVal.js.map +1 -1
  155. package/dist/val/HideFuncVal.js +0 -13
  156. package/dist/val/HideFuncVal.js.map +1 -1
  157. package/dist/val/IntegerVal.js +0 -61
  158. package/dist/val/IntegerVal.js.map +1 -1
  159. package/dist/val/JunctionVal.js +0 -20
  160. package/dist/val/JunctionVal.js.map +1 -1
  161. package/dist/val/KeyFuncVal.js +0 -46
  162. package/dist/val/KeyFuncVal.js.map +1 -1
  163. package/dist/val/ListVal.js +0 -57
  164. package/dist/val/ListVal.js.map +1 -1
  165. package/dist/val/LowerFuncVal.js +11 -6
  166. package/dist/val/LowerFuncVal.js.map +1 -1
  167. package/dist/val/MapVal.js +0 -151
  168. package/dist/val/MapVal.js.map +1 -1
  169. package/dist/val/MatchFuncVal.js +0 -27
  170. package/dist/val/MatchFuncVal.js.map +1 -1
  171. package/dist/val/{FormFuncVal.d.ts → MaybeFuncVal.d.ts} +5 -5
  172. package/dist/val/MaybeFuncVal.js +50 -0
  173. package/dist/val/MaybeFuncVal.js.map +1 -0
  174. package/dist/val/MoveFuncVal.js +0 -18
  175. package/dist/val/MoveFuncVal.js.map +1 -1
  176. package/dist/val/NilVal.js +2 -36
  177. package/dist/val/NilVal.js.map +1 -1
  178. package/dist/val/NomFuncVal.d.ts +12 -0
  179. package/dist/val/NomFuncVal.js +153 -0
  180. package/dist/val/NomFuncVal.js.map +1 -0
  181. package/dist/val/NumberVal.js +0 -15
  182. package/dist/val/NumberVal.js.map +1 -1
  183. package/dist/val/OpBaseVal.d.ts +1 -0
  184. package/dist/val/OpBaseVal.js +3 -15
  185. package/dist/val/OpBaseVal.js.map +1 -1
  186. package/dist/val/PackFuncVal.js +0 -34
  187. package/dist/val/PackFuncVal.js.map +1 -1
  188. package/dist/val/PathFuncVal.js +0 -6
  189. package/dist/val/PathFuncVal.js.map +1 -1
  190. package/dist/val/PathVal.js +0 -41
  191. package/dist/val/PathVal.js.map +1 -1
  192. package/dist/val/PlaceVal.js +0 -25
  193. package/dist/val/PlaceVal.js.map +1 -1
  194. package/dist/val/PlusOpVal.d.ts +1 -7
  195. package/dist/val/PlusOpVal.js +13 -74
  196. package/dist/val/PlusOpVal.js.map +1 -1
  197. package/dist/val/PrefFuncVal.js +0 -1
  198. package/dist/val/PrefFuncVal.js.map +1 -1
  199. package/dist/val/PrefVal.js +0 -167
  200. package/dist/val/PrefVal.js.map +1 -1
  201. package/dist/val/RecurseVal.js +0 -55
  202. package/dist/val/RecurseVal.js.map +1 -1
  203. package/dist/val/RefVal.js +0 -282
  204. package/dist/val/RefVal.js.map +1 -1
  205. package/dist/val/ReferFuncVal.js +0 -232
  206. package/dist/val/ReferFuncVal.js.map +1 -1
  207. package/dist/val/ScalarKindVal.js +0 -49
  208. package/dist/val/ScalarKindVal.js.map +1 -1
  209. package/dist/val/ScalarVal.js +0 -11
  210. package/dist/val/ScalarVal.js.map +1 -1
  211. package/dist/val/StrFuncVal.js +0 -18
  212. package/dist/val/StrFuncVal.js.map +1 -1
  213. package/dist/val/SuperFuncVal.js +0 -32
  214. package/dist/val/SuperFuncVal.js.map +1 -1
  215. package/dist/val/TopVal.js +0 -1
  216. package/dist/val/TopVal.js.map +1 -1
  217. package/dist/val/TranslateFuncVal.d.ts +12 -0
  218. package/dist/val/TranslateFuncVal.js +99 -0
  219. package/dist/val/TranslateFuncVal.js.map +1 -0
  220. package/dist/val/UpperFuncVal.js +11 -6
  221. package/dist/val/UpperFuncVal.js.map +1 -1
  222. package/dist/val/Val.d.ts +1 -0
  223. package/dist/val/Val.js +2 -133
  224. package/dist/val/Val.js.map +1 -1
  225. package/dist/val/VarVal.js +0 -12
  226. package/dist/val/VarVal.js.map +1 -1
  227. package/dist/val/arith.js +0 -37
  228. package/dist/val/arith.js.map +1 -1
  229. package/dist/val/caserange.d.ts +3 -0
  230. package/dist/val/caserange.js +49 -0
  231. package/dist/val/caserange.js.map +1 -0
  232. package/dist/val/members.js +0 -6
  233. package/dist/val/members.js.map +1 -1
  234. package/dist/val/numcmp.js +0 -11
  235. package/dist/val/numcmp.js.map +1 -1
  236. package/dist/val/numkind.js +0 -145
  237. package/dist/val/numkind.js.map +1 -1
  238. package/dist/val/valutil.js +0 -16
  239. package/dist/val/valutil.js.map +1 -1
  240. package/dist/vet.d.ts +12 -0
  241. package/dist/vet.js +159 -412
  242. package/dist/vet.js.map +1 -1
  243. package/dist/view.js +0 -414
  244. package/dist/view.js.map +1 -1
  245. package/dist/walk.js +0 -41
  246. package/dist/walk.js.map +1 -1
  247. package/grammar/aontu.abnf +9 -7
  248. package/grammar/aontu.gbnf +5 -5
  249. package/grammar/aontu.lark +5 -5
  250. package/grammar/aontu.tmLanguage.json +1 -1
  251. package/package.json +4 -2
  252. package/skill/SKILL.md +8 -0
  253. package/skill/init/check.sh +28 -0
  254. package/skill/init/data.aon +12 -0
  255. package/skill/init/model.aon +19 -0
  256. package/skill/tasks.md +151 -0
  257. package/src/agentsmd.ts +8 -32
  258. package/src/alias.ts +0 -39
  259. package/src/allow.ts +221 -0
  260. package/src/aontu.ts +10 -108
  261. package/src/aontumodel.ts +32 -0
  262. package/src/cli.ts +1009 -540
  263. package/src/ctx.ts +0 -103
  264. package/src/diff.ts +0 -40
  265. package/src/err.ts +0 -40
  266. package/src/escape.ts +0 -46
  267. package/src/exactjson.ts +0 -131
  268. package/src/format.ts +63 -234
  269. package/src/grammar.ts +72 -0
  270. package/src/graph.ts +0 -61
  271. package/src/hcanon.ts +0 -82
  272. package/src/helpdoc.ts +77 -0
  273. package/src/hints.ts +72 -49
  274. package/src/jsonschema.ts +0 -123
  275. package/src/keyorder.ts +0 -42
  276. package/src/lang.ts +39 -895
  277. package/src/lower.ts +15 -65
  278. package/src/lsp-server.ts +0 -16
  279. package/src/lsp.ts +12 -180
  280. package/src/mcp-server.ts +0 -31
  281. package/src/mcp.ts +0 -130
  282. package/src/mod-tool.ts +0 -158
  283. package/src/mod.ts +0 -178
  284. package/src/patch.ts +0 -232
  285. package/src/provenance.ts +0 -183
  286. package/src/query.ts +0 -84
  287. package/src/reach.ts +0 -53
  288. package/src/relation.ts +7 -71
  289. package/src/render.ts +33 -180
  290. package/src/report-sarif.ts +0 -48
  291. package/src/sig.ts +0 -35
  292. package/src/sigdecl.ts +1 -1
  293. package/src/siggate.ts +0 -30
  294. package/src/site.ts +3 -29
  295. package/src/subsume.ts +1 -161
  296. package/src/template.ts +69 -140
  297. package/src/trim.ts +0 -53
  298. package/src/type.ts +2 -45
  299. package/src/unify.ts +13 -251
  300. package/src/utility.ts +0 -31
  301. package/src/val/AbnfFuncVal.ts +181 -0
  302. package/src/val/AbsentVal.ts +54 -0
  303. package/src/val/AggFuncVal.ts +152 -188
  304. package/src/val/ArithFuncVal.ts +0 -20
  305. package/src/val/BagVal.ts +1 -78
  306. package/src/val/BigDecimalVal.ts +0 -16
  307. package/src/val/BigIntegerVal.ts +0 -16
  308. package/src/val/CloseFuncVal.ts +0 -9
  309. package/src/val/CmpFuncVal.ts +249 -0
  310. package/src/val/ConjunctVal.ts +0 -33
  311. package/src/val/ConstraintVal.ts +2 -537
  312. package/src/val/ContainerKindVal.ts +0 -18
  313. package/src/val/CopyFuncVal.ts +0 -5
  314. package/src/val/Decimal.ts +1 -185
  315. package/src/val/DeprecateFuncVal.ts +0 -10
  316. package/src/val/DisjunctVal.ts +0 -157
  317. package/src/val/EachFuncVal.ts +12 -53
  318. package/src/val/EmitFuncVal.ts +8 -208
  319. package/src/val/ExpectVal.ts +0 -62
  320. package/src/val/FilterFuncVal.ts +0 -55
  321. package/src/val/FuncBaseVal.ts +9 -130
  322. package/src/val/GraphAtomVal.ts +0 -42
  323. package/src/val/HideFuncVal.ts +0 -15
  324. package/src/val/IntegerVal.ts +0 -61
  325. package/src/val/JunctionVal.ts +0 -20
  326. package/src/val/KeyFuncVal.ts +0 -48
  327. package/src/val/ListVal.ts +0 -59
  328. package/src/val/LowerFuncVal.ts +12 -7
  329. package/src/val/MapVal.ts +0 -151
  330. package/src/val/MatchFuncVal.ts +0 -59
  331. package/src/val/MaybeFuncVal.ts +86 -0
  332. package/src/val/MoveFuncVal.ts +0 -20
  333. package/src/val/NilVal.ts +2 -36
  334. package/src/val/NomFuncVal.ts +200 -0
  335. package/src/val/NumberVal.ts +0 -16
  336. package/src/val/OpBaseVal.ts +4 -17
  337. package/src/val/PackFuncVal.ts +0 -63
  338. package/src/val/PathFuncVal.ts +0 -32
  339. package/src/val/PathVal.ts +0 -66
  340. package/src/val/PlaceVal.ts +0 -45
  341. package/src/val/PlusOpVal.ts +18 -75
  342. package/src/val/PrefFuncVal.ts +0 -1
  343. package/src/val/PrefVal.ts +0 -179
  344. package/src/val/RecurseVal.ts +0 -81
  345. package/src/val/RefVal.ts +1 -285
  346. package/src/val/ReferFuncVal.ts +0 -255
  347. package/src/val/ScalarKindVal.ts +0 -50
  348. package/src/val/ScalarVal.ts +0 -12
  349. package/src/val/StrFuncVal.ts +0 -44
  350. package/src/val/SuperFuncVal.ts +0 -42
  351. package/src/val/TopVal.ts +0 -1
  352. package/src/val/TranslateFuncVal.ts +132 -0
  353. package/src/val/UpperFuncVal.ts +12 -7
  354. package/src/val/Val.ts +3 -192
  355. package/src/val/VarVal.ts +0 -15
  356. package/src/val/arith.ts +0 -92
  357. package/src/val/caserange.ts +53 -0
  358. package/src/val/members.ts +0 -23
  359. package/src/val/numcmp.ts +1 -27
  360. package/src/val/numkind.ts +0 -149
  361. package/src/val/valutil.ts +0 -16
  362. package/src/vet.ts +209 -504
  363. package/src/view.ts +0 -507
  364. package/src/walk.ts +0 -41
  365. package/dist/std.d.ts +0 -3
  366. package/dist/std.js +0 -637
  367. package/dist/std.js.map +0 -1
  368. package/dist/val/FormFuncVal.js +0 -55
  369. package/dist/val/FormFuncVal.js.map +0 -1
  370. package/src/std.ts +0 -648
  371. package/src/val/FormFuncVal.ts +0 -119
@@ -18,15 +18,6 @@ class BagVal extends FeatureVal_1.FeatureVal {
18
18
  this.isGenable = true;
19
19
  this.closed = false;
20
20
  this.optionalKeys = [];
21
- // ALIAS DECLARATIONS, by key. `%uint8 = …` binds a name for this file
22
- // and is not a field of the document: it does not generate and does
23
- // not appear in canon, so a document using aliases and its expanded
24
- // twin are the SAME document and hash identically
25
- // (docs/design/ALIASES.0.md §4).
26
- //
27
- // Keyed on the map rather than marked on the value, because a
28
- // reference copies the value it resolves to -- a mark riding the
29
- // value would erase the referring field along with the declaration.
30
21
  this.aliasKeys = [];
31
22
  this.spread = {
32
23
  cj: undefined,
@@ -38,49 +29,14 @@ class BagVal extends FeatureVal_1.FeatureVal {
38
29
  return bag;
39
30
  }
40
31
  handleExpectedVal(key, val, parent, ctx) {
41
- // A MARKED value is carried, never expected (ADR-005 era, BUGS.md
42
- // §12's include form): a type()/hide()-marked child legitimately
43
- // participates in unification without ever generating — that is
44
- // the marks contract — so wrapping one as an expectation turned a
45
- // schema field arriving through an include's map meet into a
46
- // bogus `mapval_spread_required` naming a spread that exists in
47
- // neither file. The bag's gen already skips marked children.
48
- //
49
- // An OPERATOR is carried too (BUGS.md §36): an expression is a
50
- // computation that resolves by itself once its operands do — the
51
- // bag's own-key loop drives it every pass — so `m:{y:.x+1}`
52
- // arriving as a peer key must keep computing exactly as it does
53
- // written inline. Wrapping it froze the op (an expectation only
54
- // advances when a peer arrives) and the residue then reported the
55
- // phantom `mapval_spread_required` naming a spread that exists
56
- // nowhere. An op that truly never resolves is honest *_no_gen
57
- // residue naming the expression itself.
58
32
  if (val.isGenable || val.isOp || val.mark.type || val.mark.hide) {
59
33
  return val;
60
34
  }
61
- // An expectation baked into a combined spread template (the
62
- // 'map-self' meet of two unequal templates) is re-wrapped FRESH, so
63
- // key/parent name THIS bag and the template's own node is never
64
- // stored at a destination.
65
35
  const expectVal = new ExpectVal_1.ExpectVal({ peg: val.isExpect ? val.peg : val }, ctx);
66
36
  expectVal.key = key;
67
37
  expectVal.parent = parent;
68
38
  return expectVal;
69
39
  }
70
- // TWO BAGS ARE THE SAME VALUE WHEN THEY HAVE THE SAME SHAPE. Val.same
71
- // falls back to object IDENTITY, which no two separately built maps
72
- // share -- so `x:*{a:1}|{a:number}` met by `x:{a:2}` left
73
- // `{"a":2}|{"a":2}`, a disjunction of one value spelled twice, past
74
- // the DisjunctVal dedup. Generation's old member FOLD hid that
75
- // (folding a value with itself is that value); ADR-007 does not, and
76
- // a disjunction whose alternatives are all the SAME value is
77
- // resolved, not ambiguous. Canon prints the collapse too, which is
78
- // the more honest text.
79
- //
80
- // Structural, and deliberately strict: container kind, closedness,
81
- // the marks, the optional keys and the key set must all agree before
82
- // the children are compared pairwise. Recursion terminates because a
83
- // reference is not a bag -- RefVal keeps the identity comparison.
84
40
  same(peer) {
85
41
  if (this === peer) {
86
42
  return true;
@@ -94,11 +50,6 @@ class BagVal extends FeatureVal_1.FeatureVal {
94
50
  this.mark.hide !== peer.mark.hide) {
95
51
  return false;
96
52
  }
97
- // The SPREAD is part of the shape (BUGS.md §52 regime 4): `[]`
98
- // and `[&: T]` share an empty key set, and calling them the same
99
- // value collapsed the disjunction to its first arm before any
100
- // data could pick -- the vacuous-schema hole. Two spreads are the
101
- // same when their canons are.
102
53
  const scj = this.spread?.cj;
103
54
  const pcj = peer.spread?.cj;
104
55
  if ((null == scj) !== (null == pcj) ||
@@ -127,12 +78,6 @@ class BagVal extends FeatureVal_1.FeatureVal {
127
78
  if ((this.mark.type || this.mark.hide) && true !== ctx?.probe) {
128
79
  return undefined;
129
80
  }
130
- // Maps emit their keys in CODE POINT order so the generated output
131
- // is independent of insertion/unification order and matches the Go
132
- // port. Lists keep their numeric index order.
133
- //
134
- // The keys are String()-coerced because a list entry carries a
135
- // numeric index here; the coercion is a no-op for every map key.
136
81
  let entries = (0, utility_1.items)(this.peg);
137
82
  if (this.isMap) {
138
83
  entries = entries
@@ -173,22 +118,7 @@ class BagVal extends FeatureVal_1.FeatureVal {
173
118
  }
174
119
  put(cval);
175
120
  }
176
- // A CONJUNCT IS GENERABLE WHEN IT IS A SETTLED SIZING RESIDUE
177
- // (the review's finding C, use-cases/BUGS.md §16). `length` and
178
- // `unique` over a container keep the readings more members could
179
- // still change, so `a: length(3) a:[1,2,3]` is a conjunct of the
180
- // atom and the list right up to generation -- which is where the
181
- // atom decides, in ConjunctVal.gen. Any OTHER conjunct is
182
- // unresolved and falls through to the residue error below,
183
- // exactly as before.
184
121
  else if (bagGenable(child)) {
185
- // An optional child is generated in an isolated collect context so an
186
- // unresolved inner value (a bare type that survived unification, e.g.
187
- // an absent optional sub-map's `field: string`) is dropped rather than
188
- // raised: the optional subtree is simply omitted. Without isolation
189
- // such inner errors pollute the shared ctx.err and make generate()
190
- // throw even though the key is skipped below. Mirrors the
191
- // optional-disjunct path above.
192
122
  const cctx = optional ? ctx.clone({ err: [], collect: true }) : ctx;
193
123
  let cval = child.gen(cctx);
194
124
  if (optional && (undefined === cval || (0, Val_1.empty)(cval))) {
@@ -223,7 +153,6 @@ class BagVal extends FeatureVal_1.FeatureVal {
223
153
  (0, err_1.makeNilErr)(ctx, code, va, vb, undefined, details);
224
154
  break;
225
155
  }
226
- // else optional so we can ignore it
227
156
  }
228
157
  return out;
229
158
  }
@@ -245,13 +174,6 @@ function sizingResidue(v) {
245
174
  return undefined !== con && (true === bag?.isMap || true === bag?.isList) ?
246
175
  { con, bag } : undefined;
247
176
  }
248
- // bagGenable is the bag's generability whitelist. A graph atom
249
- // (RELATIONS P2) is exactly as generable as the value it carries: the
250
- // atom is transparent at generation, so wrapping a field's value in
251
- // acyclic() must not change whether the bag accepts it -- an unmet
252
- // rel() refuses required generation with or without the atom, and a
253
- // BARE atom generates nothing and is dropped, exactly as an unmet
254
- // rel() under an optional key is.
255
177
  function bagGenable(child) {
256
178
  if (true === child.isGraphAtom) {
257
179
  return undefined === child.held || bagGenable(child.held);
@@ -263,6 +185,7 @@ function bagGenable(child) {
263
185
  return true;
264
186
  }
265
187
  return true === child.isScalar
188
+ || true === child.isAbsent
266
189
  || true === child.isMap
267
190
  || true === child.isList
268
191
  || true === child.isPref
@@ -1 +1 @@
1
- {"version":3,"file":"BagVal.js","sourceRoot":"","sources":["../../src/val/BagVal.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BagVal.js","sourceRoot":"","sources":["../../src/val/BagVal.ts"],"names":[],"mappings":"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"}
@@ -7,21 +7,8 @@ const ScalarVal_1 = require("./ScalarVal");
7
7
  const ScalarKindVal_1 = require("./ScalarKindVal");
8
8
  const Decimal_1 = require("./Decimal");
9
9
  const utility_1 = require("../utility");
10
- // The exact base-10 decimal leaf of the number tower, reached only by a
11
- // `0d` literal carrying a `.` or an exponent (`0d1.5`, `0d1e3`) or by
12
- // direct construction.
13
- //
14
- // Its peg is a Decimal -- an OBJECT, so unlike every other scalar leaf
15
- // its identity cannot be `===` on the peg. Two bigdecimals are the same
16
- // value when their NUMBERS are equal (D2), which normalisation at
17
- // construction reduces to a two-field comparison; `samePeg` and `unify`
18
- // below are the two places that must not forget it.
19
10
  class BigDecimalVal extends ScalarVal_1.ScalarVal {
20
11
  constructor(spec, ctx) {
21
- // Exact-input construction (D8): a Decimal, or a decimal literal as
22
- // text (`'1.5'`, `'0d1e3'`). A JS `number` is deliberately NOT
23
- // accepted -- binary64 has already rounded it, so `0.1` could never
24
- // arrive exact.
25
12
  let peg = spec.peg;
26
13
  if ('string' === typeof peg) {
27
14
  try {
@@ -50,9 +37,6 @@ class BigDecimalVal extends ScalarVal_1.ScalarVal {
50
37
  else if (peer.isScalar &&
51
38
  peer.kind === this.kind &&
52
39
  this.peg.equals(peer.peg)) {
53
- // Same kind and equal NUMBER. Never `peer.peg === this.peg`:
54
- // that is object identity, and `0d0.10 & 0d0.1` (two Decimals
55
- // holding one value) has to succeed.
56
40
  out = this;
57
41
  }
58
42
  else if (peer.isTop) {
@@ -1 +1 @@
1
- {"version":3,"file":"BigDecimalVal.js","sourceRoot":"","sources":["../../src/val/BigDecimalVal.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BigDecimalVal.js","sourceRoot":"","sources":["../../src/val/BigDecimalVal.ts"],"names":[],"mappings":";AAAA,oDAAoD;;;AAWpD,gCAA+C;AAE/C,2CAAuC;AACvC,mDAA4C;AAC5C,uCAAmC;AAEnC,wCAImB;AAGnB,MAAM,aAAc,SAAQ,qBAAS;IAKnC,YACE,IAAa,EACb,GAAkB;QAElB,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAA;QAClB,IAAI,QAAQ,KAAK,OAAO,GAAG,EAAE,CAAC;YAC5B,IAAI,CAAC;gBACH,GAAG,GAAG,iBAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;YAC/B,CAAC;YACD,MAAM,CAAC;gBACL,8DAA8D;gBAC9D,2DAA2D;gBAC3D,UAAU;gBACV,MAAM,IAAI,gBAAU,CAAC,kBAAkB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAA;YACrD,CAAC;QACH,CAAC;QACD,IAAI,CAAC,CAAC,GAAG,YAAY,iBAAO,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,gBAAU,CAAC,kBAAkB,GAAG,GAAG,CAAC,CAAA;QAChD,CAAC;QAED,KAAK,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,0BAAU,EAAE,EAAE,GAAG,CAAC,CAAA;QAxBhD,iBAAY,GAAG,IAAI,CAAA;IAyBnB,CAAC;IAGD,KAAK,CAAC,IAAS,EAAE,GAAiB;QAChC,MAAM,EAAE,GAAG,GAAG,CAAC,OAAO,IAAI,IAAA,qBAAW,EAAC,GAAG,EAAE,GAAG,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;QAEjF,IAAI,GAAG,GAAQ,IAAI,CAAA;QAEnB,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;YACjB,IAAI,IAAI,CAAC,YAAY,IAAK,IAAY,CAAC,YAAY,EAAE,CAAC;gBACpD,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,IAAA,YAAE,EAAC,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;YAC1E,CAAC;iBACI,IACH,IAAI,CAAC,QAAQ;gBACb,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI;gBACvB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EACzB,CAAC;gBACD,GAAG,GAAG,IAAI,CAAA;YACZ,CAAC;iBACI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBACpB,GAAG,GAAG,IAAI,CAAA;YACZ,CAAC;iBACI,CAAC;gBACJ,GAAG,GAAG,IAAA,gBAAU,EAAC,GAAG,EAAE,SAAS;oBAC7B,CAAE,IAAY,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;YACtE,CAAC;QACH,CAAC;aACI,CAAC;YACJ,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QAC9B,CAAC;QAED,IAAA,sBAAY,EAAC,EAAE,EAAE,GAAG,CAAC,CAAA;QAErB,OAAO,GAAG,CAAA;IACZ,CAAC;IAGD,OAAO,CAAC,GAAQ;QACd,OAAO,GAAG,YAAY,iBAAO,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IACvD,CAAC;IAGD,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAA;IACzB,CAAC;CACF,CAAC,iCAAiC;QAIjC,aAAa"}
@@ -6,24 +6,8 @@ const err_1 = require("../err");
6
6
  const ScalarVal_1 = require("./ScalarVal");
7
7
  const ScalarKindVal_1 = require("./ScalarKindVal");
8
8
  const utility_1 = require("../utility");
9
- // The unbounded exact integer leaf of the number tower, reached only by
10
- // a `0d` literal with no fraction and no exponent (`0d5`, `-0d5`,
11
- // `0d123456789012345678901234567890`) or by direct construction.
12
- //
13
- // Its peg is a native bigint: exact at any magnitude, immutable, and
14
- // compared by VALUE with `===` (D2 -- two separately built bigints
15
- // holding the same number are `===`, which is exactly the property the
16
- // Go port has to reproduce by hand for `*big.Int`).
17
- //
18
- // `biginteger` is DISJOINT from `integer`: `5 & 0d5` is an error, since
19
- // a successful meet would have to pick one of the two kinds and either
20
- // choice makes `&` asymmetric in kind.
21
9
  class BigIntegerVal extends ScalarVal_1.ScalarVal {
22
10
  constructor(spec, ctx) {
23
- // Exact-input construction (D8): a bigint, or the digits as text. A
24
- // JS `number` is deliberately NOT accepted -- it has already been
25
- // rounded before this library could inspect it, so an exact value
26
- // above 2^53 could never arrive that way intact.
27
11
  let peg = spec.peg;
28
12
  if ('string' === typeof peg) {
29
13
  if (!/^[-+]?[0-9]+$/.test(peg)) {
@@ -1 +1 @@
1
- {"version":3,"file":"BigIntegerVal.js","sourceRoot":"","sources":["../../src/val/BigIntegerVal.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BigIntegerVal.js","sourceRoot":"","sources":["../../src/val/BigIntegerVal.ts"],"names":[],"mappings":";AAAA,oDAAoD;;;AAWpD,gCAA+C;AAE/C,2CAAuC;AACvC,mDAA4C;AAE5C,wCAImB;AAGnB,MAAM,aAAc,SAAQ,qBAAS;IAKnC,YACE,IAAa,EACb,GAAkB;QAElB,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAA;QAClB,IAAI,QAAQ,KAAK,OAAO,GAAG,EAAE,CAAC;YAC5B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC/B,MAAM,IAAI,gBAAU,CAAC,kBAAkB,GAAG,GAAG,CAAC,CAAA;YAChD,CAAC;YACD,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAA;QACnB,CAAC;QACD,IAAI,QAAQ,KAAK,OAAO,GAAG,EAAE,CAAC;YAC5B,MAAM,IAAI,gBAAU,CAAC,kBAAkB,GAAG,GAAG,CAAC,CAAA;QAChD,CAAC;QAED,KAAK,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,0BAAU,EAAE,EAAE,GAAG,CAAC,CAAA;QAnBhD,iBAAY,GAAG,IAAI,CAAA;IAoBnB,CAAC;IAGD,KAAK,CAAC,IAAS,EAAE,GAAiB;QAChC,MAAM,EAAE,GAAG,GAAG,CAAC,OAAO,IAAI,IAAA,qBAAW,EAAC,GAAG,EAAE,GAAG,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;QAEjF,IAAI,GAAG,GAAQ,IAAI,CAAA;QAEnB,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;YACjB,IAAI,IAAI,CAAC,YAAY,IAAK,IAAY,CAAC,YAAY,EAAE,CAAC;gBACpD,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,IAAA,YAAE,EAAC,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;YAC1E,CAAC;iBACI,IACH,IAAI,CAAC,QAAQ;gBACb,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI;gBACvB,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,EACrB,CAAC;gBACD,+DAA+D;gBAC/D,GAAG,GAAG,IAAI,CAAA;YACZ,CAAC;iBACI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBACpB,GAAG,GAAG,IAAI,CAAA;YACZ,CAAC;iBACI,CAAC;gBACJ,GAAG,GAAG,IAAA,gBAAU,EAAC,GAAG,EAAE,SAAS;oBAC7B,CAAE,IAAY,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;YACtE,CAAC;QACH,CAAC;aACI,CAAC;YACJ,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QAC9B,CAAC;QAED,IAAA,sBAAY,EAAC,EAAE,EAAE,GAAG,CAAC,CAAA;QAErB,OAAO,GAAG,CAAA;IACZ,CAAC;IAGD,uEAAuE;IACvE,uDAAuD;IACvD,IAAI,KAAK;QACP,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,EAAE,CAAA;QACzB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAA;IACvE,CAAC;CACF,CAAC,iCAAiC;QAIjC,aAAa"}
@@ -22,16 +22,7 @@ class CloseFuncVal extends FuncBaseVal_1.FuncBaseVal {
22
22
  return (0, err_1.makeNilErr)(ctx, 'no_first_arg', this, undefined, 'close');
23
23
  }
24
24
  if (argval.isMap || argval.isList) {
25
- // The in-place write is safe BECAUSE of the per-destination
26
- // instantiation rule (ADR-005): everywhere a close() call is
27
- // multiplied — a pack/each template, a spread constraint — the
28
- // clone now owns its argument (`dup`), so `closed` lands on that
29
- // instance alone. Cloning the bag here instead was tried and
30
- // rejected: the re-path it implies corrupts the source
31
- // attribution of children inside nested spread templates (the
32
- // 06-k8s use case's env findings named the wrong path).
33
25
  argval.closed = true;
34
- // console.log('CLOSED', argval.canon)
35
26
  }
36
27
  return argval;
37
28
  }
@@ -1 +1 @@
1
- {"version":3,"file":"CloseFuncVal.js","sourceRoot":"","sources":["../../src/val/CloseFuncVal.ts"],"names":[],"mappings":";AAAA,yDAAyD;;;AAYzD,gCAAmC;AAGnC,+CAA2C;AAI3C,MAAM,YAAa,SAAQ,yBAAW;IAGpC,YACE,IAAa,EACb,GAAkB;QAElB,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QANlB,gBAAW,GAAG,IAAI,CAAA;QAOhB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;IAChC,CAAC;IAGD,IAAI,CAAC,IAAkB,EAAE,IAAa;QACpC,OAAO,IAAI,YAAY,CAAC,IAAI,CAAC,CAAA;IAC/B,CAAC;IAED,QAAQ;QACN,OAAO,OAAO,CAAA;IAChB,CAAC;IAGD,OAAO,CAAC,GAAiB,EAAE,IAAW;QACpC,IAAI,MAAM,GAAQ,IAAI,CAAC,CAAC,CAAC,CAAA;QAEzB,IAAI,IAAI,IAAI,MAAM,EAAE,CAAC;YACnB,OAAO,IAAA,gBAAU,EAAC,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;QAClE,CAAC;QAED,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClC,4DAA4D;YAC5D,6DAA6D;YAC7D,+DAA+D;YAC/D,iEAAiE;YACjE,6DAA6D;YAC7D,uDAAuD;YACvD,8DAA8D;YAC9D,wDAAwD;YACvD,MAAiB,CAAC,MAAM,GAAG,IAAI,CAAA;YAChC,sCAAsC;QACxC,CAAC;QAED,OAAO,MAAM,CAAA;IACf,CAAC;CAEF,CAAC,iCAAiC;QAIjC,YAAY"}
1
+ {"version":3,"file":"CloseFuncVal.js","sourceRoot":"","sources":["../../src/val/CloseFuncVal.ts"],"names":[],"mappings":";AAAA,yDAAyD;;;AAYzD,gCAAmC;AAGnC,+CAA2C;AAI3C,MAAM,YAAa,SAAQ,yBAAW;IAGpC,YACE,IAAa,EACb,GAAkB;QAElB,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QANlB,gBAAW,GAAG,IAAI,CAAA;QAOhB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;IAChC,CAAC;IAGD,IAAI,CAAC,IAAkB,EAAE,IAAa;QACpC,OAAO,IAAI,YAAY,CAAC,IAAI,CAAC,CAAA;IAC/B,CAAC;IAED,QAAQ;QACN,OAAO,OAAO,CAAA;IAChB,CAAC;IAGD,OAAO,CAAC,GAAiB,EAAE,IAAW;QACpC,IAAI,MAAM,GAAQ,IAAI,CAAC,CAAC,CAAC,CAAA;QAEzB,IAAI,IAAI,IAAI,MAAM,EAAE,CAAC;YACnB,OAAO,IAAA,gBAAU,EAAC,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;QAClE,CAAC;QAED,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YACjC,MAAiB,CAAC,MAAM,GAAG,IAAI,CAAA;QAClC,CAAC;QAED,OAAO,MAAM,CAAA;IACf,CAAC;CAEF,CAAC,iCAAiC;QAIjC,YAAY"}
@@ -0,0 +1,20 @@
1
+ import type { Val, ValSpec } from '../type';
2
+ import { AontuContext } from '../ctx';
3
+ import { FuncBaseVal } from './FuncBaseVal';
4
+ type CmpDef = {
5
+ cmp: string;
6
+ children: string[];
7
+ text?: string;
8
+ req: boolean;
9
+ bag?: string;
10
+ };
11
+ declare const CMP_DEF: Record<string, CmpDef>;
12
+ declare class CmpFuncVal extends FuncBaseVal {
13
+ isCmpFunc: boolean;
14
+ cmp: string;
15
+ constructor(cmp: string, spec: ValSpec, ctx?: AontuContext);
16
+ funcname(): string;
17
+ resolve(ctx: AontuContext, args: Val[]): Val;
18
+ }
19
+ declare const CMP_FUNCS: Record<string, any>;
20
+ export { CMP_DEF, CMP_FUNCS, CmpFuncVal, };
@@ -0,0 +1,188 @@
1
+ "use strict";
2
+ /* Copyright (c) 2026 Richard Rodger, MIT License */
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.CmpFuncVal = exports.CMP_FUNCS = exports.CMP_DEF = void 0;
5
+ const err_1 = require("../err");
6
+ const MapVal_1 = require("./MapVal");
7
+ const ListVal_1 = require("./ListVal");
8
+ const StringVal_1 = require("./StringVal");
9
+ const FuncBaseVal_1 = require("./FuncBaseVal");
10
+ const CMP_DEF = {
11
+ // The output root. Its `folder` is refused an absolute path or a
12
+ // `..` segment on the Jostraca side, where the tree is data.
13
+ project: {
14
+ cmp: 'Project', text: 'folder', req: false,
15
+ children: ['project', 'folder', 'file', 'copyfiles'],
16
+ },
17
+ folder: {
18
+ cmp: 'Folder', text: 'name', req: true,
19
+ children: ['folder', 'file', 'copyfiles'],
20
+ },
21
+ file: {
22
+ cmp: 'File', text: 'name', req: true,
23
+ children: ['content', 'line', 'fragment', 'inject', 'listitems', 'copyfiles'],
24
+ },
25
+ content: {
26
+ cmp: 'Content', text: 'src', req: true,
27
+ children: [],
28
+ },
29
+ // A span with a newline added, which is the whole difference.
30
+ line: {
31
+ cmp: 'Line', text: 'src', req: true,
32
+ children: [],
33
+ },
34
+ // A file read from disk with its `<[SLOT]>` markers filled.
35
+ fragment: {
36
+ cmp: 'Fragment', text: 'from', req: true,
37
+ children: ['slot', 'content', 'line', 'listitems'],
38
+ },
39
+ slot: {
40
+ cmp: 'Slot', text: 'name', req: true,
41
+ children: ['content', 'line', 'fragment', 'listitems'],
42
+ },
43
+ // A body written between markers in a file that already exists.
44
+ inject: {
45
+ cmp: 'Inject', text: 'name', req: true,
46
+ children: ['content', 'line', 'listitems'],
47
+ },
48
+ // `Copy` under a name aontu has free: `copy` is taken by the builtin
49
+ // that copies a VALUE, and a file copy is a different verb.
50
+ copyfiles: {
51
+ cmp: 'CopyFiles', text: 'from', req: true,
52
+ children: [],
53
+ },
54
+ listitems: {
55
+ cmp: 'ListItems', req: true, bag: 'item',
56
+ children: ['content', 'line', 'fragment'],
57
+ },
58
+ };
59
+ exports.CMP_DEF = CMP_DEF;
60
+ const BY_CMP = {};
61
+ for (const fname of Object.keys(CMP_DEF)) {
62
+ BY_CMP[CMP_DEF[fname].cmp] = fname;
63
+ }
64
+ function nodeCmp(v) {
65
+ if (true !== v?.isMap) {
66
+ return undefined;
67
+ }
68
+ const cmp = v.peg?.cmp;
69
+ const name = (true === cmp?.isScalar && 'string' === typeof cmp.peg) ?
70
+ cmp.peg : undefined;
71
+ // The node carries the JOSTRACA name; the grammar is written in aontu
72
+ // names, so read it back through the one table.
73
+ return (undefined === name) ? undefined : BY_CMP[name];
74
+ }
75
+ function propText(props, key) {
76
+ const v = props?.peg?.[key];
77
+ return (true === v?.isScalar && 'string' === typeof v.peg) ? v.peg : undefined;
78
+ }
79
+ class CmpFuncVal extends FuncBaseVal_1.FuncBaseVal {
80
+ constructor(cmp, spec, ctx) {
81
+ super(spec, ctx);
82
+ this.isCmpFunc = true;
83
+ this.cmp = cmp;
84
+ }
85
+ funcname() {
86
+ return this.cmp;
87
+ }
88
+ resolve(ctx, args) {
89
+ const def = CMP_DEF[this.cmp];
90
+ // Arity is checked at parse (funcArity); args[0] can be undefined.
91
+ const spec = args[0];
92
+ let props;
93
+ if (undefined === spec) {
94
+ props = new MapVal_1.MapVal({ peg: {} }, ctx);
95
+ }
96
+ else if (true === spec?.isScalar && 'string' === typeof spec.peg) {
97
+ if (undefined === def.text) {
98
+ return (0, err_1.makeNilErr)(ctx, 'invalid-arg', this, spec, 'spec');
99
+ }
100
+ props = new MapVal_1.MapVal({ peg: { [def.text]: spec } }, ctx);
101
+ }
102
+ else if (true === spec?.isMap) {
103
+ props = spec;
104
+ }
105
+ else {
106
+ return (0, err_1.makeNilErr)(ctx, 'invalid-arg', this, spec, 'spec');
107
+ }
108
+ if (undefined !== def.text) {
109
+ const text = propText(props, def.text);
110
+ if (def.req && (undefined === text || '' === text)) {
111
+ return (0, err_1.makeNilErr)(ctx, 'invalid-arg', this, props, def.text);
112
+ }
113
+ if (!def.req && undefined !== props.peg?.[def.text] &&
114
+ undefined === text) {
115
+ return (0, err_1.makeNilErr)(ctx, 'invalid-arg', this, props, def.text);
116
+ }
117
+ }
118
+ // A bag prop is required and must be a list: `listitems` with no
119
+ // `item` renders nothing, silently, which is the failure a data
120
+ // path must not have.
121
+ if (undefined !== def.bag) {
122
+ const bag = props.peg?.[def.bag];
123
+ if (true !== bag?.isList) {
124
+ return (0, err_1.makeNilErr)(ctx, 'invalid-arg', this, props, def.bag);
125
+ }
126
+ }
127
+ const kids = args[1];
128
+ let children;
129
+ if (undefined === kids) {
130
+ children = new ListVal_1.ListVal({ peg: [] }, ctx);
131
+ }
132
+ else if (true === kids?.isList) {
133
+ const flat = [];
134
+ const splice = (list) => {
135
+ for (const kid of list) {
136
+ if (true === kid?.isList) {
137
+ const bad = splice(kid.peg);
138
+ if (undefined !== bad) {
139
+ return bad;
140
+ }
141
+ continue;
142
+ }
143
+ const kcmp = nodeCmp(kid);
144
+ if (undefined === kcmp || !def.children.includes(kcmp)) {
145
+ return kid;
146
+ }
147
+ flat.push(kid);
148
+ }
149
+ return undefined;
150
+ };
151
+ const bad = splice(kids.peg);
152
+ if (undefined !== bad) {
153
+ return (0, err_1.makeNilErr)(ctx, 'invalid-arg', this, bad, 'children');
154
+ }
155
+ children = new ListVal_1.ListVal({ peg: flat }, ctx);
156
+ }
157
+ else {
158
+ return (0, err_1.makeNilErr)(ctx, 'invalid-arg', this, kids, 'children');
159
+ }
160
+ const node = new MapVal_1.MapVal({
161
+ peg: {
162
+ cmp: new StringVal_1.StringVal({ peg: def.cmp }, ctx),
163
+ props,
164
+ children,
165
+ }
166
+ }, ctx);
167
+ node.closed = true;
168
+ return this.place(node);
169
+ }
170
+ } /* node:coverage ignore next 3 */
171
+ exports.CmpFuncVal = CmpFuncVal;
172
+ function cmpFuncClass(fname) {
173
+ class Cmp extends CmpFuncVal {
174
+ constructor(spec, ctx) {
175
+ super(fname, spec, ctx);
176
+ }
177
+ make(_ctx, spec) {
178
+ return new Cmp(spec);
179
+ }
180
+ }
181
+ return Cmp;
182
+ }
183
+ const CMP_FUNCS = {};
184
+ exports.CMP_FUNCS = CMP_FUNCS;
185
+ for (const fname of Object.keys(CMP_DEF)) {
186
+ CMP_FUNCS[fname] = cmpFuncClass(fname);
187
+ } /* node:coverage ignore next 7 */
188
+ //# sourceMappingURL=CmpFuncVal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CmpFuncVal.js","sourceRoot":"","sources":["../../src/val/CmpFuncVal.ts"],"names":[],"mappings":";AAAA,oDAAoD;;;AAYpD,gCAAmC;AAEnC,qCAAiC;AACjC,uCAAmC;AACnC,2CAAuC;AACvC,+CAA2C;AAiB3C,MAAM,OAAO,GAA2B;IACtC,iEAAiE;IACjE,6DAA6D;IAC7D,OAAO,EAAE;QACP,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK;QAC1C,QAAQ,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC;KACrD;IACD,MAAM,EAAE;QACN,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI;QACtC,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC;KAC1C;IACD,IAAI,EAAE;QACJ,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI;QACpC,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,CAAC;KAC9E;IACD,OAAO,EAAE;QACP,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI;QACtC,QAAQ,EAAE,EAAE;KACb;IACD,8DAA8D;IAC9D,IAAI,EAAE;QACJ,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI;QACnC,QAAQ,EAAE,EAAE;KACb;IACD,4DAA4D;IAC5D,QAAQ,EAAE;QACR,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI;QACxC,QAAQ,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC;KACnD;IACD,IAAI,EAAE;QACJ,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI;QACpC,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,CAAC;KACvD;IACD,gEAAgE;IAChE,MAAM,EAAE;QACN,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI;QACtC,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC;KAC3C;IACD,qEAAqE;IACrE,4DAA4D;IAC5D,SAAS,EAAE;QACT,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI;QACzC,QAAQ,EAAE,EAAE;KACb;IACD,SAAS,EAAE;QACT,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM;QACxC,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC;KAC1C;CACF,CAAA;QAmKC,OAAO;AAjKT,MAAM,MAAM,GAA2B,EAAE,CAAA;AACzC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;IACzC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;AACpC,CAAC;AAED,SAAS,OAAO,CAAC,CAAM;IACrB,IAAI,IAAI,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC;QACtB,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,MAAM,GAAG,GAAQ,CAAC,CAAC,GAAG,EAAE,GAAG,CAAA;IAC3B,MAAM,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE,QAAQ,IAAI,QAAQ,KAAK,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QACpE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAA;IACrB,sEAAsE;IACtE,gDAAgD;IAChD,OAAO,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;AACxD,CAAC;AAGD,SAAS,QAAQ,CAAC,KAAU,EAAE,GAAW;IACvC,MAAM,CAAC,GAAQ,KAAK,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAA;IAChC,OAAO,CAAC,IAAI,KAAK,CAAC,EAAE,QAAQ,IAAI,QAAQ,KAAK,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAA;AAChF,CAAC;AAGD,MAAM,UAAW,SAAQ,yBAAW;IAQlC,YACE,GAAW,EACX,IAAa,EACb,GAAkB;QAElB,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QAZlB,cAAS,GAAG,IAAI,CAAA;QAad,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;IAChB,CAAC;IAGD,QAAQ;QACN,OAAO,IAAI,CAAC,GAAG,CAAA;IACjB,CAAC;IAGD,OAAO,CAAC,GAAiB,EAAE,IAAW;QACpC,MAAM,GAAG,GAAW,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAErC,mEAAmE;QACnE,MAAM,IAAI,GAAQ,IAAI,CAAC,CAAC,CAAC,CAAA;QACzB,IAAI,KAAU,CAAA;QACd,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;YACvB,KAAK,GAAG,IAAI,eAAM,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAA;QACtC,CAAC;aACI,IAAI,IAAI,KAAK,IAAI,EAAE,QAAQ,IAAI,QAAQ,KAAK,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;YACjE,IAAI,SAAS,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC;gBAC3B,OAAO,IAAA,gBAAU,EAAC,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;YAC3D,CAAC;YACD,KAAK,GAAG,IAAI,eAAM,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,CAAA;QACxD,CAAC;aACI,IAAI,IAAI,KAAK,IAAI,EAAE,KAAK,EAAE,CAAC;YAC9B,KAAK,GAAG,IAAI,CAAA;QACd,CAAC;aACI,CAAC;YACJ,OAAO,IAAA,gBAAU,EAAC,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;QAC3D,CAAC;QAED,IAAI,SAAS,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC;YAC3B,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,CAAA;YACtC,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;gBACnD,OAAO,IAAA,gBAAU,EAAC,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,CAAA;YAC9D,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,SAAS,KAAM,KAAa,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC;gBAC1D,SAAS,KAAK,IAAI,EAAE,CAAC;gBACrB,OAAO,IAAA,gBAAU,EAAC,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,CAAA;YAC9D,CAAC;QACH,CAAC;QAED,iEAAiE;QACjE,gEAAgE;QAChE,sBAAsB;QACtB,IAAI,SAAS,KAAK,GAAG,CAAC,GAAG,EAAE,CAAC;YAC1B,MAAM,GAAG,GAAS,KAAa,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YAC9C,IAAI,IAAI,KAAK,GAAG,EAAE,MAAM,EAAE,CAAC;gBACzB,OAAO,IAAA,gBAAU,EAAC,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,CAAA;YAC7D,CAAC;QACH,CAAC;QAED,MAAM,IAAI,GAAQ,IAAI,CAAC,CAAC,CAAC,CAAA;QACzB,IAAI,QAAa,CAAA;QACjB,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;YACvB,QAAQ,GAAG,IAAI,iBAAO,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAA;QAC1C,CAAC;aACI,IAAI,IAAI,KAAK,IAAI,EAAE,MAAM,EAAE,CAAC;YAC/B,MAAM,IAAI,GAAU,EAAE,CAAA;YACtB,MAAM,MAAM,GAAG,CAAC,IAAW,EAAmB,EAAE;gBAC9C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;oBACvB,IAAI,IAAI,KAAM,GAAW,EAAE,MAAM,EAAE,CAAC;wBAClC,MAAM,GAAG,GAAG,MAAM,CAAE,GAAW,CAAC,GAAY,CAAC,CAAA;wBAC7C,IAAI,SAAS,KAAK,GAAG,EAAE,CAAC;4BACtB,OAAO,GAAG,CAAA;wBACZ,CAAC;wBACD,SAAQ;oBACV,CAAC;oBACD,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAA;oBACzB,IAAI,SAAS,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;wBACvD,OAAO,GAAG,CAAA;oBACZ,CAAC;oBACD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;gBAChB,CAAC;gBACD,OAAO,SAAS,CAAA;YAClB,CAAC,CAAA;YACD,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAY,CAAC,CAAA;YACrC,IAAI,SAAS,KAAK,GAAG,EAAE,CAAC;gBACtB,OAAO,IAAA,gBAAU,EAAC,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,GAAG,EAAE,UAAU,CAAC,CAAA;YAC9D,CAAC;YACD,QAAQ,GAAG,IAAI,iBAAO,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,CAAC,CAAA;QAC5C,CAAC;aACI,CAAC;YACJ,OAAO,IAAA,gBAAU,EAAC,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,CAAA;QAC/D,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,eAAM,CAAC;YACtB,GAAG,EAAE;gBACH,GAAG,EAAE,IAAI,qBAAS,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,EAAE,GAAG,CAAC;gBACzC,KAAK;gBACL,QAAQ;aACT;SACF,EAAE,GAAG,CAAC,CAAA;QAEP,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;QAElB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACzB,CAAC;CAEF,CAAC,iCAAiC;QA0BjC,UAAU;AAvBZ,SAAS,YAAY,CAAC,KAAa;IACjC,MAAM,GAAI,SAAQ,UAAU;QAC1B,YAAY,IAAa,EAAE,GAAkB;YAC3C,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,CAAA;QACzB,CAAC;QAED,IAAI,CAAC,IAAkB,EAAE,IAAa;YACpC,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,CAAA;QACtB,CAAC;KACF;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAGD,MAAM,SAAS,GAAwB,EAAE,CAAA;QAQvC,SAAS;AAPX,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;IACzC,SAAS,CAAC,KAAK,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,CAAA;AACxC,CAAC,CAAC,iCAAiC"}
@@ -11,7 +11,6 @@ const JunctionVal_1 = require("./JunctionVal");
11
11
  const BagVal_1 = require("./BagVal");
12
12
  const utility_1 = require("../utility");
13
13
  const top_1 = require("./top");
14
- // TODO: move main logic to op/conjunct
15
14
  class ConjunctVal extends JunctionVal_1.JunctionVal {
16
15
  constructor(spec, ctx) {
17
16
  super(spec, ctx);
@@ -39,34 +38,24 @@ class ConjunctVal extends JunctionVal_1.JunctionVal {
39
38
  const te = ctx.explain && (0, utility_1.explainOpen)(ctx, ctx.explain, 'Conjunct', this, peer);
40
39
  let done = true;
41
40
  this.peg = norm(this.peg);
42
- // console.log('\nCONJUNCT', ctx.cc, this.id, this.canon, peer.id, peer.canon)
43
41
  // Unify each term of conjunct against peer
44
42
  let upeer = [];
45
43
  let newtype = this.mark.type || peer.mark.type;
46
44
  let newhide = this.mark.hide || peer.mark.hide;
47
45
  for (let vI = 0; vI < this.peg.length; vI++) {
48
- // console.log('CONJUNCT-peg', vI, this.peg[vI].canon, this.peg[vI].mark)
49
46
  newtype = this.peg[vI].mark.type || newtype;
50
47
  newhide = this.peg[vI].mark.hide || newhide;
51
48
  }
52
49
  for (let vI = 0; vI < this.peg.length; vI++) {
53
50
  this.peg[vI].mark.type = newtype;
54
51
  this.peg[vI].mark.hide = newhide;
55
- // console.log('CONJUNCT-TERM', this.id, vI, this.peg[vI].canon)
56
52
  upeer[vI] = (this.peg[vI].done && peer.isTop) ? this.peg[vI] :
57
53
  (0, unify_1.unite)(te ? ctx.clone({ explain: (0, utility_1.ec)(te, 'OWN') }) : ctx, this.peg[vI], peer, 'cj-own');
58
54
  upeer[vI].mark.type = newtype = newtype || upeer[vI].mark.type;
59
55
  upeer[vI].mark.hide = newhide = newhide || upeer[vI].mark.hide;
60
- // let prevdone = done
61
56
  done = done && (type_1.DONE === upeer[vI].dc);
62
57
  if (upeer[vI].isNil) {
63
58
  return upeer[vI];
64
- // return Nil.make(
65
- // ctx,
66
- // '&peer[' + upeer[vI].canon + ',' + peer.canon + ']',
67
- // this.peg[vI],
68
- // peer
69
- // )
70
59
  }
71
60
  }
72
61
  upeer = norm(upeer);
@@ -96,7 +85,6 @@ class ConjunctVal extends JunctionVal_1.JunctionVal {
96
85
  }
97
86
  else {
98
87
  val = (0, unify_1.unite)(te ? ctx.clone({ explain: (0, utility_1.ec)(te, 'DEF') }) : ctx, t0, t1, 'cj-peer-t0t1');
99
- // console.log('CONJUNCT-T', t0.canon, t1?.canon, '->', val.canon)
100
88
  done = done && type_1.DONE === val.dc;
101
89
  newtype = this.mark.type || val.mark.type;
102
90
  newhide = this.mark.hide || val.mark.hide;
@@ -119,7 +107,6 @@ class ConjunctVal extends JunctionVal_1.JunctionVal {
119
107
  // Empty conjuncts evaporate.
120
108
  out = (0, top_1.top)();
121
109
  }
122
- // TODO: corrects CV[CV[1&/x]] issue above, but swaps term order!
123
110
  else if (1 === outvals.length) {
124
111
  out = outvals[0];
125
112
  out.mark.type = newtype;
@@ -129,7 +116,6 @@ class ConjunctVal extends JunctionVal_1.JunctionVal {
129
116
  out = new ConjunctVal({ peg: outvals, mark: { type: newtype, hide: newhide } }, ctx);
130
117
  }
131
118
  out.dc = done ? type_1.DONE : this.dc + 1;
132
- // console.log('CONJUNCT-unify', this.id, sc, pc, '->', out.canon, 'D=' + out.dc, 'E=', this.err)
133
119
  (0, utility_1.explainClose)(te, out);
134
120
  return out;
135
121
  }
@@ -141,19 +127,6 @@ class ConjunctVal extends JunctionVal_1.JunctionVal {
141
127
  return '&';
142
128
  }
143
129
  gen(ctx) {
144
- // A RESIDUATED SIZING ATOM DECIDES HERE (the review's finding C,
145
- // use-cases/BUGS.md §16). `length`/`unique` over a container keep
146
- // the readings that MORE MEMBERS COULD STILL CHANGE -- an upper
147
- // bound satisfied, a lower bound violated, distinctness so far --
148
- // rather than deciding against whatever the container held when it
149
- // first settled (ConstraintVal.admitContainer). Generation is where
150
- // no more members can arrive, so it is where the provisional
151
- // reading becomes the verdict: the container generates if the atom
152
- // is satisfied, and the atom's OWN refusal is raised if it is not.
153
- //
154
- // Without this the conjunct would report `conjunct` for a document
155
- // whose only fault is a length -- the constraint's message is the
156
- // one the author needs.
157
130
  const residue = (0, BagVal_1.sizingResidue)(this);
158
131
  if (undefined !== residue) {
159
132
  const settled = residue.con.settleContainer(residue.bag, ctx);
@@ -162,12 +135,10 @@ class ConjunctVal extends JunctionVal_1.JunctionVal {
162
135
  // Unresolved conjunct cannot be generated, so always an error.
163
136
  let nil = (0, err_1.makeNilErr)(ctx, 'conjunct', this, // (formatPath(this.peg, this.absolute) as any),
164
137
  undefined);
165
- // TODO: refactor to use Site
166
138
  nil.path = this.path;
167
139
  nil.site.url = this.site.url;
168
140
  nil.site.row = this.site.row;
169
141
  nil.site.col = this.site.col;
170
- // descErr(nil, ctx)
171
142
  if (null == ctx) {
172
143
  throw new err_2.AontuError(nil.msg);
173
144
  }