paperlint 8.0.0 → 9.0.1

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 (393) hide show
  1. package/.github/CLAUDE.md +22 -0
  2. package/.github/CLAUDE.md.spec.ts +20 -0
  3. package/CLAUDE.md +59 -531
  4. package/CONTRIBUTING.md +7 -6
  5. package/README.md +4 -3
  6. package/dist/CLAUDE.md.spec.d.ts +3 -0
  7. package/dist/CLAUDE.md.spec.d.ts.map +1 -0
  8. package/dist/CLAUDE.md.spec.js +62 -0
  9. package/dist/CLAUDE.md.spec.js.map +1 -0
  10. package/dist/adapters/bibtex/index.d.ts +3 -0
  11. package/dist/adapters/bibtex/index.d.ts.map +1 -0
  12. package/dist/adapters/bibtex/index.js +103 -0
  13. package/dist/adapters/bibtex/index.js.map +1 -0
  14. package/dist/adapters/latex/filecontents.d.ts +33 -0
  15. package/dist/adapters/latex/filecontents.d.ts.map +1 -0
  16. package/dist/adapters/latex/filecontents.js +65 -0
  17. package/dist/adapters/latex/filecontents.js.map +1 -0
  18. package/dist/adapters/latex/includes.d.ts +3 -3
  19. package/dist/adapters/latex/includes.d.ts.map +1 -1
  20. package/dist/adapters/latex/includes.js +18 -10
  21. package/dist/adapters/latex/includes.js.map +1 -1
  22. package/dist/adapters/latex/index.d.ts.map +1 -1
  23. package/dist/adapters/latex/index.js +2 -0
  24. package/dist/adapters/latex/index.js.map +1 -1
  25. package/dist/adapters/latex/nodes.d.ts +12 -0
  26. package/dist/adapters/latex/nodes.d.ts.map +1 -1
  27. package/dist/adapters/latex/nodes.js +39 -0
  28. package/dist/adapters/latex/nodes.js.map +1 -1
  29. package/dist/adapters/latex/parse.d.ts +7 -1
  30. package/dist/adapters/latex/parse.d.ts.map +1 -1
  31. package/dist/adapters/latex/parse.js +55 -6
  32. package/dist/adapters/latex/parse.js.map +1 -1
  33. package/dist/adapters/memory/index.d.ts +3 -0
  34. package/dist/adapters/memory/index.d.ts.map +1 -1
  35. package/dist/adapters/memory/index.js +9 -0
  36. package/dist/adapters/memory/index.js.map +1 -1
  37. package/dist/adapters/references/index.d.ts.map +1 -1
  38. package/dist/adapters/references/index.js +27 -24
  39. package/dist/adapters/references/index.js.map +1 -1
  40. package/dist/adapters/sources-record/index.d.ts +9 -0
  41. package/dist/adapters/sources-record/index.d.ts.map +1 -0
  42. package/dist/adapters/sources-record/index.js +68 -0
  43. package/dist/adapters/sources-record/index.js.map +1 -0
  44. package/dist/adapters/tex-output/blg.d.ts +9 -0
  45. package/dist/adapters/tex-output/blg.d.ts.map +1 -0
  46. package/dist/adapters/tex-output/blg.js +20 -0
  47. package/dist/adapters/tex-output/blg.js.map +1 -0
  48. package/dist/adapters/tex-output/fls.d.ts +8 -0
  49. package/dist/adapters/tex-output/fls.d.ts.map +1 -0
  50. package/dist/adapters/tex-output/fls.js +16 -0
  51. package/dist/adapters/tex-output/fls.js.map +1 -0
  52. package/dist/adapters/tex-output/index.d.ts +7 -0
  53. package/dist/adapters/tex-output/index.d.ts.map +1 -0
  54. package/dist/adapters/tex-output/index.js +7 -0
  55. package/dist/adapters/tex-output/index.js.map +1 -0
  56. package/dist/bib-rules.d.ts +47 -0
  57. package/dist/bib-rules.d.ts.map +1 -0
  58. package/dist/bib-rules.js +127 -0
  59. package/dist/bib-rules.js.map +1 -0
  60. package/dist/build.d.ts +29 -1
  61. package/dist/build.d.ts.map +1 -1
  62. package/dist/build.js +41 -25
  63. package/dist/build.js.map +1 -1
  64. package/dist/claim-provenance.d.ts +2 -2
  65. package/dist/cli.d.ts +6 -1
  66. package/dist/cli.d.ts.map +1 -1
  67. package/dist/cli.js +30 -26
  68. package/dist/cli.js.map +1 -1
  69. package/dist/domain/paper-source.d.ts +1 -10
  70. package/dist/domain/paper-source.d.ts.map +1 -1
  71. package/dist/domain/paper-source.js +34 -24
  72. package/dist/domain/paper-source.js.map +1 -1
  73. package/dist/domain/paper-sources.d.ts +72 -0
  74. package/dist/domain/paper-sources.d.ts.map +1 -0
  75. package/dist/domain/paper-sources.js +18 -0
  76. package/dist/domain/paper-sources.js.map +1 -0
  77. package/dist/domain/sources-record.d.ts +102 -0
  78. package/dist/domain/sources-record.d.ts.map +1 -0
  79. package/dist/domain/sources-record.js +38 -0
  80. package/dist/domain/sources-record.js.map +1 -0
  81. package/dist/domain/tex-run.d.ts +25 -0
  82. package/dist/domain/tex-run.d.ts.map +1 -0
  83. package/dist/domain/tex-run.js +79 -0
  84. package/dist/domain/tex-run.js.map +1 -0
  85. package/dist/eslint-rules/CLAUDE.md.spec.d.ts +3 -0
  86. package/dist/eslint-rules/CLAUDE.md.spec.d.ts.map +1 -0
  87. package/dist/eslint-rules/CLAUDE.md.spec.js +39 -0
  88. package/dist/eslint-rules/CLAUDE.md.spec.js.map +1 -0
  89. package/dist/eslint-rules/install-path-literals.d.ts +1 -1
  90. package/dist/eslint-rules/install-path-literals.js +4 -4
  91. package/dist/eslint-rules/install-path-literals.js.map +1 -1
  92. package/dist/eslint-rules/paper-context.d.ts.map +1 -1
  93. package/dist/eslint-rules/paper-context.js +4 -3
  94. package/dist/eslint-rules/paper-context.js.map +1 -1
  95. package/dist/eslint-rules/paper-typography.d.ts +0 -9
  96. package/dist/eslint-rules/paper-typography.d.ts.map +1 -1
  97. package/dist/eslint-rules/paper-typography.js +12 -5
  98. package/dist/eslint-rules/paper-typography.js.map +1 -1
  99. package/dist/eslint-rules/pdf-last-page-balance.js +1 -1
  100. package/dist/latex-log.d.ts +10 -0
  101. package/dist/latex-log.d.ts.map +1 -1
  102. package/dist/latex-log.js +10 -0
  103. package/dist/latex-log.js.map +1 -1
  104. package/dist/latex-loop.d.ts +2 -0
  105. package/dist/latex-loop.d.ts.map +1 -1
  106. package/dist/latex-loop.js.map +1 -1
  107. package/dist/lib/agent-cli-version.js +1 -1
  108. package/dist/lib/agent-cli-version.js.map +1 -1
  109. package/dist/package-dirs.d.ts.map +1 -1
  110. package/dist/package-dirs.js +3 -2
  111. package/dist/package-dirs.js.map +1 -1
  112. package/dist/paper-includes.d.ts +4 -7
  113. package/dist/paper-includes.d.ts.map +1 -1
  114. package/dist/paper-includes.js +29 -21
  115. package/dist/paper-includes.js.map +1 -1
  116. package/dist/paper-prose.d.ts +2 -2
  117. package/dist/paper-record.d.ts +25 -0
  118. package/dist/paper-record.d.ts.map +1 -0
  119. package/dist/paper-record.js +39 -0
  120. package/dist/paper-record.js.map +1 -0
  121. package/dist/paper-sources.d.ts +66 -0
  122. package/dist/paper-sources.d.ts.map +1 -0
  123. package/dist/paper-sources.js +92 -0
  124. package/dist/paper-sources.js.map +1 -0
  125. package/dist/ports/bib-reader.d.ts +18 -0
  126. package/dist/ports/bib-reader.d.ts.map +1 -0
  127. package/dist/ports/bib-reader.js +2 -0
  128. package/dist/ports/bib-reader.js.map +1 -0
  129. package/dist/ports/check-references.d.ts +9 -4
  130. package/dist/ports/check-references.d.ts.map +1 -1
  131. package/dist/ports/latex.d.ts +15 -0
  132. package/dist/ports/latex.d.ts.map +1 -1
  133. package/dist/ports/sources-codec.d.ts +11 -0
  134. package/dist/ports/sources-codec.d.ts.map +1 -0
  135. package/dist/ports/sources-codec.js +2 -0
  136. package/dist/ports/sources-codec.js.map +1 -0
  137. package/dist/ports/tex-output.d.ts +17 -0
  138. package/dist/ports/tex-output.d.ts.map +1 -0
  139. package/dist/ports/tex-output.js +2 -0
  140. package/dist/ports/tex-output.js.map +1 -0
  141. package/dist/recorded-bibliography.d.ts +89 -0
  142. package/dist/recorded-bibliography.d.ts.map +1 -0
  143. package/dist/recorded-bibliography.js +136 -0
  144. package/dist/recorded-bibliography.js.map +1 -0
  145. package/dist/reference-rules.d.ts +5 -5
  146. package/dist/reference-rules.d.ts.map +1 -1
  147. package/dist/reference-rules.js +150 -77
  148. package/dist/reference-rules.js.map +1 -1
  149. package/dist/references.d.ts +71 -16
  150. package/dist/references.d.ts.map +1 -1
  151. package/dist/references.js +110 -26
  152. package/dist/references.js.map +1 -1
  153. package/dist/register-bands.d.ts +3 -3
  154. package/dist/register-bands.d.ts.map +1 -1
  155. package/dist/register-bands.js.map +1 -1
  156. package/dist/register.d.ts +2 -2
  157. package/dist/sources-record.d.ts +38 -0
  158. package/dist/sources-record.d.ts.map +1 -0
  159. package/dist/sources-record.js +123 -0
  160. package/dist/sources-record.js.map +1 -0
  161. package/dist/sources-rules.d.ts +44 -0
  162. package/dist/sources-rules.d.ts.map +1 -0
  163. package/dist/sources-rules.js +76 -0
  164. package/dist/sources-rules.js.map +1 -0
  165. package/dist/tex-paper.d.ts +10 -15
  166. package/dist/tex-paper.d.ts.map +1 -1
  167. package/dist/tex-paper.js +24 -40
  168. package/dist/tex-paper.js.map +1 -1
  169. package/dist/tex-requirements.js +1 -1
  170. package/dist/tex-venue-rules.d.ts +3 -3
  171. package/dist/tex-venue-rules.d.ts.map +1 -1
  172. package/dist/tex-venue-rules.js.map +1 -1
  173. package/dist/toolchain.js +1 -1
  174. package/docs/configuration.md +12 -4
  175. package/docs/design/paper-sources.md +197 -0
  176. package/docs/e2e.md +1 -1
  177. package/docs/incidents.md +5 -5
  178. package/docs/package-shape-options.md +1 -1
  179. package/docs/references.md +34 -8
  180. package/docs/rules/bib/reachable-entry.md +64 -0
  181. package/docs/rules/paper/sources-fresh.md +81 -0
  182. package/docs/rules.md +62 -57
  183. package/eslint-rules/CLAUDE.md +44 -0
  184. package/eslint-rules/CLAUDE.md.spec.ts +43 -0
  185. package/eslint-rules/install-path-literals.harness.mjs +1 -1
  186. package/eslint-rules/install-path-literals.ts +4 -4
  187. package/eslint-rules/paper-context.ts +4 -3
  188. package/eslint-rules/paper-typography.test.mjs +12 -72
  189. package/eslint-rules/paper-typography.ts +13 -6
  190. package/eslint-rules/pdf-last-page-balance.ts +1 -1
  191. package/eslint.config.mjs +28 -3
  192. package/fixtures/build-e2e/aidc/paper.tex +1 -1
  193. package/fixtures/build-e2e/anon-ack/paper.tex +1 -1
  194. package/fixtures/build-e2e/anon-author/paper.tex +1 -1
  195. package/fixtures/build-e2e/anon-bib/paper.tex +1 -1
  196. package/fixtures/build-e2e/anon-href/paper.tex +1 -1
  197. package/fixtures/build-e2e/anon-macro/paper.tex +1 -1
  198. package/fixtures/build-e2e/anon-pdfauthor/paper.tex +1 -1
  199. package/fixtures/paper-sources/p1/paper.tex +30 -0
  200. package/fixtures/paper-sources/p1/refs.bib +6 -0
  201. package/fixtures/paper-sources/p1/sections/dead.tex +6 -0
  202. package/fixtures/paper-sources/p1/sections/intro.tex +7 -0
  203. package/fixtures/paper-sources/p1/sections/parked.tex +6 -0
  204. package/fixtures/paper-sources/p1/tex-truth.json +37 -0
  205. package/fixtures/paper-sources/p1/versions/2026-01-01-review.tex +4 -0
  206. package/fixtures/paper-sources/v1-stale/paper.tex +14 -0
  207. package/fixtures/paper-sources/v1-stale/refs.bib +6 -0
  208. package/fixtures/paper-sources/v1-stale/tex-truth.json +32 -0
  209. package/fixtures/paper-sources/v10-ifthenelse/anon.bib +1 -0
  210. package/fixtures/paper-sources/v10-ifthenelse/paper.tex +9 -0
  211. package/fixtures/paper-sources/v10-ifthenelse/real.bib +1 -0
  212. package/fixtures/paper-sources/v10-ifthenelse/tex-truth.json +28 -0
  213. package/fixtures/paper-sources/v11-two-blocks/paper.tex +12 -0
  214. package/fixtures/paper-sources/v11-two-blocks/tex-truth.json +30 -0
  215. package/fixtures/paper-sources/v13-percent-text/paper.tex +6 -0
  216. package/fixtures/paper-sources/v13-percent-text/refs.bib +3 -0
  217. package/fixtures/paper-sources/v13-percent-text/tex-truth.json +30 -0
  218. package/fixtures/paper-sources/v15-after-end/paper.tex +6 -0
  219. package/fixtures/paper-sources/v15-after-end/refs.bib +1 -0
  220. package/fixtures/paper-sources/v15-after-end/tex-truth.json +17 -0
  221. package/fixtures/paper-sources/v16-included-block/bibblock.tex +3 -0
  222. package/fixtures/paper-sources/v16-included-block/paper.tex +7 -0
  223. package/fixtures/paper-sources/v16-included-block/refs.bib +1 -0
  224. package/fixtures/paper-sources/v16-included-block/tex-truth.json +35 -0
  225. package/fixtures/paper-sources/v17-include-order/bibsetup.tex +1 -0
  226. package/fixtures/paper-sources/v17-include-order/first.bib +1 -0
  227. package/fixtures/paper-sources/v17-include-order/later.bib +1 -0
  228. package/fixtures/paper-sources/v17-include-order/paper.tex +7 -0
  229. package/fixtures/paper-sources/v17-include-order/tex-truth.json +40 -0
  230. package/fixtures/paper-sources/v2-overwrite/paper.tex +14 -0
  231. package/fixtures/paper-sources/v2-overwrite/refs.bib +6 -0
  232. package/fixtures/paper-sources/v2-overwrite/tex-truth.json +30 -0
  233. package/fixtures/paper-sources/v22-parked-thebibliography/paper.tex +7 -0
  234. package/fixtures/paper-sources/v22-parked-thebibliography/tex-truth.json +17 -0
  235. package/fixtures/paper-sources/v23-parked-include/old.bib +1 -0
  236. package/fixtures/paper-sources/v23-parked-include/paper.tex +7 -0
  237. package/fixtures/paper-sources/v23-parked-include/parked.tex +1 -0
  238. package/fixtures/paper-sources/v23-parked-include/refs.bib +1 -0
  239. package/fixtures/paper-sources/v23-parked-include/tex-truth.json +28 -0
  240. package/fixtures/paper-sources/v24-quoted-fields/paper.tex +6 -0
  241. package/fixtures/paper-sources/v24-quoted-fields/refs.bib +5 -0
  242. package/fixtures/paper-sources/v24-quoted-fields/tex-truth.json +32 -0
  243. package/fixtures/paper-sources/v25-string-differs/paper.tex +10 -0
  244. package/fixtures/paper-sources/v25-string-differs/refs.bib +2 -0
  245. package/fixtures/paper-sources/v25-string-differs/tex-truth.json +32 -0
  246. package/fixtures/paper-sources/v26-comment-in-names/one.bib +1 -0
  247. package/fixtures/paper-sources/v26-comment-in-names/paper.tex +7 -0
  248. package/fixtures/paper-sources/v26-comment-in-names/tex-truth.json +32 -0
  249. package/fixtures/paper-sources/v26-comment-in-names/two.bib +1 -0
  250. package/fixtures/paper-sources/v27-shared-string/abbreviations.bib +2 -0
  251. package/fixtures/paper-sources/v27-shared-string/paper.tex +6 -0
  252. package/fixtures/paper-sources/v27-shared-string/references.bib +6 -0
  253. package/fixtures/paper-sources/v27-shared-string/tex-truth.json +31 -0
  254. package/fixtures/paper-sources/v28-shared-string-block/abbreviations.bib +2 -0
  255. package/fixtures/paper-sources/v28-shared-string-block/paper.tex +14 -0
  256. package/fixtures/paper-sources/v28-shared-string-block/tex-truth.json +33 -0
  257. package/fixtures/paper-sources/v29-generated-input/paper.tex +9 -0
  258. package/fixtures/paper-sources/v29-generated-input/tex-truth.json +24 -0
  259. package/fixtures/paper-sources/v3-declared/paper.bib +6 -0
  260. package/fixtures/paper-sources/v3-declared/paper.tex +6 -0
  261. package/fixtures/paper-sources/v3-declared/tex-truth.json +28 -0
  262. package/fixtures/paper-sources/v30-name-next-line/paper.tex +14 -0
  263. package/fixtures/paper-sources/v30-name-next-line/tex-truth.json +30 -0
  264. package/fixtures/paper-sources/v4-commented/paper.tex +14 -0
  265. package/fixtures/paper-sources/v4-commented/refs.bib +6 -0
  266. package/fixtures/paper-sources/v4-commented/tex-truth.json +28 -0
  267. package/fixtures/paper-sources/v5-percent-entry/paper.tex +20 -0
  268. package/fixtures/paper-sources/v5-percent-entry/tex-truth.json +37 -0
  269. package/fixtures/paper-sources/v6-unclosed/paper.tex +6 -0
  270. package/fixtures/paper-sources/v6-unclosed/refs.bib +5 -0
  271. package/fixtures/paper-sources/v6-unclosed/tex-truth.json +37 -0
  272. package/fixtures/paper-sources/v8-jobname/paper.tex +9 -0
  273. package/fixtures/paper-sources/v8-jobname/tex-truth.json +30 -0
  274. package/fixtures/paper-sources/v9-two-bibliographies/one.bib +1 -0
  275. package/fixtures/paper-sources/v9-two-bibliographies/paper.tex +7 -0
  276. package/fixtures/paper-sources/v9-two-bibliographies/tex-truth.json +35 -0
  277. package/fixtures/paper-sources/v9-two-bibliographies/two.bib +1 -0
  278. package/fixtures/paper-typography/clean-paper/paper.tex +1 -1
  279. package/fixtures/paper-typography/messy-paper/paper.tex +1 -1
  280. package/hooks/CLAUDE.md +34 -0
  281. package/hooks/CLAUDE.md.spec.ts +30 -0
  282. package/lib/agent-cli-version.ts +1 -1
  283. package/package.json +3 -11
  284. package/plugin/CLAUDE.md +22 -0
  285. package/plugin/CLAUDE.md.spec.ts +22 -0
  286. package/scripts/check.test.ts +23 -1
  287. package/scripts/check.ts +7 -3
  288. package/scripts/coverage-config.test.ts +21 -11
  289. package/scripts/layer-legacy-frozen.test.ts +41 -2
  290. package/scripts/layer-legacy-frozen.ts +31 -2
  291. package/skills/CLAUDE.md +19 -0
  292. package/skills/CLAUDE.md.spec.ts +18 -0
  293. package/skills/grade-paper-writing/SKILL.md +4 -3
  294. package/skills/grade-paper-writing/SKILL.md.spec.ts +3 -2
  295. package/skills/grade-paper-writing/prose-lint.mjs +11 -2
  296. package/skills/grade-paper-writing/prose-lint.test.ts +52 -4
  297. package/skills/paper-pipeline/scripts/extract-ref-facts.harness.mjs +83 -33
  298. package/skills/paper-pipeline/scripts/extract-ref-facts.mjs +67 -115
  299. package/skills/paper-pipeline/scripts/extract-ref-facts.test.mjs +128 -121
  300. package/skills/plan-paper-timeline/plan-paper-timeline.effects.harness.mjs +21 -102
  301. package/skills/verify-citations/SKILL.md +7 -4
  302. package/skills/verify-citations/SKILL.md.spec.ts +6 -3
  303. package/skills/verify-citations/scripts/bib-authors.check.test.mjs +17 -19
  304. package/skills/verify-citations/scripts/bib-authors.cli.test.ts +129 -46
  305. package/skills/verify-citations/scripts/bib-authors.d.mts +22 -2
  306. package/skills/verify-citations/scripts/bib-authors.mjs +57 -111
  307. package/skills/verify-citations/scripts/verify-cites.cli.test.ts +16 -0
  308. package/skills/verify-citations/scripts/verify-cites.d.mts +19 -3
  309. package/skills/verify-citations/scripts/verify-cites.mjs +42 -108
  310. package/skills/verify-citations/scripts/verify-cites.test.mjs +23 -36
  311. package/src/CLAUDE.md +23 -1
  312. package/src/CLAUDE.md.spec.ts +72 -0
  313. package/src/adapters/bibtex/index.test.ts +163 -0
  314. package/src/adapters/bibtex/index.ts +155 -0
  315. package/src/adapters/latex/filecontents.ts +114 -0
  316. package/src/adapters/latex/includes.ts +18 -10
  317. package/src/adapters/latex/index.test.ts +73 -0
  318. package/src/adapters/latex/index.ts +2 -0
  319. package/src/adapters/latex/nodes.ts +64 -0
  320. package/src/adapters/latex/parse.test.ts +38 -0
  321. package/src/adapters/latex/parse.ts +67 -6
  322. package/src/adapters/memory/index.ts +17 -0
  323. package/src/adapters/references/index.test.ts +75 -21
  324. package/src/adapters/references/index.ts +37 -32
  325. package/src/adapters/sources-record/index.test.ts +87 -0
  326. package/src/adapters/sources-record/index.ts +82 -0
  327. package/src/adapters/tex-output/blg.ts +27 -0
  328. package/src/adapters/tex-output/fls.ts +24 -0
  329. package/src/adapters/tex-output/index.test.ts +171 -0
  330. package/src/adapters/tex-output/index.ts +12 -0
  331. package/src/bib-rules.test.ts +356 -0
  332. package/src/bib-rules.ts +228 -0
  333. package/src/bibliography-at.test.ts +286 -0
  334. package/src/build.test.ts +210 -0
  335. package/src/build.ts +101 -36
  336. package/src/claim-provenance.test.ts +33 -7
  337. package/src/claim-provenance.ts +2 -2
  338. package/src/cli.harness.mjs +20 -10
  339. package/src/cli.test.ts +14 -10
  340. package/src/cli.ts +37 -28
  341. package/src/domain/paper-source.test.ts +58 -20
  342. package/src/domain/paper-source.ts +38 -42
  343. package/src/domain/paper-sources.ts +94 -0
  344. package/src/domain/sources-record.test.ts +71 -0
  345. package/src/domain/sources-record.ts +136 -0
  346. package/src/domain/tex-run.test.ts +228 -0
  347. package/src/domain/tex-run.ts +139 -0
  348. package/src/heading-case.test.ts +24 -10
  349. package/src/latex-log.ts +20 -0
  350. package/src/latex-loop.harness.ts +1 -0
  351. package/src/latex-loop.ts +2 -0
  352. package/src/linted-set.test.ts +9 -1
  353. package/src/new-paper.harness.mjs +3 -2
  354. package/src/new-paper.test.ts +9 -5
  355. package/src/package-dirs.ts +3 -2
  356. package/src/paper-includes.test.ts +157 -38
  357. package/src/paper-includes.ts +39 -35
  358. package/src/paper-prose.test.ts +34 -5
  359. package/src/paper-prose.ts +2 -2
  360. package/src/paper-record.test.ts +173 -0
  361. package/src/paper-record.ts +66 -0
  362. package/src/paper-settings-commands.test.ts +5 -2
  363. package/src/paper-sources.ts +151 -0
  364. package/src/ports/bib-reader.ts +27 -0
  365. package/src/ports/check-references.ts +7 -3
  366. package/src/ports/latex.ts +19 -0
  367. package/src/ports/sources-codec.ts +11 -0
  368. package/src/ports/tex-output.ts +17 -0
  369. package/src/recorded-bibliography.ts +297 -0
  370. package/src/reference-rules.ts +217 -104
  371. package/src/references.test.ts +520 -177
  372. package/src/references.ts +185 -37
  373. package/src/register-bands.test.ts +5 -1
  374. package/src/register-bands.ts +3 -5
  375. package/src/register.test.ts +6 -1
  376. package/src/register.ts +2 -2
  377. package/src/rule-cases.test.ts +68 -12
  378. package/src/rule-docs.test.ts +0 -1
  379. package/src/sources-record.test.ts +308 -0
  380. package/src/sources-record.ts +231 -0
  381. package/src/sources-rules.test.ts +152 -0
  382. package/src/sources-rules.ts +117 -0
  383. package/src/tex-paper.test.ts +148 -78
  384. package/src/tex-paper.ts +31 -61
  385. package/src/tex-requirements.ts +1 -1
  386. package/src/tex-venue-rules.test.ts +36 -8
  387. package/src/tex-venue-rules.ts +3 -5
  388. package/src/toolchain.ts +1 -1
  389. package/dist/eslint-rules/bib-reachable-entry.d.ts +0 -22
  390. package/dist/eslint-rules/bib-reachable-entry.d.ts.map +0 -1
  391. package/dist/eslint-rules/bib-reachable-entry.js +0 -75
  392. package/dist/eslint-rules/bib-reachable-entry.js.map +0 -1
  393. package/eslint-rules/bib-reachable-entry.ts +0 -76
@@ -1 +1 @@
1
- {"version":3,"file":"latex-log.js","sourceRoot":"","sources":["../src/latex-log.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"latex-log.js","sourceRoot":"","sources":["../src/latex-log.ts"],"names":[],"mappings":"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"}
@@ -71,6 +71,8 @@ export type Observation = {
71
71
  readonly bib: BibInput;
72
72
  /** The first error and its source context, from the log. Empty on success. */
73
73
  readonly errorLines: readonly string[];
74
+ /** What `-recorder` wrote after this pass (`paper.fls`), or null when pdflatex wrote none. */
75
+ readonly fls: string | null;
74
76
  } | {
75
77
  readonly step: "bibtex";
76
78
  readonly exitCode: number;
@@ -1 +1 @@
1
- {"version":3,"file":"latex-loop.d.ts","sourceRoot":"","sources":["../src/latex-loop.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"latex-loop.d.ts","sourceRoot":"","sources":["../src/latex-loop.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"latex-loop.js","sourceRoot":"","sources":["../src/latex-loop.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"latex-loop.js","sourceRoot":"","sources":["../src/latex-loop.ts"],"names":[],"mappings":"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"}
@@ -54,7 +54,7 @@ export function observeAgentCli({ spawnSync, program = "claude", characterized =
54
54
  const version = VERSION_IN.exec(raw)?.[1] ?? "";
55
55
  // ⚠️ EXIT 0 AND NOTHING ON STDOUT IS NOT A CLEAN OBSERVATION — it is exactly what the discarded
56
56
  // probe looked like, and reporting `characterized against ""` would be the same lie in a new
57
- // place. This is rule 4 of CLAUDE.md applied to the check that enforces it.
57
+ // place. This is the green zero of scripts/rules-see-files.mjs, applied to the check that enforces it.
58
58
  if (version === "")
59
59
  throw new Error(`\`${program} --version\` exited 0 but printed no version on stdout (got ${JSON.stringify(raw)}` +
60
60
  `${probe.stderr ? `, stderr ${JSON.stringify(probe.stderr.trim().slice(0, 200))}` : ""}). ` +
@@ -1 +1 @@
1
- {"version":3,"file":"agent-cli-version.js","sourceRoot":"","sources":["../../lib/agent-cli-version.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,SAAS,CAAC;AAE3C,+DAA+D;AAC/D,MAAM,UAAU,GAAG,qBAAqB,CAAC;AA6BzC,MAAM,UAAU,eAAe,CAAC,EAC9B,SAAS,EACT,OAAO,GAAG,QAAQ,EAClB,aAAa,GAAG,iBAAiB,GAKlC;IACC,2FAA2F;IAC3F,2FAA2F;IAC3F,oDAAoD;IACpD,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IAEtE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QACpB,OAAO;YACL,OAAO,EAAE,KAAK;YACd,GAAG,EAAE,EAAE;YACP,OAAO,EAAE,EAAE;YACX,aAAa;YACb,OAAO,EAAE,KAAK;YACd,IAAI,EAAE,SAAS,OAAO,oDAAoD;SAC3E,CAAC;IAEJ,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACxC,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAEhD,gGAAgG;IAChG,6FAA6F;IAC7F,4EAA4E;IAC5E,IAAI,OAAO,KAAK,EAAE;QAChB,MAAM,IAAI,KAAK,CACb,KAAK,OAAO,+DAA+D,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;YAC9F,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK;YAC3F,8FAA8F;YAC9F,kEAAkE,CACrE,CAAC;IAEJ,MAAM,OAAO,GAAG,OAAO,KAAK,aAAa,CAAC;IAC1C,OAAO;QACL,OAAO,EAAE,IAAI;QACb,GAAG;QACH,OAAO;QACP,aAAa;QACb,OAAO;QACP,IAAI,EAAE,OAAO;YACX,CAAC,CAAC,cAAc,OAAO,MAAM,OAAO,oDAAoD;gBACtF,GAAG,aAAa,8EAA8E;gBAC9F,uEAAuE;YACzE,CAAC,CAAC,cAAc,OAAO,MAAM,OAAO,6DAA6D;KACpG,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"agent-cli-version.js","sourceRoot":"","sources":["../../lib/agent-cli-version.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,SAAS,CAAC;AAE3C,+DAA+D;AAC/D,MAAM,UAAU,GAAG,qBAAqB,CAAC;AA6BzC,MAAM,UAAU,eAAe,CAAC,EAC9B,SAAS,EACT,OAAO,GAAG,QAAQ,EAClB,aAAa,GAAG,iBAAiB,GAKlC;IACC,2FAA2F;IAC3F,2FAA2F;IAC3F,oDAAoD;IACpD,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IAEtE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QACpB,OAAO;YACL,OAAO,EAAE,KAAK;YACd,GAAG,EAAE,EAAE;YACP,OAAO,EAAE,EAAE;YACX,aAAa;YACb,OAAO,EAAE,KAAK;YACd,IAAI,EAAE,SAAS,OAAO,oDAAoD;SAC3E,CAAC;IAEJ,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACxC,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAEhD,gGAAgG;IAChG,6FAA6F;IAC7F,uGAAuG;IACvG,IAAI,OAAO,KAAK,EAAE;QAChB,MAAM,IAAI,KAAK,CACb,KAAK,OAAO,+DAA+D,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;YAC9F,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK;YAC3F,8FAA8F;YAC9F,kEAAkE,CACrE,CAAC;IAEJ,MAAM,OAAO,GAAG,OAAO,KAAK,aAAa,CAAC;IAC1C,OAAO;QACL,OAAO,EAAE,IAAI;QACb,GAAG;QACH,OAAO;QACP,aAAa;QACb,OAAO;QACP,IAAI,EAAE,OAAO;YACX,CAAC,CAAC,cAAc,OAAO,MAAM,OAAO,oDAAoD;gBACtF,GAAG,aAAa,8EAA8E;gBAC9F,uEAAuE;YACzE,CAAC,CAAC,cAAc,OAAO,MAAM,OAAO,6DAA6D;KACpG,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"package-dirs.d.ts","sourceRoot":"","sources":["../src/package-dirs.ts"],"names":[],"mappings":"AAaA,iEAAiE;AACjE,eAAO,MAAM,UAAU,QAAO,MACyB,CAAC;AAExD,sFAAsF;AACtF,eAAO,MAAM,YAAY,QAAO,MAC2B,CAAC;AAE5D,iFAAiF;AACjF,eAAO,MAAM,aAAa,GAAI,UAAU,MAAM,KAAG,SAAS,MAAM,EAG/D,CAAC"}
1
+ {"version":3,"file":"package-dirs.d.ts","sourceRoot":"","sources":["../src/package-dirs.ts"],"names":[],"mappings":"AAcA,iEAAiE;AACjE,eAAO,MAAM,UAAU,QAAO,MACyB,CAAC;AAExD,sFAAsF;AACtF,eAAO,MAAM,YAAY,QAAO,MAC2B,CAAC;AAE5D,iFAAiF;AACjF,eAAO,MAAM,aAAa,GAAI,UAAU,MAAM,KAAG,SAAS,MAAM,EAG/D,CAAC"}
@@ -6,8 +6,9 @@
6
6
  * presets/ the venue presets (`paperlint:<name>`) and their JSON Schema
7
7
  * presets/tex/ the LaTeX inputs `paperlint build` puts on TEXINPUTS
8
8
  *
9
- * `texSearchPath` is where an `\input` is looked for, in order. The build hands it to TeX and the
10
- * lint rules read includes through it, so the two cannot disagree about which file a paper means.
9
+ * `texSearchPath` is where an `\input` is looked for, in order. The build hands it to TeX; lint does
10
+ * not search for an include at all — it reads the files TeX read, from the build's record
11
+ * (docs/design/paper-sources.md §1).
11
12
  */
12
13
  import { fileURLToPath } from "node:url";
13
14
  /** The shipped venue presets and `venue-profile.schema.json`. */
@@ -1 +1 @@
1
- {"version":3,"file":"package-dirs.js","sourceRoot":"","sources":["../src/package-dirs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,iEAAiE;AACjE,MAAM,CAAC,MAAM,UAAU,GAAG,GAAW,EAAE,CACrC,aAAa,CAAC,IAAI,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAExD,sFAAsF;AACtF,MAAM,CAAC,MAAM,YAAY,GAAG,GAAW,EAAE,CACvC,aAAa,CAAC,IAAI,GAAG,CAAC,gBAAgB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE5D,iFAAiF;AACjF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,QAAgB,EAAqB,EAAE,CAAC;IACpE,QAAQ;IACR,YAAY,EAAE;CACf,CAAC"}
1
+ {"version":3,"file":"package-dirs.js","sourceRoot":"","sources":["../src/package-dirs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,iEAAiE;AACjE,MAAM,CAAC,MAAM,UAAU,GAAG,GAAW,EAAE,CACrC,aAAa,CAAC,IAAI,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAExD,sFAAsF;AACtF,MAAM,CAAC,MAAM,YAAY,GAAG,GAAW,EAAE,CACvC,aAAa,CAAC,IAAI,GAAG,CAAC,gBAAgB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE5D,iFAAiF;AACjF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,QAAgB,EAAqB,EAAE,CAAC;IACpE,QAAQ;IACR,YAAY,EAAE;CACf,CAAC"}
@@ -1,20 +1,17 @@
1
1
  import type { AbsolutePath } from "./domain/paths.ts";
2
+ import { type RecordReadDeps } from "./paper-record.ts";
2
3
  import type { ConfigBlock } from "./rules-config.ts";
3
- import { type PaperDeps, type Unread } from "./tex-paper.ts";
4
4
  /** The files the fragment block (`buildConfig`) claims: the only body files ESLint is handed. */
5
5
  export declare const FRAGMENT_FILES: readonly string[];
6
- /** One paper's main file and body files, and the includes that resolved nowhere. */
6
+ /** One paper's main file and the body files of its last build. */
7
7
  export interface PaperBody {
8
8
  readonly dir: string;
9
9
  readonly main: AbsolutePath;
10
- /** The body files ESLint lints, each as a fragment: the `.tex` ones. */
10
+ /** The body files ESLint lints, each as a fragment: the `.tex` ones TeX did not write. None without a fresh record. */
11
11
  readonly files: readonly AbsolutePath[];
12
- readonly missing: readonly Unread[];
13
12
  }
14
13
  /** The body of each paper directory in `dirs` that has a `paper.tex`. */
15
- export declare function paperBodies(dirs: readonly string[], deps: PaperDeps): readonly PaperBody[];
14
+ export declare function paperBodies(dirs: readonly string[], deps: RecordReadDeps): readonly PaperBody[];
16
15
  /** The config blocks that hand ESLint each paper's body files, and the paper to every one of them. */
17
16
  export declare const includeBlocks: (bodies: readonly PaperBody[]) => readonly ConfigBlock[];
18
- /** One line per include that resolved nowhere: which text lint did not read, and why. */
19
- export declare const unreadLines: (bodies: readonly PaperBody[], shown: (path: string) => string) => readonly string[];
20
17
  //# sourceMappingURL=paper-includes.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"paper-includes.d.ts","sourceRoot":"","sources":["../src/paper-includes.ts"],"names":[],"mappings":"AA8BA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAa,KAAK,SAAS,EAAE,KAAK,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAExE,iGAAiG;AACjG,eAAO,MAAM,cAAc,EAAE,SAAS,MAAM,EAAiB,CAAC;AAK9D,oFAAoF;AACpF,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,wEAAwE;IACxE,QAAQ,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,CAAC;IACxC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC;AAED,yEAAyE;AACzE,wBAAgB,WAAW,CACzB,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,IAAI,EAAE,SAAS,GACd,SAAS,SAAS,EAAE,CAStB;AAED,sGAAsG;AACtG,eAAO,MAAM,aAAa,GACxB,QAAQ,SAAS,SAAS,EAAE,KAC3B,SAAS,WAAW,EAcnB,CAAC;AAEL,yFAAyF;AACzF,eAAO,MAAM,WAAW,GACtB,QAAQ,SAAS,SAAS,EAAE,EAC5B,OAAO,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,KAC9B,SAAS,MAAM,EAOf,CAAC"}
1
+ {"version":3,"file":"paper-includes.d.ts","sourceRoot":"","sources":["../src/paper-includes.ts"],"names":[],"mappings":"AAuCA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,iGAAiG;AACjG,eAAO,MAAM,cAAc,EAAE,SAAS,MAAM,EAAiB,CAAC;AAK9D,kEAAkE;AAClE,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,uHAAuH;IACvH,QAAQ,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,CAAC;CACzC;AAED,yEAAyE;AACzE,wBAAgB,WAAW,CACzB,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,IAAI,EAAE,cAAc,GACnB,SAAS,SAAS,EAAE,CActB;AAED,sGAAsG;AACtG,eAAO,MAAM,aAAa,GACxB,QAAQ,SAAS,SAAS,EAAE,KAC3B,SAAS,WAAW,EAcnB,CAAC"}
@@ -2,10 +2,12 @@
2
2
  * THE FILES OF A PAPER'S BODY, handed to ESLint — so the rules over ESLint's LaTeX text read a paper
3
3
  * whose body is in `sections/*.tex`, and report each finding at its own file and line (#144).
4
4
  *
5
- * The set is what TeX reads, resolved by the reader the parse-tree rules use (`bodyFiles`,
6
- * src/tex-paper.ts): `paper.tex` and every file an include in its document body brings in, found in
7
- * the paper's directory. Not a glob over every `.tex`: a frozen version under `versions/`, a macro
8
- * file the preamble includes and a scratch file nothing includes are not the paper.
5
+ * The set is what TeX read, as the last build recorded it (`_build/sources.json`, `paperRecord` in
6
+ * src/paper-record.ts): `paper.tex` and the `.tex` files of the paper directory TeX read after
7
+ * `\\begin{document}`. Nothing here reads TeX source or looks for an include on disk. Not a glob over
8
+ * every `.tex`: a frozen version under `versions/`, a macro file the preamble includes and a scratch
9
+ * file nothing includes are not the paper. A paper with no record, or one it has changed since, is
10
+ * `paper.tex` alone — `paper/sources-fresh` (src/sources-rules.ts) says the rest went unlinted.
9
11
  *
10
12
  * Two blocks per paper, both relative to the paper's directory (`basePath`):
11
13
  *
@@ -16,19 +18,26 @@
16
18
  * for the rules whose verdict is the paper's (eslint-rules/paper-context.ts).
17
19
  *
18
20
  * ── ONLY `.tex` FILES ARE HANDED TO ESLint (#153) ────────────────────────────────
19
- * An include may resolve to a file of another extension: `\input{paper.bbl}` in a paper that ships
20
- * bibtex's output instead of a `.bib`, a plot exported as `.pgf`. Handed to ESLint, such a file got
21
- * no language — the fragment block claims `.tex` only — and the JavaScript parser stopped at its
22
- * first `%`. It is not given the LaTeX language either: the fragment rules judge and `--fix` the
23
- * prose an author writes in that file, and a file of another extension is in practice a tool's
24
- * output, whose words are someone else's (the titles of cited works) and whose fix the next run of
25
- * the tool overwrites. TeX still reads it, and so does `readPaper`: the rules over the whole paper
26
- * see it spliced into `paper.tex`, where TeX typesets it.
21
+ * TeX may read a body file of another extension: `\\input{paper.bbl}` in a paper that ships bibtex's
22
+ * output instead of a `.bib`, a plot exported as `.pgf`. Handed to ESLint, such a file got no
23
+ * language — the fragment block claims `.tex` only — and the JavaScript parser stopped at its first
24
+ * `%`. It is not given the LaTeX language either: the fragment rules judge and `--fix` the prose an
25
+ * author writes in that file, and a file of another extension is in practice a tool's output, whose
26
+ * words are someone else's (the titles of cited works) and whose fix the next run of the tool
27
+ * overwrites. TeX still reads it, and so does `readPaper`: the rules over the whole paper see it
28
+ * spliced into `paper.tex`, where TeX typesets it.
29
+ *
30
+ * ── NOR IS A `.tex` TeX WROTE ────────────────────────────────────────────────────
31
+ * A `filecontents` block may write a `.tex` the body `\\input`s (the record lists it as an input and
32
+ * as written, src/domain/tex-run.ts). Its words are the block's, which the author edits in the file
33
+ * holding the block; a fix made in the written copy is overwritten by an `[overwrite]` block on the next
34
+ * build, and splits the copy from the block without one. So it is read the way TeX reads it — spliced by
35
+ * `readPaper`, for the rules over the whole paper — and is not handed to ESLint as a file of its own.
27
36
  */
28
37
  import { extname, join, relative } from "node:path";
29
38
  import { PAPERLINT_SETTINGS } from "#eslint-rules/paper-context";
30
39
  import { callerPath } from "./caller-path.js";
31
- import { bodyFiles } from "./tex-paper.js";
40
+ import { paperRecord, recordedFiles, } from "./paper-record.js";
32
41
  /** The files the fragment block (`buildConfig`) claims: the only body files ESLint is handed. */
33
42
  export const FRAGMENT_FILES = ["**/*.tex"];
34
43
  /** Whether a body file is one the fragment block claims — the extension its glob names. */
@@ -37,12 +46,14 @@ const isFragment = (file) => extname(file) === ".tex";
37
46
  export function paperBodies(dirs, deps) {
38
47
  return dirs.flatMap((dir) => {
39
48
  const main = callerPath(join(dir, "paper.tex"));
40
- const bytes = deps.files.readBytes(main);
41
- if (bytes === null)
49
+ if (!deps.files.isFile(main))
42
50
  return [];
43
- const body = bodyFiles(main, new TextDecoder().decode(bytes), deps);
44
- const files = body.files.filter(isFragment);
45
- return [{ dir, main, files, missing: body.missing }];
51
+ const record = paperRecord(dir, deps);
52
+ if (record.kind !== "fresh")
53
+ return [{ dir, main, files: [] }];
54
+ const written = new Set(record.record.written.map((w) => callerPath(join(dir, w))));
55
+ const files = recordedFiles(dir, record.record, "body").filter((f) => f !== main && isFragment(f) && !written.has(f));
56
+ return [{ dir, main, files }];
46
57
  });
47
58
  }
48
59
  /** The config blocks that hand ESLint each paper's body files, and the paper to every one of them. */
@@ -60,7 +71,4 @@ export const includeBlocks = (bodies) => bodies.flatMap((b) => {
60
71
  },
61
72
  ];
62
73
  });
63
- /** One line per include that resolved nowhere: which text lint did not read, and why. */
64
- export const unreadLines = (bodies, shown) => bodies.flatMap((b) => b.missing.map((m) => `${shown(b.main)}: lint did not read \`${m.target}\` (included by ${m.file}): ` +
65
- "no such file in the paper's directory or paperlint's inputs"));
66
74
  //# sourceMappingURL=paper-includes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"paper-includes.js","sourceRoot":"","sources":["../src/paper-includes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"paper-includes.js","sourceRoot":"","sources":["../src/paper-includes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EACL,WAAW,EACX,aAAa,GAEd,MAAM,mBAAmB,CAAC;AAG3B,iGAAiG;AACjG,MAAM,CAAC,MAAM,cAAc,GAAsB,CAAC,UAAU,CAAC,CAAC;AAE9D,2FAA2F;AAC3F,MAAM,UAAU,GAAG,CAAC,IAAY,EAAW,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC;AAUvE,yEAAyE;AACzE,MAAM,UAAU,WAAW,CACzB,IAAuB,EACvB,IAAoB;IAEpB,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;QAC1B,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC;QAChD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;YAAE,OAAO,EAAE,CAAC;QACxC,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACtC,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO;YAAE,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;QAC/D,MAAM,OAAO,GAAG,IAAI,GAAG,CACrB,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAC3D,CAAC;QACF,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,MAAM,CAC5D,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CACtD,CAAC;QACF,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,sGAAsG;AACtG,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,MAA4B,EACJ,EAAE,CAC1B,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;IACnB,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;IACnD,MAAM,KAAK,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;IAC5D,OAAO;QACL,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC;YAChB,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;YACzD,CAAC,CAAC,EAAE,CAAC;QACP;YACE,QAAQ,EAAE,CAAC,CAAC,GAAG;YACf,KAAK,EAAE,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC;YAC5B,QAAQ,EAAE,EAAE,CAAC,kBAAkB,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE;SAC9C;KACF,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -1,4 +1,4 @@
1
- import { type PaperDeps } from "./tex-paper.ts";
1
+ import { type ProseDeps } from "./tex-paper.ts";
2
2
  /**
3
3
  * A paper's body prose, one passage per paragraph, its section titles in document order, and the
4
4
  * text of each file it is made of — `paper.tex` and every file it includes, once, named as the
@@ -13,5 +13,5 @@ export interface PaperProse {
13
13
  }[];
14
14
  }
15
15
  /** The prose and the headings of the paper whose main file is `filename` with the text `src`. */
16
- export declare function paperProse(filename: string, src: string, deps: PaperDeps): PaperProse;
16
+ export declare function paperProse(filename: string, src: string, deps: ProseDeps): PaperProse;
17
17
  //# sourceMappingURL=paper-prose.d.ts.map
@@ -0,0 +1,25 @@
1
+ import type { AbsolutePath } from "./domain/paths.ts";
2
+ import { type Change, type InputRole, type SourcesRecord } from "./domain/sources-record.ts";
3
+ import type { Files } from "./ports/files.ts";
4
+ import type { SourcesCodec } from "./ports/sources-codec.ts";
5
+ export type PaperRecord =
6
+ /** No record, or one that cannot be read (`unreadable` says why; null for no file). */
7
+ {
8
+ readonly kind: "none";
9
+ readonly unreadable: string | null;
10
+ } | {
11
+ readonly kind: "stale";
12
+ readonly changed: readonly Change[];
13
+ } | {
14
+ readonly kind: "fresh";
15
+ readonly record: SourcesRecord;
16
+ };
17
+ /** What reading a record needs: the disk, and the schema its text is parsed with. */
18
+ export interface RecordReadDeps {
19
+ readonly files: Files;
20
+ readonly codec: SourcesCodec;
21
+ }
22
+ export declare function paperRecord(dir: string, deps: RecordReadDeps): PaperRecord;
23
+ /** The files of `role` the record lists, as absolute paths, in the order TeX first read them. */
24
+ export declare const recordedFiles: (dir: string, record: SourcesRecord, role: InputRole) => readonly AbsolutePath[];
25
+ //# sourceMappingURL=paper-record.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paper-record.d.ts","sourceRoot":"","sources":["../src/paper-record.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,OAAO,EAEL,KAAK,MAAM,EACX,KAAK,SAAS,EACd,KAAK,aAAa,EACnB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAG7D,MAAM,MAAM,WAAW;AACrB,uFAAuF;AACrF;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAC7D;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GAC/D;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAA;CAAE,CAAC;AAU/D,qFAAqF;AACrF,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;CAC9B;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,GAAG,WAAW,CAS1E;AAED,iGAAiG;AACjG,eAAO,MAAM,aAAa,GACxB,KAAK,MAAM,EACX,QAAQ,aAAa,EACrB,MAAM,SAAS,KACd,SAAS,YAAY,EAGyB,CAAC"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * `paperRecord(dir)` — what every consumer of the build's record asks first: is there a record of
3
+ * this paper, and is it still about the files on disk? The answer is one of three states, and the
4
+ * rules that depend on the record are silent in two of them (docs/design/paper-sources.md §1):
5
+ *
6
+ * none no `_build/sources.json`, or one this paperlint cannot read — the paper was not built
7
+ * stale a file the build read has other bytes now (`changed` names them)
8
+ * fresh every file is as the build hashed it; the record is TeX's answer for this paper
9
+ *
10
+ * Reads through the `Files` port alone; the one paperlint-specific question — which files make a
11
+ * record stale — is `changesSince` (`src/domain/sources-record.ts`).
12
+ */
13
+ import { resolve } from "node:path";
14
+ import { callerPath } from "./caller-path.js";
15
+ import { sha256Hex } from "./domain/sha256.js";
16
+ import { changesSince, } from "./domain/sources-record.js";
17
+ import { sourcesPath } from "./sources-record.js";
18
+ /** The digest of the file at `path` in the paper directory now, or null when there is none. */
19
+ const digestOf = (dir, files) => (path) => {
20
+ const b = files.readBytes(callerPath(resolve(dir, path)));
21
+ return b === null ? null : sha256Hex(b);
22
+ };
23
+ export function paperRecord(dir, deps) {
24
+ const raw = deps.files.readBytes(callerPath(sourcesPath(dir)));
25
+ if (raw === null)
26
+ return { kind: "none", unreadable: null };
27
+ const parsed = deps.codec.parse(new TextDecoder().decode(raw));
28
+ if (!parsed.ok)
29
+ return { kind: "none", unreadable: parsed.why };
30
+ const changed = changesSince(parsed.record, digestOf(dir, deps.files));
31
+ return changed.length === 0
32
+ ? { kind: "fresh", record: parsed.record }
33
+ : { kind: "stale", changed };
34
+ }
35
+ /** The files of `role` the record lists, as absolute paths, in the order TeX first read them. */
36
+ export const recordedFiles = (dir, record, role) => record.inputs
37
+ .filter((i) => i.role === role)
38
+ .map((i) => callerPath(resolve(dir, i.path)));
39
+ //# sourceMappingURL=paper-record.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paper-record.js","sourceRoot":"","sources":["../src/paper-record.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAE,SAAS,EAAe,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EACL,YAAY,GAIb,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAQlD,+FAA+F;AAC/F,MAAM,QAAQ,GACZ,CAAC,GAAW,EAAE,KAAY,EAAE,EAAE,CAC9B,CAAC,IAAY,EAAiB,EAAE;IAC9B,MAAM,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAC1D,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC1C,CAAC,CAAC;AAQJ,MAAM,UAAU,WAAW,CAAC,GAAW,EAAE,IAAoB;IAC3D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC/D,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;IAC5D,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/D,IAAI,CAAC,MAAM,CAAC,EAAE;QAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC;IAChE,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACvE,OAAO,OAAO,CAAC,MAAM,KAAK,CAAC;QACzB,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE;QAC1C,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AACjC,CAAC;AAED,iGAAiG;AACjG,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,GAAW,EACX,MAAqB,EACrB,IAAe,EACU,EAAE,CAC3B,MAAM,CAAC,MAAM;KACV,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC;KAC9B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC"}
@@ -0,0 +1,66 @@
1
+ import { type BibText } from "./domain/paper-sources.ts";
2
+ import type { AbsolutePath } from "./domain/paths.ts";
3
+ import { type Result } from "./domain/result.ts";
4
+ import type { PaperRecord } from "./paper-record.ts";
5
+ import { type RecordedDeps } from "./recorded-bibliography.ts";
6
+ /** What a path a person gave comes to: where the paper is, and the texts to read. */
7
+ export interface PathBibliography {
8
+ /** The `.bib`'s directory, the `.tex`'s, or the directory named. */
9
+ readonly paperDir: AbsolutePath;
10
+ readonly texts: readonly [BibText, ...BibText[]];
11
+ }
12
+ /** Why a path a person gave has no bibliography to read. One vocabulary for every caller. */
13
+ export type BibliographyUnread =
14
+ /** A `.bib` or `.tex` named that is not there. */
15
+ {
16
+ readonly kind: "missing";
17
+ readonly path: AbsolutePath;
18
+ }
19
+ /** A file that is neither a `.bib` nor a `.tex`. */
20
+ | {
21
+ readonly kind: "not-bib-or-tex";
22
+ readonly path: AbsolutePath;
23
+ }
24
+ /** Not a file, and no `paper.tex` in it. */
25
+ | {
26
+ readonly kind: "no-paper";
27
+ readonly path: AbsolutePath;
28
+ }
29
+ /** A paper with no current record of a build: what bibtex read is not known (`state` says why). */
30
+ | {
31
+ readonly kind: "not-built";
32
+ readonly dir: AbsolutePath;
33
+ readonly state: Exclude<PaperRecord, {
34
+ readonly kind: "fresh";
35
+ }>;
36
+ }
37
+ /** A paper whose last build's bibtex read no database, or whose databases are not on disk now. */
38
+ | {
39
+ readonly kind: "no-database";
40
+ readonly dir: AbsolutePath;
41
+ /** The databases bibtex opened: none when it ran none. */
42
+ readonly opened: readonly string[];
43
+ }
44
+ /**
45
+ * A paper whose last build's bibtex also opened databases the paper directory does not hold — found
46
+ * on its search path (BIBINPUTS). Reading the others alone would leave every entry of these out.
47
+ */
48
+ | {
49
+ readonly kind: "outside-paper";
50
+ readonly dir: AbsolutePath;
51
+ /** As bibtex names them. */
52
+ readonly unread: readonly [string, ...string[]];
53
+ };
54
+ /**
55
+ * THE answer to "a path a person gave → the bibliography to read", for every script that takes one: a
56
+ * `.bib` is read alone, as named; a `.tex`, or a directory holding `paper.tex`, is the bibliography the
57
+ * last build's bibtex opened for that paper (`_build/sources.json`) — never a guess by file name, and
58
+ * never read out of TeX source. A paper with no current record is refused: run `npx paperlint build`
59
+ * first, and so is one whose bibtex also opened a database outside the paper directory — a part of the
60
+ * bibliography is not given as the whole. Anything else is refused in the words `bibliographyUnreadWhy`
61
+ * gives.
62
+ */
63
+ export declare function bibliographyAt(path: AbsolutePath, deps: RecordedDeps): Result<PathBibliography, BibliographyUnread>;
64
+ /** One sentence: why `bibliographyAt` refused, naming the path and what to give instead. */
65
+ export declare function bibliographyUnreadWhy(e: BibliographyUnread): string;
66
+ //# sourceMappingURL=paper-sources.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paper-sources.d.ts","sourceRoot":"","sources":["../src/paper-sources.ts"],"names":[],"mappings":"AASA,OAAO,EAAa,KAAK,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAW,KAAK,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAGL,KAAK,YAAY,EAClB,MAAM,4BAA4B,CAAC;AAMpC,qFAAqF;AACrF,MAAM,WAAW,gBAAgB;IAC/B,oEAAoE;IACpE,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;IAChC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;CAClD;AAED,6FAA6F;AAC7F,MAAM,MAAM,kBAAkB;AAC5B,kDAAkD;AAChD;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAA;CAAE;AAC3D,oDAAoD;GAClD;IAAE,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAA;CAAE;AAClE,4CAA4C;GAC1C;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAA;CAAE;AAC5D,mGAAmG;GACjG;IACE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,WAAW,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CAClE;AACH,kGAAkG;GAChG;IACE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC;IAC3B,0DAA0D;IAC1D,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC;AACH;;;GAGG;GACD;IACE,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC;IAC3B,4BAA4B;IAC5B,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;CACjD,CAAC;AAwBN;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,YAAY,EAClB,IAAI,EAAE,YAAY,GACjB,MAAM,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,CAgB9C;AAmBD,4FAA4F;AAC5F,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,kBAAkB,GAAG,MAAM,CAiBnE"}
@@ -0,0 +1,92 @@
1
+ /**
2
+ * `bibliographyAt(path)` — the one answer to "a path a person gave → the bibliography to read", for
3
+ * every script that takes one (`extract-ref-facts`, `bib-authors`, `verify-cites`). A `.bib` is read
4
+ * alone, as named; a `.tex`, or a directory holding `paper.tex`, is the bibliography the last build's
5
+ * bibtex opened for that paper — TeX's answer, from `_build/sources.json` (docs/design/paper-sources.md
6
+ * §1), never read out of TeX source.
7
+ */
8
+ import { dirname, extname, join } from "node:path";
9
+ import { callerPath } from "./caller-path.js";
10
+ import { MAIN_FILE } from "./domain/paper-sources.js";
11
+ import { err, ok } from "./domain/result.js";
12
+ import { describeChanges } from "./domain/sources-record.js";
13
+ import { authoredTexts, recordedBibliography, } from "./recorded-bibliography.js";
14
+ const decoded = (b) => new TextDecoder().decode(b);
15
+ /** The texts of the paper in `dir` the last build's bibtex read, or why there are none. */
16
+ function ofPaper(dir, deps) {
17
+ const r = recordedBibliography(dir, deps);
18
+ if (r.kind === "unrecorded")
19
+ return err({ kind: "not-built", dir, state: r.record });
20
+ const [first, ...rest] = authoredTexts(dir, r, deps);
21
+ if (first === undefined)
22
+ return err({
23
+ kind: "no-database",
24
+ dir,
25
+ opened: r.record.bibtex.ran ? r.record.bibtex.databases : [],
26
+ });
27
+ // Some databases read and some not is no bibliography: a script would report on part of it as on all.
28
+ const [outside, ...more] = r.unread;
29
+ return outside === undefined
30
+ ? ok({ paperDir: dir, texts: [first, ...rest] })
31
+ : err({ kind: "outside-paper", dir, unread: [outside, ...more] });
32
+ }
33
+ /**
34
+ * THE answer to "a path a person gave → the bibliography to read", for every script that takes one: a
35
+ * `.bib` is read alone, as named; a `.tex`, or a directory holding `paper.tex`, is the bibliography the
36
+ * last build's bibtex opened for that paper (`_build/sources.json`) — never a guess by file name, and
37
+ * never read out of TeX source. A paper with no current record is refused: run `npx paperlint build`
38
+ * first, and so is one whose bibtex also opened a database outside the paper directory — a part of the
39
+ * bibliography is not given as the whole. Anything else is refused in the words `bibliographyUnreadWhy`
40
+ * gives.
41
+ */
42
+ export function bibliographyAt(path, deps) {
43
+ const ext = extname(path).toLowerCase();
44
+ if (ext === ".bib" || ext === ".tex") {
45
+ const bytes = deps.files.readBytes(path);
46
+ if (bytes === null)
47
+ return err({ kind: "missing", path });
48
+ return ext === ".bib"
49
+ ? ok({
50
+ paperDir: callerPath(dirname(path)),
51
+ texts: [deps.bib.readFile(path, decoded(bytes))],
52
+ })
53
+ : ofPaper(callerPath(dirname(path)), deps);
54
+ }
55
+ if (deps.files.isFile(path))
56
+ return err({ kind: "not-bib-or-tex", path });
57
+ return deps.files.readBytes(callerPath(join(path, MAIN_FILE))) === null
58
+ ? err({ kind: "no-paper", path })
59
+ : ofPaper(path, deps);
60
+ }
61
+ const BUILD = "run `npx paperlint build` first";
62
+ /** Why a paper has no current record, in words a person can act on. */
63
+ function notBuiltWhy(dir, s) {
64
+ switch (s.kind) {
65
+ case "none":
66
+ return s.unreadable === null
67
+ ? `${dir} has not been built — ${BUILD}, which records the databases bibtex reads`
68
+ : `the last build's record of ${dir} cannot be used (${s.unreadable}) — ${BUILD}`;
69
+ case "stale":
70
+ return `${dir} changed since the last build (${describeChanges(s.changed)}) — ${BUILD}`;
71
+ }
72
+ }
73
+ /** One sentence: why `bibliographyAt` refused, naming the path and what to give instead. */
74
+ export function bibliographyUnreadWhy(e) {
75
+ switch (e.kind) {
76
+ case "missing":
77
+ return `${e.path} does not exist — nowhere to take a bibliography from`;
78
+ case "not-bib-or-tex":
79
+ return `${e.path} is neither a .bib nor a .tex — name the paper's directory, its .tex, or a .bib`;
80
+ case "no-paper":
81
+ return `no paper.tex in ${e.path} — name the paper's .tex, or a .bib to read it alone`;
82
+ case "not-built":
83
+ return notBuiltWhy(e.dir, e.state);
84
+ case "no-database":
85
+ return e.opened.length === 0
86
+ ? `bibtex read no database in the last build of ${e.dir} — there is nothing to read`
87
+ : `bibtex opened ${e.opened.join(", ")} in the last build of ${e.dir}, and none of them is on disk now`;
88
+ case "outside-paper":
89
+ return `bibtex opened ${e.unread.join(", ")} in the last build of ${e.dir} from outside it (its search path, BIBINPUTS), and paperlint reads only the paper's own databases — copy it into ${e.dir}, or name each .bib to read it alone`;
90
+ }
91
+ }
92
+ //# sourceMappingURL=paper-sources.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paper-sources.js","sourceRoot":"","sources":["../src/paper-sources.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * THE BIBTEX READER — the one way paperlint reads a `.bib` database. Every consumer (`recordedBibliography`,
3
+ * `bib/reachable-entry`, the build's reference check, `extract-ref-facts`, `bib-authors`) reads
4
+ * through it; the adapter is `src/adapters/bibtex/`.
5
+ *
6
+ * A database is read as bibtex reads it in its place among the paper's: `inherited` is the `@string`s
7
+ * the databases before it left in force (the previous one's `strings`), none for a database read alone.
8
+ */
9
+ import type { BibStrings, BibText } from "../domain/paper-sources.ts";
10
+ import type { AbsolutePath } from "../domain/paths.ts";
11
+ import type { Span } from "../domain/tex-document.ts";
12
+ export interface BibReader {
13
+ /** The database in `body` of `text`, the text of the file at `path`: a block in a `.tex`. */
14
+ readonly read: (path: AbsolutePath, text: string, body: Span, inherited?: BibStrings) => BibText;
15
+ /** A whole `.bib` file. */
16
+ readonly readFile: (path: AbsolutePath, text: string, inherited?: BibStrings) => BibText;
17
+ }
18
+ //# sourceMappingURL=bib-reader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bib-reader.d.ts","sourceRoot":"","sources":["../../src/ports/bib-reader.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,2BAA2B,CAAC;AAEtD,MAAM,WAAW,SAAS;IACxB,6FAA6F;IAC7F,QAAQ,CAAC,IAAI,EAAE,CACb,IAAI,EAAE,YAAY,EAClB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,IAAI,EACV,SAAS,CAAC,EAAE,UAAU,KACnB,OAAO,CAAC;IACb,2BAA2B;IAC3B,QAAQ,CAAC,QAAQ,EAAE,CACjB,IAAI,EAAE,YAAY,EAClB,IAAI,EAAE,MAAM,EACZ,SAAS,CAAC,EAAE,UAAU,KACnB,OAAO,CAAC;CACd"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=bib-reader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bib-reader.js","sourceRoot":"","sources":["../../src/ports/bib-reader.ts"],"names":[],"mappings":""}
@@ -4,8 +4,10 @@
4
4
  * passes a function.
5
5
  */
6
6
  import type { LookupCache } from "../domain/lookup-cache.ts";
7
+ import type { BibEntry } from "../domain/paper-sources.ts";
7
8
  /** What one bibliography entry came to. */
8
9
  export interface EntryVerdict {
10
+ /** The entry's key: a name for people, not its identity — two entries may share it. */
9
11
  readonly key: string;
10
12
  /**
11
13
  * Does the cited work exist, and does its title match? `false` only on a positive disproof (an
@@ -18,7 +20,9 @@ export interface EntryVerdict {
18
20
  /** Why, in one line, when either is not a plain pass. */
19
21
  readonly why?: string;
20
22
  }
21
- export type ReferencesCheck = {
23
+ export type ReferencesCheck =
24
+ /** One verdict per entry given, in the order given: verdict `i` is about entry `i`. */
25
+ {
22
26
  readonly kind: "checked";
23
27
  readonly entries: readonly EntryVerdict[];
24
28
  }
@@ -34,8 +38,9 @@ export interface ReferencesRun {
34
38
  readonly cache: LookupCache;
35
39
  }
36
40
  /**
37
- * The bibliography's text (BibTeX) and the paper's lookup cache → the verdicts, derived afresh from
38
- * cached and newly fetched answers. Never throws: a failure is `not-checked`.
41
+ * The bibliography's entries (as the bibtex reader read them) and the paper's lookup cache → the
42
+ * verdicts, one per entry in its order, derived afresh from cached and newly fetched answers. Never
43
+ * throws: a failure is `not-checked`.
39
44
  */
40
- export type CheckReferences = (bib: string, cache: LookupCache) => Promise<ReferencesRun>;
45
+ export type CheckReferences = (entries: readonly BibEntry[], cache: LookupCache) => Promise<ReferencesRun>;
41
46
  //# sourceMappingURL=check-references.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"check-references.d.ts","sourceRoot":"","sources":["../../src/ports/check-references.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAE7D,2CAA2C;AAC3C,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,cAAc,CAAC;IACnD,uEAAuE;IACvE,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,UAAU,GAAG,SAAS,GAAG,WAAW,CAAC;IACjE,yDAAyD;IACzD,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,MAAM,eAAe,GACvB;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,YAAY,EAAE,CAAA;CAAE;AACzE,6EAA6E;GAC3E;IAAE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3D,kFAAkF;AAClF,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC;IAChC,uGAAuG;IACvG,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;CAC7B;AAED;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG,CAC5B,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,WAAW,KACf,OAAO,CAAC,aAAa,CAAC,CAAC"}
1
+ {"version":3,"file":"check-references.d.ts","sourceRoot":"","sources":["../../src/ports/check-references.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAE3D,2CAA2C;AAC3C,MAAM,WAAW,YAAY;IAC3B,uFAAuF;IACvF,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,cAAc,CAAC;IACnD,uEAAuE;IACvE,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,UAAU,GAAG,SAAS,GAAG,WAAW,CAAC;IACjE,yDAAyD;IACzD,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,MAAM,eAAe;AACzB,uFAAuF;AACrF;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,YAAY,EAAE,CAAA;CAAE;AACzE,6EAA6E;GAC3E;IAAE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3D,kFAAkF;AAClF,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC;IAChC,uGAAuG;IACvG,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;CAC7B;AAED;;;;GAIG;AACH,MAAM,MAAM,eAAe,GAAG,CAC5B,OAAO,EAAE,SAAS,QAAQ,EAAE,EAC5B,KAAK,EAAE,WAAW,KACf,OAAO,CAAC,aAAa,CAAC,CAAC"}