aontu 0.62.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 (356) hide show
  1. package/README.md +1 -1
  2. package/dist/agentsmd.js +0 -27
  3. package/dist/agentsmd.js.map +1 -1
  4. package/dist/alias.js.map +1 -1
  5. package/dist/allow.js +0 -92
  6. package/dist/allow.js.map +1 -1
  7. package/dist/aontu.d.ts +1 -1
  8. package/dist/aontu.js +1 -79
  9. package/dist/aontu.js.map +1 -1
  10. package/dist/aontumodel.d.ts +4 -0
  11. package/dist/aontumodel.js +33 -0
  12. package/dist/aontumodel.js.map +1 -0
  13. package/dist/cli.js +101 -620
  14. package/dist/cli.js.map +1 -1
  15. package/dist/ctx.js +0 -48
  16. package/dist/ctx.js.map +1 -1
  17. package/dist/diff.js +0 -32
  18. package/dist/diff.js.map +1 -1
  19. package/dist/err.js +0 -40
  20. package/dist/err.js.map +1 -1
  21. package/dist/escape.js +0 -45
  22. package/dist/escape.js.map +1 -1
  23. package/dist/exactjson.d.ts +0 -35
  24. package/dist/exactjson.js +0 -131
  25. package/dist/exactjson.js.map +1 -1
  26. package/dist/format.js +13 -203
  27. package/dist/format.js.map +1 -1
  28. package/dist/grammar.d.ts +9 -0
  29. package/dist/grammar.js +54 -0
  30. package/dist/grammar.js.map +1 -0
  31. package/dist/graph.js +0 -26
  32. package/dist/graph.js.map +1 -1
  33. package/dist/hcanon.js +0 -82
  34. package/dist/hcanon.js.map +1 -1
  35. package/dist/helpdoc.js +1 -1
  36. package/dist/helpdoc.js.map +1 -1
  37. package/dist/hints.d.ts +0 -6
  38. package/dist/hints.js +54 -55
  39. package/dist/hints.js.map +1 -1
  40. package/dist/jsonschema.js +0 -114
  41. package/dist/jsonschema.js.map +1 -1
  42. package/dist/keyorder.d.ts +0 -7
  43. package/dist/keyorder.js +0 -41
  44. package/dist/keyorder.js.map +1 -1
  45. package/dist/lang.js +17 -915
  46. package/dist/lang.js.map +1 -1
  47. package/dist/lower.js +11 -61
  48. package/dist/lower.js.map +1 -1
  49. package/dist/lsp-server.js +0 -16
  50. package/dist/lsp-server.js.map +1 -1
  51. package/dist/lsp.d.ts +1 -1
  52. package/dist/lsp.js +12 -159
  53. package/dist/lsp.js.map +1 -1
  54. package/dist/mcp-server.js +0 -26
  55. package/dist/mcp-server.js.map +1 -1
  56. package/dist/mcp.js +0 -113
  57. package/dist/mcp.js.map +1 -1
  58. package/dist/mod-tool.js +0 -130
  59. package/dist/mod-tool.js.map +1 -1
  60. package/dist/mod.js +0 -162
  61. package/dist/mod.js.map +1 -1
  62. package/dist/patch.js +0 -217
  63. package/dist/patch.js.map +1 -1
  64. package/dist/provenance.js +0 -140
  65. package/dist/provenance.js.map +1 -1
  66. package/dist/query.js +0 -75
  67. package/dist/query.js.map +1 -1
  68. package/dist/reach.js +0 -43
  69. package/dist/reach.js.map +1 -1
  70. package/dist/relation.js +0 -61
  71. package/dist/relation.js.map +1 -1
  72. package/dist/render.js +20 -135
  73. package/dist/render.js.map +1 -1
  74. package/dist/report-sarif.d.ts +0 -11
  75. package/dist/report-sarif.js +0 -28
  76. package/dist/report-sarif.js.map +1 -1
  77. package/dist/sig.js +0 -35
  78. package/dist/sig.js.map +1 -1
  79. package/dist/sigdecl.js +1 -1
  80. package/dist/sigdecl.js.map +1 -1
  81. package/dist/siggate.js +0 -4
  82. package/dist/siggate.js.map +1 -1
  83. package/dist/site.js +3 -29
  84. package/dist/site.js.map +1 -1
  85. package/dist/subsume.d.ts +0 -10
  86. package/dist/subsume.js +0 -137
  87. package/dist/subsume.js.map +1 -1
  88. package/dist/template.d.ts +2 -1
  89. package/dist/template.js +58 -138
  90. package/dist/template.js.map +1 -1
  91. package/dist/trim.js +0 -41
  92. package/dist/trim.js.map +1 -1
  93. package/dist/tsconfig.tsbuildinfo +1 -1
  94. package/dist/type.js.map +1 -1
  95. package/dist/unify.js +12 -242
  96. package/dist/unify.js.map +1 -1
  97. package/dist/utility.js +0 -22
  98. package/dist/utility.js.map +1 -1
  99. package/dist/val/AbnfFuncVal.d.ts +18 -0
  100. package/dist/val/AbnfFuncVal.js +132 -0
  101. package/dist/val/AbnfFuncVal.js.map +1 -0
  102. package/dist/val/AbsentVal.d.ts +11 -0
  103. package/dist/val/AbsentVal.js +30 -0
  104. package/dist/val/AbsentVal.js.map +1 -0
  105. package/dist/val/AggFuncVal.d.ts +10 -1
  106. package/dist/val/AggFuncVal.js +104 -116
  107. package/dist/val/AggFuncVal.js.map +1 -1
  108. package/dist/val/ArithFuncVal.js +0 -12
  109. package/dist/val/ArithFuncVal.js.map +1 -1
  110. package/dist/val/BagVal.js +1 -78
  111. package/dist/val/BagVal.js.map +1 -1
  112. package/dist/val/BigDecimalVal.js +0 -16
  113. package/dist/val/BigDecimalVal.js.map +1 -1
  114. package/dist/val/BigIntegerVal.js +0 -16
  115. package/dist/val/BigIntegerVal.js.map +1 -1
  116. package/dist/val/CloseFuncVal.js +0 -9
  117. package/dist/val/CloseFuncVal.js.map +1 -1
  118. package/dist/val/CmpFuncVal.js +2 -59
  119. package/dist/val/CmpFuncVal.js.map +1 -1
  120. package/dist/val/ConjunctVal.js +0 -29
  121. package/dist/val/ConjunctVal.js.map +1 -1
  122. package/dist/val/ConstraintVal.js +0 -500
  123. package/dist/val/ConstraintVal.js.map +1 -1
  124. package/dist/val/ContainerKindVal.js +0 -2
  125. package/dist/val/ContainerKindVal.js.map +1 -1
  126. package/dist/val/CopyFuncVal.js +0 -3
  127. package/dist/val/CopyFuncVal.js.map +1 -1
  128. package/dist/val/Decimal.js +0 -179
  129. package/dist/val/Decimal.js.map +1 -1
  130. package/dist/val/DeprecateFuncVal.js.map +1 -1
  131. package/dist/val/DisjunctVal.js +0 -152
  132. package/dist/val/DisjunctVal.js.map +1 -1
  133. package/dist/val/EachFuncVal.js +0 -3
  134. package/dist/val/EachFuncVal.js.map +1 -1
  135. package/dist/val/EmitFuncVal.d.ts +1 -1
  136. package/dist/val/EmitFuncVal.js +6 -119
  137. package/dist/val/EmitFuncVal.js.map +1 -1
  138. package/dist/val/ExpectVal.js +0 -62
  139. package/dist/val/ExpectVal.js.map +1 -1
  140. package/dist/val/FilterFuncVal.js +0 -25
  141. package/dist/val/FilterFuncVal.js.map +1 -1
  142. package/dist/val/FuncBaseVal.d.ts +1 -0
  143. package/dist/val/FuncBaseVal.js +7 -127
  144. package/dist/val/FuncBaseVal.js.map +1 -1
  145. package/dist/val/GraphAtomVal.js +0 -15
  146. package/dist/val/GraphAtomVal.js.map +1 -1
  147. package/dist/val/HideFuncVal.js +0 -13
  148. package/dist/val/HideFuncVal.js.map +1 -1
  149. package/dist/val/IntegerVal.js +0 -61
  150. package/dist/val/IntegerVal.js.map +1 -1
  151. package/dist/val/JunctionVal.js +0 -20
  152. package/dist/val/JunctionVal.js.map +1 -1
  153. package/dist/val/KeyFuncVal.js +0 -46
  154. package/dist/val/KeyFuncVal.js.map +1 -1
  155. package/dist/val/ListVal.js +0 -57
  156. package/dist/val/ListVal.js.map +1 -1
  157. package/dist/val/LowerFuncVal.js +0 -11
  158. package/dist/val/LowerFuncVal.js.map +1 -1
  159. package/dist/val/MapVal.js +0 -151
  160. package/dist/val/MapVal.js.map +1 -1
  161. package/dist/val/MatchFuncVal.js +0 -27
  162. package/dist/val/MatchFuncVal.js.map +1 -1
  163. package/dist/val/{FormFuncVal.d.ts → MaybeFuncVal.d.ts} +5 -5
  164. package/dist/val/MaybeFuncVal.js +50 -0
  165. package/dist/val/MaybeFuncVal.js.map +1 -0
  166. package/dist/val/MoveFuncVal.js +0 -18
  167. package/dist/val/MoveFuncVal.js.map +1 -1
  168. package/dist/val/NilVal.js +0 -60
  169. package/dist/val/NilVal.js.map +1 -1
  170. package/dist/val/NomFuncVal.js +8 -42
  171. package/dist/val/NomFuncVal.js.map +1 -1
  172. package/dist/val/NumberVal.js +0 -15
  173. package/dist/val/NumberVal.js.map +1 -1
  174. package/dist/val/OpBaseVal.d.ts +1 -0
  175. package/dist/val/OpBaseVal.js +3 -15
  176. package/dist/val/OpBaseVal.js.map +1 -1
  177. package/dist/val/PackFuncVal.js +0 -34
  178. package/dist/val/PackFuncVal.js.map +1 -1
  179. package/dist/val/PathFuncVal.js +0 -6
  180. package/dist/val/PathFuncVal.js.map +1 -1
  181. package/dist/val/PathVal.js +0 -41
  182. package/dist/val/PathVal.js.map +1 -1
  183. package/dist/val/PlaceVal.js +0 -25
  184. package/dist/val/PlaceVal.js.map +1 -1
  185. package/dist/val/PlusOpVal.d.ts +1 -7
  186. package/dist/val/PlusOpVal.js +13 -74
  187. package/dist/val/PlusOpVal.js.map +1 -1
  188. package/dist/val/PrefFuncVal.js +0 -1
  189. package/dist/val/PrefFuncVal.js.map +1 -1
  190. package/dist/val/PrefVal.js +0 -167
  191. package/dist/val/PrefVal.js.map +1 -1
  192. package/dist/val/RecurseVal.js +0 -55
  193. package/dist/val/RecurseVal.js.map +1 -1
  194. package/dist/val/RefVal.js +0 -282
  195. package/dist/val/RefVal.js.map +1 -1
  196. package/dist/val/ReferFuncVal.js +0 -232
  197. package/dist/val/ReferFuncVal.js.map +1 -1
  198. package/dist/val/ScalarKindVal.js +0 -49
  199. package/dist/val/ScalarKindVal.js.map +1 -1
  200. package/dist/val/ScalarVal.js +0 -11
  201. package/dist/val/ScalarVal.js.map +1 -1
  202. package/dist/val/StrFuncVal.js +0 -18
  203. package/dist/val/StrFuncVal.js.map +1 -1
  204. package/dist/val/SuperFuncVal.js +0 -32
  205. package/dist/val/SuperFuncVal.js.map +1 -1
  206. package/dist/val/TopVal.js +0 -1
  207. package/dist/val/TopVal.js.map +1 -1
  208. package/dist/val/TranslateFuncVal.js +1 -3
  209. package/dist/val/TranslateFuncVal.js.map +1 -1
  210. package/dist/val/UpperFuncVal.js +0 -11
  211. package/dist/val/UpperFuncVal.js.map +1 -1
  212. package/dist/val/Val.d.ts +1 -0
  213. package/dist/val/Val.js +2 -133
  214. package/dist/val/Val.js.map +1 -1
  215. package/dist/val/VarVal.js +0 -12
  216. package/dist/val/VarVal.js.map +1 -1
  217. package/dist/val/arith.js +0 -37
  218. package/dist/val/arith.js.map +1 -1
  219. package/dist/val/caserange.js +0 -61
  220. package/dist/val/caserange.js.map +1 -1
  221. package/dist/val/members.js +0 -6
  222. package/dist/val/members.js.map +1 -1
  223. package/dist/val/numcmp.js +0 -11
  224. package/dist/val/numcmp.js.map +1 -1
  225. package/dist/val/numkind.js +0 -145
  226. package/dist/val/numkind.js.map +1 -1
  227. package/dist/val/valutil.js +0 -16
  228. package/dist/val/valutil.js.map +1 -1
  229. package/dist/vet.js +0 -461
  230. package/dist/vet.js.map +1 -1
  231. package/dist/view.js +0 -414
  232. package/dist/view.js.map +1 -1
  233. package/dist/walk.js +0 -41
  234. package/dist/walk.js.map +1 -1
  235. package/grammar/aontu.abnf +8 -6
  236. package/grammar/aontu.gbnf +4 -4
  237. package/grammar/aontu.lark +4 -4
  238. package/grammar/aontu.tmLanguage.json +1 -1
  239. package/package.json +4 -2
  240. package/src/agentsmd.ts +0 -35
  241. package/src/alias.ts +0 -39
  242. package/src/allow.ts +1 -96
  243. package/src/aontu.ts +3 -110
  244. package/src/aontumodel.ts +32 -0
  245. package/src/cli.ts +113 -682
  246. package/src/ctx.ts +0 -103
  247. package/src/diff.ts +0 -40
  248. package/src/err.ts +0 -40
  249. package/src/escape.ts +0 -46
  250. package/src/exactjson.ts +0 -131
  251. package/src/format.ts +14 -257
  252. package/src/grammar.ts +72 -0
  253. package/src/graph.ts +0 -61
  254. package/src/hcanon.ts +0 -82
  255. package/src/helpdoc.ts +1 -1
  256. package/src/hints.ts +66 -57
  257. package/src/jsonschema.ts +0 -123
  258. package/src/keyorder.ts +0 -42
  259. package/src/lang.ts +19 -931
  260. package/src/lower.ts +12 -62
  261. package/src/lsp-server.ts +0 -16
  262. package/src/lsp.ts +12 -180
  263. package/src/mcp-server.ts +0 -31
  264. package/src/mcp.ts +0 -130
  265. package/src/mod-tool.ts +0 -158
  266. package/src/mod.ts +0 -178
  267. package/src/patch.ts +0 -232
  268. package/src/provenance.ts +0 -183
  269. package/src/query.ts +0 -84
  270. package/src/reach.ts +0 -53
  271. package/src/relation.ts +0 -84
  272. package/src/render.ts +20 -172
  273. package/src/report-sarif.ts +0 -48
  274. package/src/sig.ts +0 -35
  275. package/src/sigdecl.ts +1 -1
  276. package/src/siggate.ts +0 -30
  277. package/src/site.ts +3 -29
  278. package/src/subsume.ts +1 -161
  279. package/src/template.ts +69 -140
  280. package/src/trim.ts +0 -53
  281. package/src/type.ts +2 -45
  282. package/src/unify.ts +13 -251
  283. package/src/utility.ts +0 -31
  284. package/src/val/AbnfFuncVal.ts +181 -0
  285. package/src/val/AbsentVal.ts +54 -0
  286. package/src/val/AggFuncVal.ts +152 -188
  287. package/src/val/ArithFuncVal.ts +0 -20
  288. package/src/val/BagVal.ts +1 -78
  289. package/src/val/BigDecimalVal.ts +0 -16
  290. package/src/val/BigIntegerVal.ts +0 -16
  291. package/src/val/CloseFuncVal.ts +0 -9
  292. package/src/val/CmpFuncVal.ts +4 -166
  293. package/src/val/ConjunctVal.ts +0 -33
  294. package/src/val/ConstraintVal.ts +2 -537
  295. package/src/val/ContainerKindVal.ts +0 -18
  296. package/src/val/CopyFuncVal.ts +0 -5
  297. package/src/val/Decimal.ts +1 -185
  298. package/src/val/DeprecateFuncVal.ts +0 -10
  299. package/src/val/DisjunctVal.ts +0 -157
  300. package/src/val/EachFuncVal.ts +0 -40
  301. package/src/val/EmitFuncVal.ts +8 -208
  302. package/src/val/ExpectVal.ts +0 -62
  303. package/src/val/FilterFuncVal.ts +0 -55
  304. package/src/val/FuncBaseVal.ts +9 -130
  305. package/src/val/GraphAtomVal.ts +0 -42
  306. package/src/val/HideFuncVal.ts +0 -15
  307. package/src/val/IntegerVal.ts +0 -61
  308. package/src/val/JunctionVal.ts +0 -20
  309. package/src/val/KeyFuncVal.ts +0 -48
  310. package/src/val/ListVal.ts +0 -59
  311. package/src/val/LowerFuncVal.ts +0 -12
  312. package/src/val/MapVal.ts +0 -151
  313. package/src/val/MatchFuncVal.ts +0 -59
  314. package/src/val/MaybeFuncVal.ts +86 -0
  315. package/src/val/MoveFuncVal.ts +0 -20
  316. package/src/val/NilVal.ts +0 -60
  317. package/src/val/NomFuncVal.ts +8 -95
  318. package/src/val/NumberVal.ts +0 -16
  319. package/src/val/OpBaseVal.ts +4 -17
  320. package/src/val/PackFuncVal.ts +0 -63
  321. package/src/val/PathFuncVal.ts +0 -32
  322. package/src/val/PathVal.ts +0 -66
  323. package/src/val/PlaceVal.ts +0 -45
  324. package/src/val/PlusOpVal.ts +18 -75
  325. package/src/val/PrefFuncVal.ts +0 -1
  326. package/src/val/PrefVal.ts +0 -179
  327. package/src/val/RecurseVal.ts +0 -81
  328. package/src/val/RefVal.ts +1 -285
  329. package/src/val/ReferFuncVal.ts +0 -255
  330. package/src/val/ScalarKindVal.ts +0 -50
  331. package/src/val/ScalarVal.ts +0 -12
  332. package/src/val/StrFuncVal.ts +0 -44
  333. package/src/val/SuperFuncVal.ts +0 -42
  334. package/src/val/TopVal.ts +0 -1
  335. package/src/val/TranslateFuncVal.ts +1 -51
  336. package/src/val/UpperFuncVal.ts +0 -12
  337. package/src/val/Val.ts +3 -192
  338. package/src/val/VarVal.ts +0 -15
  339. package/src/val/arith.ts +0 -92
  340. package/src/val/caserange.ts +0 -62
  341. package/src/val/members.ts +0 -23
  342. package/src/val/numcmp.ts +1 -27
  343. package/src/val/numkind.ts +0 -149
  344. package/src/val/valutil.ts +0 -16
  345. package/src/vet.ts +1 -582
  346. package/src/view.ts +0 -507
  347. package/src/walk.ts +0 -41
  348. package/dist/std.d.ts +0 -3
  349. package/dist/std.js +0 -672
  350. package/dist/std.js.map +0 -1
  351. package/dist/val/FormFuncVal.js +0 -55
  352. package/dist/val/FormFuncVal.js.map +0 -1
  353. package/dist/val/NamerFuncVal.d.ts +0 -12
  354. package/dist/val/NamerFuncVal.js +0 -176
  355. package/dist/val/NamerFuncVal.js.map +0 -1
  356. package/src/std.ts +0 -683
package/dist/template.js CHANGED
@@ -6,68 +6,7 @@ exports.desugarTemplate = desugarTemplate;
6
6
  exports.resugarTemplate = resugarTemplate;
7
7
  exports.templateOutputs = templateOutputs;
8
8
  exports.markerFor = markerFor;
9
- // THE TEMPLATE SURFACE (docs/design/TEMPLATE.0.md; RENDER.0.md P8).
10
- // A generator written in the TARGET's own syntax: a marked line is
11
- // aontu source, and every other line is a line of output.
12
- //
13
- // //- code: units: [{ path: "hi.ts", lang: "typescript", decls: [{
14
- // //- k: "frag", of: emit($.svc, { match: { n: string }, body: [
15
- // export const NAME = "world"
16
- // //- ]}) }] }]
17
- //
18
- // That is the whole desugaring, and it is LINE-ORIENTED: nothing here
19
- // parses aontu, and nothing here reads the target's syntax beyond its
20
- // comment token. A marker line contributes its text to the document; an
21
- // unmarked line contributes one quoted string, which is a body element
22
- // where the marker lines left a list open.
23
- //
24
- // WHY A COMMENT TOKEN PLUS A DASH (D2). The generator file must stay
25
- // valid in its own language -- so an editor highlights it, a compiler
26
- // parses it, and a reviewer reads it -- and the one thing every
27
- // language has that the target's own tools already ignore is a
28
- // comment. Adding a dash distinguishes a marker from an ordinary
29
- // comment, and derives for a language this table has never seen: the
30
- // caller passes the token.
31
- //
32
- // A MARKER IS RECOGNISED AFTER LEADING WHITESPACE, AND THE INDENTATION
33
- // THE RESUGARING WRITES IS THE AONTU'S (D2, amended 2026-09-07). An
34
- // output line is verbatim -- a line indented two spaces in the template
35
- // is indented two spaces in the generated file (D7) -- and that is the
36
- // half a reader of the TARGET needs. The other half is the document:
37
- // the marker lines carry a tree, and a tree nobody can see the shape of
38
- // is the one thing this surface took away. So the marker stands at the
39
- // left margin and the aontu is indented AFTER it, which `aontu fmt`
40
- // (FMT.0.md M-BM-'3.14) is what writes.
41
- //
42
- // Reading is unchanged and stays generous: a marker after leading
43
- // whitespace is a marker, and its own indentation still counts toward
44
- // the aontu it carries, so a template written the other way desugars to
45
- // the same document. What changes is the spelling the round trip
46
- // answers, and `template --check` names the difference as the drift it
47
- // is.
48
- //
49
- // THE SUGAR IS THE FIXPOINT OF THE TWO TRANSFORMS (D6), and that is
50
- // the whole of the resugaring's safety. A canonical line that looks
51
- // like a body element is rebuilt as a target line, the rebuild is
52
- // desugared, and the rebuild is taken ONLY if that reproduces the
53
- // canonical line. A line no target line can carry -- one that would
54
- // itself read as a marker -- fails that test and stays where it is, so
55
- // there is no table of escapes to get wrong and no line the round trip
56
- // can lose.
57
- //
58
- // WHITESPACE CONTROL IS ABSENT AND UNNEEDED (D8): a marker line is not
59
- // an output line at all, so no construct can leak a newline into the
60
- // output. What IS significant is the template's own trailing
61
- // whitespace -- a line of two spaces is two spaces of output -- which
62
- // is why the canonical form quotes every body line explicitly. Note
63
- // what `template --check` does and does not catch: it holds the FILE
64
- // to the spelling these two transforms answer, so a marker written
65
- // without its space or with its aontu indented after it is named; a
66
- // body line an editor trimmed is still a valid template, and what
67
- // names that is `render --check` against the committed output.
68
- // A marker is a comment token plus a dash. These are the tokens the
69
- // verb derives from a file's extension; any other language passes its
70
- // own, which is why the surface needs no table of languages.
9
+ exports.markerFromProfiles = markerFromProfiles;
71
10
  const MARKERS = {
72
11
  c: '//-',
73
12
  cc: '//-',
@@ -82,6 +21,8 @@ const MARKERS = {
82
21
  jsx: '//-',
83
22
  kt: '//-',
84
23
  lua: '---',
24
+ markdown: '<!---',
25
+ md: '<!---',
85
26
  php: '//-',
86
27
  pl: '#-',
87
28
  py: '#-',
@@ -101,30 +42,53 @@ const MARKERS = {
101
42
  // C-family line comment, which is the one the note is written in.
102
43
  const DEFAULT_MARKER = '//-';
103
44
  exports.DEFAULT_MARKER = DEFAULT_MARKER;
104
- // A BLOCK MARKER CLOSES ITSELF. A language with no line comment (CSS
105
- // is the one in the table) marks with `/*- … */`, and the closer is
106
- // implied by the opener rather than named separately: there is one
107
- // block form, and a marker that opens `/*-` ends `*/`.
108
- const BLOCK_CLOSE = '*/';
45
+ // A marker outside this table names its closer itself.
46
+ const IMPLIED_CLOSE = [
47
+ ['<!--', '-->'],
48
+ ['/*', '*/'],
49
+ ];
50
+ function extensionOf(path) {
51
+ const dot = path.lastIndexOf('.');
52
+ const slash = Math.max(path.lastIndexOf('/'), path.lastIndexOf('\\'));
53
+ return dot > slash ? path.slice(dot + 1).toLowerCase() : '';
54
+ }
109
55
  // The marker for a file, by its extension, or the C-family default.
110
56
  // The extension decides, exactly as it decides what an include is
111
57
  // (ADR-012) -- one rule, and no flag to remember for the common case.
112
58
  function markerFor(path) {
113
- const dot = path.lastIndexOf('.');
114
- const slash = Math.max(path.lastIndexOf('/'), path.lastIndexOf('\\'));
115
- const ext = dot > slash ? path.slice(dot + 1).toLowerCase() : '';
116
- return MARKERS[ext] ?? DEFAULT_MARKER;
59
+ return MARKERS[extensionOf(path)] ?? DEFAULT_MARKER;
117
60
  }
118
- // Is this marker the block form?
119
- function isBlock(marker) {
120
- return marker.startsWith('/*');
61
+ // What reaches a language the table has no entry for by FILENAME
62
+ // rather than by a flag on every call.
63
+ function markerFromProfiles(profiles, path) {
64
+ const ext = extensionOf(path);
65
+ if ('' === ext) {
66
+ return undefined;
67
+ }
68
+ for (const profile of profiles) {
69
+ const tmpl = profile?.template;
70
+ if (null == tmpl || !Array.isArray(tmpl.ext) || !tmpl.ext.includes(ext)) {
71
+ continue;
72
+ }
73
+ return null == tmpl.close ? tmpl.marker : tmpl.marker + ' ' + tmpl.close;
74
+ }
75
+ return undefined;
76
+ }
77
+ function markerForm(marker) {
78
+ const cut = marker.indexOf(' ');
79
+ if (-1 < cut) {
80
+ return {
81
+ open: marker.slice(0, cut),
82
+ close: trimLine(marker.slice(cut + 1)),
83
+ };
84
+ }
85
+ for (const [open, close] of IMPLIED_CLOSE) {
86
+ if (marker.startsWith(open)) {
87
+ return { open: marker, close };
88
+ }
89
+ }
90
+ return { open: marker, close: '' };
121
91
  }
122
- // INDENTATION IS SPACES AND TABS, and nothing else. A host trim is not
123
- // the same set in the two ports -- JavaScript's trims every Unicode
124
- // space, Go's `TrimSpace` trims a different list -- and a line of a
125
- // template file that began with one of the characters they disagree
126
- // about would be a marker line in one engine and a line of output in
127
- // the other. Twin of templateIndent in go/template.go.
128
92
  function indentOf(line) {
129
93
  let i = 0;
130
94
  while (i < line.length && (' ' === line[i] || '\t' === line[i])) {
@@ -144,56 +108,32 @@ function trimEnd(line) {
144
108
  function trimLine(line) {
145
109
  return trimEnd(line).slice(indentOf(line));
146
110
  }
147
- function readLine(line, marker) {
111
+ function readLine(line, form) {
148
112
  const cut = indentOf(line);
149
113
  const indent = line.slice(0, cut);
150
114
  const rest = line.slice(cut);
151
- if (!rest.startsWith(marker)) {
115
+ if (!rest.startsWith(form.open)) {
152
116
  return { marker: false, indent: '', text: line };
153
117
  }
154
- let body = rest.slice(marker.length);
155
- // The block form's closer is part of the marker, not of the aontu.
156
- // A block marker line that never closes is not a marker line: the
157
- // language's own parser would not read it as a comment either.
158
- // Only the TRAILING space goes: what stands between the opener and
159
- // the aontu is the aontu's indentation, exactly as it is for a line
160
- // marker, and the one-space rule below takes the marker's own.
161
- if (isBlock(marker)) {
162
- const end = body.lastIndexOf(BLOCK_CLOSE);
118
+ let body = rest.slice(form.open.length);
119
+ if ('' !== form.close) {
120
+ const end = body.lastIndexOf(form.close);
163
121
  if (end < 0) {
164
122
  return { marker: false, indent: '', text: line };
165
123
  }
166
124
  body = trimEnd(body.slice(0, end));
167
125
  }
168
- // ONE SPACE AFTER THE MARKER IS THE MARKER'S, so `//- x: 1` carries
169
- // `x: 1` and the resugaring writes the space back. A marker written
170
- // without it carries the same aontu and is normalised on the round
171
- // trip, which `--check` reports as the drift it is.
172
126
  if (body.startsWith(' ')) {
173
127
  body = body.slice(1);
174
128
  }
175
129
  return { marker: true, indent, text: body };
176
130
  }
177
- // THE CANONICAL QUOTE IS CHOSEN PER LINE (D6). A backtick string
178
- // carries `"` and `'` unescaped, which is most of what target code
179
- // holds, so a line takes one unless it holds a backtick itself.
180
- //
181
- // A BACKSLASH IS ESCAPED IN EITHER QUOTE, and that is not what the
182
- // design note assumed: this engine reads the escapes of a backtick
183
- // string exactly as it reads a quoted one, and an unknown escape drops
184
- // its backslash (`\p` is `p`), so a target line holding `\n` inside a
185
- // string of its own would arrive in the output as a newline. Only the
186
- // delimiter differs between the two forms.
187
131
  function quoteLine(text) {
188
132
  const escaped = text.replace(/\\/g, '\\\\');
189
133
  return text.includes('`') ?
190
134
  '"' + escaped.replace(/"/g, '\\"') + '"' :
191
135
  '`' + escaped + '`';
192
136
  }
193
- // The line a quoted body element carries, or undefined when the line
194
- // is not one: anything but a lone string literal, and any escape the
195
- // quoting above does not write. The fixpoint test below is what makes
196
- // being conservative here safe -- a line this refuses stays aontu.
197
137
  function unquoteLine(text) {
198
138
  const t = trimLine(text);
199
139
  if (2 > t.length) {
@@ -223,12 +163,8 @@ function unquoteLine(text) {
223
163
  }
224
164
  return out;
225
165
  }
226
- // DESUGAR: a template file becomes the canonical aontu document.
227
- // A marker line is its own text, at its own indentation; every other
228
- // line is one quoted string, which lands wherever the marker lines
229
- // left a list open.
230
166
  function desugarTemplate(src, marker) {
231
- const mark = marker ?? DEFAULT_MARKER;
167
+ const form = markerForm(marker ?? DEFAULT_MARKER);
232
168
  const lines = src.split('\n');
233
169
  // A trailing newline is the file's, not a line of output: a text
234
170
  // file ends with one, and the round trip must not grow an empty
@@ -238,28 +174,20 @@ function desugarTemplate(src, marker) {
238
174
  lines.pop();
239
175
  }
240
176
  const out = lines.map((line) => {
241
- const read = readLine(line, mark);
177
+ const read = readLine(line, form);
242
178
  return read.marker ? read.indent + read.text : quoteLine(read.text);
243
179
  });
244
180
  return out.join('\n') + (tail ? '\n' : '');
245
181
  }
246
- // RESUGAR: the canonical document becomes a template file. Every line
247
- // is a marker line unless it is a body element that survives the
248
- // fixpoint -- rebuild the target line, desugar the rebuild, and take
249
- // it only if that answers the canonical line back.
250
182
  function resugarTemplate(src, marker) {
251
183
  const mark = marker ?? DEFAULT_MARKER;
184
+ const form = markerForm(mark);
252
185
  const lines = src.split('\n');
253
186
  const tail = 1 < lines.length && '' === lines[lines.length - 1];
254
187
  if (tail) {
255
188
  lines.pop();
256
189
  }
257
190
  const out = lines.map((line) => {
258
- // THE ELEMENT'S OWN INDENTATION IS NOT PART OF IT: the target line
259
- // is the string's content, and where the canonical form puts the
260
- // element on the page is the formatter's business. Comparing the
261
- // whole line instead would refuse every body element of a document
262
- // `aontu fmt` had indented, which is every document it has seen.
263
191
  const target = unquoteLine(line);
264
192
  if (undefined !== target && desugarTemplate(target, mark) === trimLine(line)) {
265
193
  return target;
@@ -268,26 +196,18 @@ function resugarTemplate(src, marker) {
268
196
  // is written after it, so the aontu's own shape is on the page.
269
197
  // The one space is the marker's, which the reading takes back.
270
198
  const text = trimEnd(line);
271
- const close = isBlock(mark) ? ' ' + BLOCK_CLOSE : '';
272
- return '' === text ? mark + close : mark + ' ' + text + close;
199
+ const close = '' === form.close ? '' : ' ' + form.close;
200
+ return '' === text ? form.open + close :
201
+ form.open + ' ' + text + close;
273
202
  });
274
203
  return out.join('\n') + (tail ? '\n' : '');
275
204
  }
276
- // WHICH LINES OF THE DESUGARED DOCUMENT ARE THE TARGET'S. The
277
- // desugaring is line for line, so this is one flag per line of what
278
- // `desugarTemplate` returns: true where the template's line was not a
279
- // marker, and so where the document's line is one quoted line of the
280
- // generated file.
281
- //
282
- // `aontu fmt` reads it (FMT.0.md M-BM-'3.14) to hold those lines on lines of
283
- // their own. A body element is a string like any other, and the packing
284
- // budget would put three of them on one line -- which is aontu where
285
- // three lines of output were, and a generator that writes them as one.
286
205
  function templateOutputs(src, marker) {
206
+ const form = markerForm(marker);
287
207
  const lines = src.split('\n');
288
208
  if (1 < lines.length && '' === lines[lines.length - 1]) {
289
209
  lines.pop();
290
210
  }
291
- return lines.map((line) => !readLine(line, marker).marker);
292
- } /* node:coverage ignore next 9 */
211
+ return lines.map((line) => !readLine(line, form).marker);
212
+ } /* node:coverage ignore next 10 */
293
213
  //# sourceMappingURL=template.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"template.js","sourceRoot":"","sources":["../src/template.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"template.js","sourceRoot":"","sources":["../src/template.ts"],"names":[],"mappings":"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"}
package/dist/trim.js CHANGED
@@ -6,39 +6,11 @@ exports.evalCanon = evalCanon;
6
6
  exports.trimCheck = trimCheck;
7
7
  /* Copyright (c) 2025 Richard Rodger, MIT License */
8
8
  const utility_1 = require("./utility");
9
- // The trim reporter (G3 phase 6,
10
- // docs/capability-review/g3-subsumption-evolution.md): report REDUNDANT
11
- // map entries — entries whose removal leaves the evaluated result
12
- // unchanged, the spread-implied case included — as paths. Report-only,
13
- // deliberately: canon discards comments and layout, so REWRITING the
14
- // file needs G7's format-preserving patch surface; trim ships as a
15
- // reporter here and becomes an editor there.
16
- //
17
- // The test is EVALUATE-AND-COMPARE: for each candidate entry, re-parse
18
- // the source, delete the entry from the parsed tree, evaluate, and
19
- // compare canons. This subsumes the design's spread case — an entry a
20
- // spread template re-supplies evaluates to the same canon without its
21
- // explicit spelling — and is honest about everything the fixpoint can
22
- // see (references, templates, duplicate-key merges), where a purely
23
- // structural test would guess. A removal that ERRORS is not redundant:
24
- // the entry is load-bearing.
25
- //
26
- // Parsed trees are single-use (docs/reference-api.md), so every probe
27
- // is its own parse: one evaluation per candidate plus one for the
28
- // baseline. A reporter can afford that; an editor loop belongs to G7.
29
9
  const aontu_1 = require("./aontu");
30
10
  const vet_1 = require("./vet");
31
11
  function pathText(path) {
32
12
  return '$' + (0 < path.length ? '.' + path.join('.') : '');
33
13
  }
34
- // Every (map, key) pair in a PARSED tree, parent-first. Candidates come
35
- // from the parse rather than the evaluation: an entry the fixpoint
36
- // erases or rewrites still has to be addressable for deletion. The
37
- // non-Val guard is for a bag's raw peg entries, which degenerate
38
- // parses can leave behind. Exported (with deleteAt and evalCanon) for
39
- // the direct unit tests (ADR-002, ts/test/coverage3.test.ts): the
40
- // defensive arms are unreachable through trimCheck, whose candidates
41
- // come from an identical parse.
42
14
  function candidates(v, path, out) {
43
15
  if (null == v || true !== v.isVal) {
44
16
  return;
@@ -81,19 +53,10 @@ function deleteAt(root, path) {
81
53
  node.optionalKeys = node.optionalKeys.filter((k) => k !== key);
82
54
  return true;
83
55
  }
84
- // One evaluation: parse (deleting the entry at delPath, when given),
85
- // unify under collect, and answer the canon — or undefined when the
86
- // source does not stand up, which for the baseline is the caller's
87
- // error verdict and for a probe means "load-bearing".
88
56
  function evalCanon(src, opts, delPath, sink) {
89
57
  const aontu = new aontu_1.Aontu((0, utility_1.includeOpts)(opts));
90
58
  const ctx = aontu.ctx({ collect: true });
91
59
  const parseOpts = null == opts.path ? undefined : { path: opts.path };
92
- // WHY the run failed, for the one caller that reports it. The
93
- // BASELINE run passes a sink and a probe does not: a probe's failure
94
- // means "load-bearing", which is an answer rather than a fault, and
95
- // reporting it would bury the one real finding under one entry's
96
- // worth of noise per candidate.
97
60
  const fail = (failed) => {
98
61
  if (null != sink) {
99
62
  sink.ctx = ctx;
@@ -117,10 +80,6 @@ function evalCanon(src, opts, delPath, sink) {
117
80
  }
118
81
  return v.canon;
119
82
  }
120
- // The whole reporter: the baseline canon, then one probe per candidate
121
- // entry, parent-first — and a child of a redundant parent is SKIPPED,
122
- // because "remove the whole entry" already covers it and reporting
123
- // both would tell the author to delete the same text twice.
124
83
  function trimCheck(src, opts) {
125
84
  const options = opts ?? {};
126
85
  const sink = {};
package/dist/trim.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"trim.js","sourceRoot":"","sources":["../src/trim.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"trim.js","sourceRoot":"","sources":["../src/trim.ts"],"names":[],"mappings":"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"}