paperlint 10.4.0 → 11.0.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 (232) hide show
  1. package/.github/workflows/deadlines.yml +27 -7
  2. package/README.md +16 -15
  3. package/dist/CLAUDE.md.spec.d.ts.map +1 -1
  4. package/dist/CLAUDE.md.spec.js +6 -3
  5. package/dist/CLAUDE.md.spec.js.map +1 -1
  6. package/dist/adapters/hotcrp/index.d.ts +6 -4
  7. package/dist/adapters/hotcrp/index.d.ts.map +1 -1
  8. package/dist/adapters/hotcrp/index.js +6 -4
  9. package/dist/adapters/hotcrp/index.js.map +1 -1
  10. package/dist/adapters/hotcrp/portal.io.d.ts +3 -1
  11. package/dist/adapters/hotcrp/portal.io.d.ts.map +1 -1
  12. package/dist/adapters/hotcrp/portal.io.js +36 -11
  13. package/dist/adapters/hotcrp/portal.io.js.map +1 -1
  14. package/dist/adapters/hotcrp/response.d.ts +6 -1
  15. package/dist/adapters/hotcrp/response.d.ts.map +1 -1
  16. package/dist/adapters/hotcrp/response.js +17 -0
  17. package/dist/adapters/hotcrp/response.js.map +1 -1
  18. package/dist/adapters/hotcrp/site.d.ts +9 -0
  19. package/dist/adapters/hotcrp/site.d.ts.map +1 -0
  20. package/dist/adapters/hotcrp/site.js +22 -0
  21. package/dist/adapters/hotcrp/site.js.map +1 -0
  22. package/dist/adapters/hotcrp/token.d.ts +13 -0
  23. package/dist/adapters/hotcrp/token.d.ts.map +1 -0
  24. package/dist/adapters/hotcrp/token.js +48 -0
  25. package/dist/adapters/hotcrp/token.js.map +1 -0
  26. package/dist/adapters/latex/abstract.d.ts +22 -0
  27. package/dist/adapters/latex/abstract.d.ts.map +1 -0
  28. package/dist/adapters/latex/abstract.js +187 -0
  29. package/dist/adapters/latex/abstract.js.map +1 -0
  30. package/dist/adapters/latex/captions.d.ts +9 -0
  31. package/dist/adapters/latex/captions.d.ts.map +1 -0
  32. package/dist/adapters/latex/captions.js +40 -0
  33. package/dist/adapters/latex/captions.js.map +1 -0
  34. package/dist/adapters/latex/headings.d.ts +6 -0
  35. package/dist/adapters/latex/headings.d.ts.map +1 -1
  36. package/dist/adapters/latex/headings.js +5 -4
  37. package/dist/adapters/latex/headings.js.map +1 -1
  38. package/dist/adapters/latex/index.d.ts +1 -0
  39. package/dist/adapters/latex/index.d.ts.map +1 -1
  40. package/dist/adapters/latex/index.js +3 -0
  41. package/dist/adapters/latex/index.js.map +1 -1
  42. package/dist/adapters/latex/parse.d.ts +15 -0
  43. package/dist/adapters/latex/parse.d.ts.map +1 -1
  44. package/dist/adapters/latex/parse.js +64 -1
  45. package/dist/adapters/latex/parse.js.map +1 -1
  46. package/dist/adapters/node/list-entries.io.d.ts.map +1 -1
  47. package/dist/adapters/node/list-entries.io.js +3 -1
  48. package/dist/adapters/node/list-entries.io.js.map +1 -1
  49. package/dist/cli.d.ts.map +1 -1
  50. package/dist/cli.js +20 -8
  51. package/dist/cli.js.map +1 -1
  52. package/dist/cycle-rules.d.ts.map +1 -1
  53. package/dist/cycle-rules.js +3 -4
  54. package/dist/cycle-rules.js.map +1 -1
  55. package/dist/domain/deadline.d.ts +8 -1
  56. package/dist/domain/deadline.d.ts.map +1 -1
  57. package/dist/domain/deadline.js +26 -12
  58. package/dist/domain/deadline.js.map +1 -1
  59. package/dist/domain/decide-first.d.ts +11 -1
  60. package/dist/domain/decide-first.d.ts.map +1 -1
  61. package/dist/domain/decide-first.js +6 -0
  62. package/dist/domain/decide-first.js.map +1 -1
  63. package/dist/domain/index-columns.d.ts.map +1 -1
  64. package/dist/domain/index-columns.js +2 -0
  65. package/dist/domain/index-columns.js.map +1 -1
  66. package/dist/domain/portal-token.d.ts +44 -0
  67. package/dist/domain/portal-token.d.ts.map +1 -0
  68. package/dist/domain/portal-token.js +32 -0
  69. package/dist/domain/portal-token.js.map +1 -0
  70. package/dist/domain/study-registry.d.ts +65 -8
  71. package/dist/domain/study-registry.d.ts.map +1 -1
  72. package/dist/domain/study-registry.js +63 -19
  73. package/dist/domain/study-registry.js.map +1 -1
  74. package/dist/domain/submission.d.ts +30 -0
  75. package/dist/domain/submission.d.ts.map +1 -1
  76. package/dist/domain/submission.js +68 -0
  77. package/dist/domain/submission.js.map +1 -1
  78. package/dist/lib/paper-config.d.ts +1 -1
  79. package/dist/lib/paper-config.d.ts.map +1 -1
  80. package/dist/lib/paper-config.js +6 -4
  81. package/dist/lib/paper-config.js.map +1 -1
  82. package/dist/outputs-before-decision-rule.d.ts +1 -1
  83. package/dist/outputs-before-decision-rule.d.ts.map +1 -1
  84. package/dist/outputs-before-decision-rule.js +21 -17
  85. package/dist/outputs-before-decision-rule.js.map +1 -1
  86. package/dist/paper-settings.d.ts +3 -1
  87. package/dist/paper-settings.d.ts.map +1 -1
  88. package/dist/paper-settings.js +11 -5
  89. package/dist/paper-settings.js.map +1 -1
  90. package/dist/ports/latex.d.ts +23 -0
  91. package/dist/ports/latex.d.ts.map +1 -1
  92. package/dist/ports/list-entries.d.ts +7 -4
  93. package/dist/ports/list-entries.d.ts.map +1 -1
  94. package/dist/ports/study-deps.d.ts +14 -0
  95. package/dist/ports/study-deps.d.ts.map +1 -0
  96. package/dist/ports/study-deps.js +2 -0
  97. package/dist/ports/study-deps.js.map +1 -0
  98. package/dist/ports/study-folder.d.ts +43 -0
  99. package/dist/ports/study-folder.d.ts.map +1 -0
  100. package/dist/ports/study-folder.js +2 -0
  101. package/dist/ports/study-folder.js.map +1 -0
  102. package/dist/ports/submission-portal.d.ts +39 -2
  103. package/dist/ports/submission-portal.d.ts.map +1 -1
  104. package/dist/ports/venue-deadlines.d.ts +1 -1
  105. package/dist/presets.d.ts +1 -2
  106. package/dist/presets.d.ts.map +1 -1
  107. package/dist/presets.js +1 -2
  108. package/dist/presets.js.map +1 -1
  109. package/dist/studies.d.ts.map +1 -1
  110. package/dist/studies.js +10 -7
  111. package/dist/studies.js.map +1 -1
  112. package/dist/study-folder.d.ts +14 -0
  113. package/dist/study-folder.d.ts.map +1 -0
  114. package/dist/study-folder.js +123 -0
  115. package/dist/study-folder.js.map +1 -0
  116. package/dist/study-gate.d.ts +1 -1
  117. package/dist/study-gate.d.ts.map +1 -1
  118. package/dist/study-gate.js +65 -28
  119. package/dist/study-gate.js.map +1 -1
  120. package/dist/study-index-input.d.ts +1 -1
  121. package/dist/study-index-input.d.ts.map +1 -1
  122. package/dist/study-index-input.js +8 -3
  123. package/dist/study-index-input.js.map +1 -1
  124. package/dist/study-modes.d.ts +38 -27
  125. package/dist/study-modes.d.ts.map +1 -1
  126. package/dist/study-modes.js +42 -53
  127. package/dist/study-modes.js.map +1 -1
  128. package/dist/study-registry-rule.d.ts +2 -6
  129. package/dist/study-registry-rule.d.ts.map +1 -1
  130. package/dist/study-registry-rule.js +32 -41
  131. package/dist/study-registry-rule.js.map +1 -1
  132. package/dist/submission.d.ts +49 -11
  133. package/dist/submission.d.ts.map +1 -1
  134. package/dist/submission.js +332 -44
  135. package/dist/submission.js.map +1 -1
  136. package/docs/configuration.md +2 -1
  137. package/docs/design/study-modes.md +46 -28
  138. package/docs/rules/cycle/record.md +9 -6
  139. package/docs/rules/repro/outputs-before-decision.md +3 -0
  140. package/docs/rules/repro/study-registered.md +3 -2
  141. package/docs/rules/tex/heading-case.md +1 -1
  142. package/docs/submission.md +47 -48
  143. package/eslint.config.mjs +39 -24
  144. package/lib/paper-config.ts +7 -4
  145. package/package.json +6 -1
  146. package/presets/msr.jsonc +9 -7
  147. package/presets/msr.md +14 -10
  148. package/scripts/check.ts +1 -1
  149. package/scripts/refresh-deadlines/compare.test.ts +75 -0
  150. package/scripts/refresh-deadlines/compare.ts +101 -0
  151. package/scripts/refresh-deadlines/main.test.ts +140 -0
  152. package/scripts/refresh-deadlines/main.ts +56 -0
  153. package/scripts/refresh-deadlines/refresh.test.ts +287 -0
  154. package/scripts/refresh-deadlines/refresh.ts +183 -0
  155. package/skills/grade-paper-writing/SKILL.md +4 -2
  156. package/skills/grade-paper-writing/SKILL.md.spec.ts +3 -1
  157. package/skills/grade-paper-writing/__snapshots__/prose-lint.test.ts.snap +16 -3
  158. package/skills/grade-paper-writing/prose-lint.mjs +127 -95
  159. package/skills/grade-paper-writing/prose-lint.test.ts +119 -10
  160. package/skills/submission-portal/SKILL.md +60 -44
  161. package/skills/submission-portal/SKILL.md.spec.ts +62 -43
  162. package/skills/submission-portal/submission-portal.test.ts +4 -73
  163. package/src/CLAUDE.md +7 -4
  164. package/src/CLAUDE.md.spec.ts +6 -3
  165. package/src/adapters/hotcrp/cassette/README.md +4 -4
  166. package/src/adapters/hotcrp/cassette/deadlines-msr2027.html +9 -9
  167. package/src/adapters/hotcrp/deadlines.io.test.ts +2 -2
  168. package/src/adapters/hotcrp/deadlines.test.ts +3 -3
  169. package/src/adapters/hotcrp/index.ts +15 -3
  170. package/src/adapters/hotcrp/portal.io.ts +61 -17
  171. package/src/adapters/hotcrp/portal.test.ts +105 -1
  172. package/src/adapters/hotcrp/response.ts +21 -0
  173. package/src/adapters/hotcrp/site.ts +34 -0
  174. package/src/adapters/hotcrp/token.test.ts +69 -0
  175. package/src/adapters/hotcrp/token.ts +51 -0
  176. package/src/adapters/latex/abstract.test.ts +280 -0
  177. package/src/adapters/latex/abstract.ts +272 -0
  178. package/src/adapters/latex/captions.test.ts +57 -0
  179. package/src/adapters/latex/captions.ts +56 -0
  180. package/src/adapters/latex/headings.ts +5 -4
  181. package/src/adapters/latex/index.test.ts +31 -1
  182. package/src/adapters/latex/index.ts +3 -0
  183. package/src/adapters/latex/parse.ts +71 -3
  184. package/src/adapters/node/list-entries.io.ts +2 -1
  185. package/src/adapters/node/list-entries.test.ts +18 -0
  186. package/src/cli.test.ts +20 -8
  187. package/src/cli.ts +22 -13
  188. package/src/cycle-rules.test.ts +6 -6
  189. package/src/cycle-rules.ts +7 -4
  190. package/src/domain/deadline.test.ts +31 -2
  191. package/src/domain/deadline.ts +42 -16
  192. package/src/domain/decide-first.test.ts +33 -0
  193. package/src/domain/decide-first.ts +16 -1
  194. package/src/domain/index-columns.test.ts +49 -4
  195. package/src/domain/index-columns.ts +2 -0
  196. package/src/domain/portal-token.test.ts +55 -0
  197. package/src/domain/portal-token.ts +63 -0
  198. package/src/domain/study-measurements.test.ts +7 -3
  199. package/src/domain/study-registry.test.ts +34 -6
  200. package/src/domain/study-registry.ts +123 -31
  201. package/src/domain/submission.test.ts +88 -0
  202. package/src/domain/submission.ts +99 -0
  203. package/src/new-paper.test.ts +1 -0
  204. package/src/outputs-before-decision-rule.test.ts +47 -2
  205. package/src/outputs-before-decision-rule.ts +31 -22
  206. package/src/paper-settings.test.ts +20 -0
  207. package/src/paper-settings.ts +17 -5
  208. package/src/ports/latex.ts +25 -0
  209. package/src/ports/list-entries.ts +7 -4
  210. package/src/ports/study-deps.ts +14 -0
  211. package/src/ports/study-folder.ts +38 -0
  212. package/src/ports/submission-portal.ts +43 -1
  213. package/src/ports/venue-deadlines.ts +1 -1
  214. package/src/presets.test.ts +8 -5
  215. package/src/presets.ts +1 -2
  216. package/src/studies-index-modes.test.ts +2 -2
  217. package/src/studies.ts +19 -10
  218. package/src/study-folder.test.ts +237 -0
  219. package/src/study-folder.ts +176 -0
  220. package/src/study-gate.test.ts +158 -7
  221. package/src/study-gate.ts +127 -54
  222. package/src/study-index-input.ts +12 -4
  223. package/src/study-modes.ts +67 -80
  224. package/src/study-registry-rule.test.ts +87 -0
  225. package/src/study-registry-rule.ts +58 -66
  226. package/src/submission-new.test.ts +569 -0
  227. package/src/submission-show.test.ts +210 -0
  228. package/src/submission-update.test.ts +160 -0
  229. package/src/submission.test.ts +140 -518
  230. package/src/submission.ts +494 -61
  231. package/scripts/refresh-deadlines.test.ts +0 -431
  232. package/scripts/refresh-deadlines.ts +0 -387
@@ -69,6 +69,10 @@ const historyFindings = (s) => {
69
69
  return [
70
70
  { problem: "decision-not-file", id: s.id, file, what: s.facts.what },
71
71
  ];
72
+ case "linked":
73
+ return [
74
+ { problem: "decision-linked", id: s.id, file, link: s.facts.link },
75
+ ];
72
76
  case "unknown":
73
77
  return [{ problem: "no-history", id: s.id, why: s.facts.why }];
74
78
  case "shallow":
@@ -85,12 +89,14 @@ const RULE = "repro/outputs-before-decision";
85
89
  const NOT_A_FILE = {
86
90
  directory: "git answers for a directory with the commits of anything under it",
87
91
  "symbolic link": "git records the link, not the file it points to",
92
+ "special file": "git tracks only regular files",
88
93
  };
89
94
  const short = (c) => `${c.commit.slice(0, 12)} (${c.date})`;
90
95
  const HEADS = {
91
96
  "decision-is-output": (f) => `The decision of \`${f.id}\`, \`${f.file}\`, is matched by its output \`${f.glob}\`: the decision would be one of the files its own run produces. What to do: keep the decision out of the outputs — a file the globs do not match, or one elsewhere in the paper — and set \`mode.decision.file\`.`,
92
97
  "decision-deleted": (f) => `The decision of \`${f.id}\`, \`${f.file}\`, was committed and then deleted: it is not in HEAD, so the study has no decision its outputs could follow. What to do: restore the decision file as it was decided and commit it — never write a new one after the outputs; if the decision no longer holds, declare the study \`exploratory\` with the reason.`,
93
98
  "decision-not-file": (f) => `The decision of \`${f.id}\`, \`${f.file}\`, is a ${f.what}, not a file: ${NOT_A_FILE[f.what]}, so no order can be read from it. What to do: name the decision file itself in \`mode.decision.file\`.`,
99
+ "decision-linked": (f) => `The decision of \`${f.id}\`, \`${f.file}\`, passes through the symbolic link \`${f.link}\`: git records the link, not the files behind it, so no order can be read from it. What to do: name a decision file that lies in real directories in \`mode.decision.file\`.`,
94
100
  "no-history": (f) => `\`${f.id}\` is decided before its run, and git's history is the proof of that order, but git could not answer: ${f.why}. What to do: lint the paper inside its git repository, with git installed.`,
95
101
  shallow: (f) => `\`${f.id}\` is decided before its run, and this clone is shallow: every file's first commit is the clone's first, so the order of decision and outputs cannot be read. What to do: fetch the whole history (\`git fetch --unshallow\`; in GitHub Actions, \`actions/checkout\` with \`fetch-depth: 0\`).`,
96
102
  "undecided-output": (f) => `\`repro/${f.folder}/${f.path}\` is an output of \`${f.id}\` — in the tree, or in its history — and the study is decided before its run, but its decision \`${f.decision}\` was never committed. What to do: write and commit the decision, check it with \`npx paperlint studies gate <paper-dir> ${f.id}\`, then run the study again; if the output was made before any decision, declare the study \`exploratory\` with the reason. Deleting the output does not undo it: history keeps it.`,
@@ -1 +1 @@
1
- {"version":3,"file":"decide-first.js","sourceRoot":"","sources":["../../src/domain/decide-first.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"decide-first.js","sourceRoot":"","sources":["../../src/domain/decide-first.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index-columns.d.ts","sourceRoot":"","sources":["../../src/domain/index-columns.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAEL,KAAK,QAAQ,EACb,KAAK,gBAAgB,EACtB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,8EAA8E;AAC9E,MAAM,MAAM,YAAY;AACtB,qEAAqE;AACnE;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GACjD;IACE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,+DAA+D;IAC/D,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IACnC,mEAAmE;IACnE,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,iFAAiF;IACjF,QAAQ,CAAC,WAAW,EAAE,QAAQ,GAAG,IAAI,CAAC;CACvC,CAAC;AAEN,sDAAsD;AACtD,MAAM,WAAW,UAAU;IACzB,iGAAiG;IACjG,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,CAAC;IAChC,iGAAiG;IACjG,QAAQ,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,CAAC;CACvC;AAED,2DAA2D;AAC3D,eAAO,MAAM,cAAc,WAAM,CAAC;AAMlC,2EAA2E;AAC3E,eAAO,MAAM,QAAQ,GAAI,GAAG,UAAU,KAAG,MAKxC,CAAC;AAeF,mHAAmH;AACnH,eAAO,MAAM,YAAY,MARnB,UAAU,KAAG,MAclB,CAAC;AAEF,iFAAiF;AACjF,eAAO,MAAM,eAAe,MAjBtB,UAAU,KAAG,MAoBlB,CAAC;AAEF,oFAAoF;AACpF,eAAO,MAAM,YAAY,GAAI,GAAG,gBAAgB,KAAG,YAqBlD,CAAC"}
1
+ {"version":3,"file":"index-columns.d.ts","sourceRoot":"","sources":["../../src/domain/index-columns.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAEL,KAAK,QAAQ,EACb,KAAK,gBAAgB,EACtB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,8EAA8E;AAC9E,MAAM,MAAM,YAAY;AACtB,qEAAqE;AACnE;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GACjD;IACE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,+DAA+D;IAC/D,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IACnC,mEAAmE;IACnE,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,iFAAiF;IACjF,QAAQ,CAAC,WAAW,EAAE,QAAQ,GAAG,IAAI,CAAC;CACvC,CAAC;AAEN,sDAAsD;AACtD,MAAM,WAAW,UAAU;IACzB,iGAAiG;IACjG,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,CAAC;IAChC,iGAAiG;IACjG,QAAQ,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,CAAC;CACvC;AAED,2DAA2D;AAC3D,eAAO,MAAM,cAAc,WAAM,CAAC;AAMlC,2EAA2E;AAC3E,eAAO,MAAM,QAAQ,GAAI,GAAG,UAAU,KAAG,MAKxC,CAAC;AAeF,mHAAmH;AACnH,eAAO,MAAM,YAAY,MARnB,UAAU,KAAG,MAclB,CAAC;AAEF,iFAAiF;AACjF,eAAO,MAAM,eAAe,MAjBtB,UAAU,KAAG,MAoBlB,CAAC;AAEF,oFAAoF;AACpF,eAAO,MAAM,YAAY,GAAI,GAAG,gBAAgB,KAAG,YAuBlD,CAAC"}
@@ -42,6 +42,8 @@ export const indexHistory = (s) => {
42
42
  switch (s.facts.kind) {
43
43
  case "not-a-file":
44
44
  return { kind: "unread", why: `the decision is a ${s.facts.what}` };
45
+ case "linked":
46
+ return { kind: "unread", why: "the decision is behind a symbolic link" };
45
47
  case "unknown":
46
48
  return { kind: "unread", why: "git could not answer" };
47
49
  case "shallow":
@@ -1 +1 @@
1
- {"version":3,"file":"index-columns.js","sourceRoot":"","sources":["../../src/domain/index-columns.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index-columns.js","sourceRoot":"","sources":["../../src/domain/index-columns.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * WHICH TOKEN A PORTAL COMMAND USES — the policy, in one place. Pure.
3
+ *
4
+ * The site's own variable, and nothing else: there is NO fallback to a site-less variable. With one,
5
+ * which token a command used is not visible, and a token from another site reads as "the portal
6
+ * refused". A site-less variable that is set while the site's own is not is refused by name. The
7
+ * names themselves are the portal's (`src/adapters/hotcrp/token.ts`).
8
+ */
9
+ import { type Result } from "./result.ts";
10
+ /**
11
+ * The site's host as written in its URL, with its port when it is not the scheme's default
12
+ * (`review.example.org:8443`): two sites on one host differ by port. The URL itself when it does
13
+ * not parse.
14
+ */
15
+ export declare const hostOf: (url: string) => string;
16
+ /** The variables a lookup reads: the site's own, and the site-less one it refuses. */
17
+ export interface TokenNames {
18
+ readonly variable: string;
19
+ readonly siteLess: string;
20
+ }
21
+ /** A token found, and the variable it came from. */
22
+ export interface FoundToken {
23
+ readonly variable: string;
24
+ readonly token: string;
25
+ }
26
+ /** Why there is no token to use. */
27
+ export type TokenProblem =
28
+ /** The site's variable is not set (or blank), and neither is the site-less one. */
29
+ {
30
+ readonly kind: "missing";
31
+ readonly variable: string;
32
+ }
33
+ /** The site's variable is not set, but the site-less one, no longer read, is. */
34
+ | {
35
+ readonly kind: "site-less";
36
+ readonly variable: string;
37
+ readonly siteLess: string;
38
+ };
39
+ /**
40
+ * The token for a portal, read through `read` (the root reads the environment): the site's variable
41
+ * only. A set site-less variable never stands in for it — it is named as the problem instead.
42
+ */
43
+ export declare function lookUpToken({ variable, siteLess }: TokenNames, read: (name: string) => string | undefined): Result<FoundToken, TokenProblem>;
44
+ //# sourceMappingURL=portal-token.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"portal-token.d.ts","sourceRoot":"","sources":["../../src/domain/portal-token.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAW,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AAEnD;;;;GAIG;AACH,eAAO,MAAM,MAAM,GAAI,KAAK,MAAM,KAAG,MACQ,CAAC;AAE9C,sFAAsF;AACtF,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,oDAAoD;AACpD,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,oCAAoC;AACpC,MAAM,MAAM,YAAY;AACtB,mFAAmF;AACjF;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAAE;AACzD,iFAAiF;GAC/E;IACE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B,CAAC;AAUN;;;GAGG;AACH,wBAAgB,WAAW,CACzB,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,UAAU,EAClC,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,GACzC,MAAM,CAAC,UAAU,EAAE,YAAY,CAAC,CAMlC"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * WHICH TOKEN A PORTAL COMMAND USES — the policy, in one place. Pure.
3
+ *
4
+ * The site's own variable, and nothing else: there is NO fallback to a site-less variable. With one,
5
+ * which token a command used is not visible, and a token from another site reads as "the portal
6
+ * refused". A site-less variable that is set while the site's own is not is refused by name. The
7
+ * names themselves are the portal's (`src/adapters/hotcrp/token.ts`).
8
+ */
9
+ import { err, ok } from "./result.js";
10
+ /**
11
+ * The site's host as written in its URL, with its port when it is not the scheme's default
12
+ * (`review.example.org:8443`): two sites on one host differ by port. The URL itself when it does
13
+ * not parse.
14
+ */
15
+ export const hostOf = (url) => URL.canParse(url) ? new URL(url).host : url;
16
+ const value = (read, name) => {
17
+ const v = read(name)?.trim();
18
+ return v === undefined || v === "" ? null : v;
19
+ };
20
+ /**
21
+ * The token for a portal, read through `read` (the root reads the environment): the site's variable
22
+ * only. A set site-less variable never stands in for it — it is named as the problem instead.
23
+ */
24
+ export function lookUpToken({ variable, siteLess }, read) {
25
+ const token = value(read, variable);
26
+ if (token !== null)
27
+ return ok({ variable, token });
28
+ return value(read, siteLess) === null
29
+ ? err({ kind: "missing", variable })
30
+ : err({ kind: "site-less", variable, siteLess });
31
+ }
32
+ //# sourceMappingURL=portal-token.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"portal-token.js","sourceRoot":"","sources":["../../src/domain/portal-token.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,GAAG,EAAE,EAAE,EAAe,MAAM,aAAa,CAAC;AAEnD;;;;GAIG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,GAAW,EAAU,EAAE,CAC5C,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;AAyB9C,MAAM,KAAK,GAAG,CACZ,IAA0C,EAC1C,IAAY,EACG,EAAE;IACjB,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC;IAC7B,OAAO,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAChD,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,WAAW,CACzB,EAAE,QAAQ,EAAE,QAAQ,EAAc,EAClC,IAA0C;IAE1C,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACpC,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;IACnD,OAAO,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAK,IAAI;QACnC,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;QACpC,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;AACrD,CAAC"}
@@ -162,9 +162,27 @@ export type ParsedPlan = {
162
162
  readonly kind: "unreadable";
163
163
  readonly why: string;
164
164
  };
165
+ /**
166
+ * What a path inside a study's folder is, found without reading it or following a link: a regular
167
+ * file, nothing, or a path that passes through a symbolic link (`link`: the first one, relative to
168
+ * the folder).
169
+ */
170
+ export type Located = {
171
+ readonly kind: "file";
172
+ } | {
173
+ readonly kind: "absent";
174
+ } | {
175
+ readonly kind: "linked";
176
+ readonly link: string;
177
+ };
165
178
  /** What a study's folder holds of the plan its row names: absent, or what its text parsed to. */
166
179
  export type PlanState = {
167
180
  readonly kind: "absent";
181
+ }
182
+ /** The plan's path passes through a symbolic link, `link` (relative to the folder); never read. */
183
+ | {
184
+ readonly kind: "linked";
185
+ readonly link: string;
168
186
  } | ParsedPlan;
169
187
  /** The decision file `paperlint studies new` names for a study in `folder`, relative to the paper. */
170
188
  export declare const decisionPath: (folder: string) => string;
@@ -204,8 +222,8 @@ export interface StudyInput {
204
222
  readonly registry: RegistryState;
205
223
  /** `repro/README.md`'s text; null when there is none. */
206
224
  readonly readme: string | null;
207
- /** Each `<folder>/<result_file>` of the registry that is a file. */
208
- readonly existingResults: ReadonlySet<string>;
225
+ /** What each `<folder>/<result_file>` of the registry is, as `locate` found it; one not listed is absent. */
226
+ readonly results: ReadonlyMap<string, Located>;
209
227
  /** The plan each row names, by `<folder>/<plan>`; one not listed is absent. */
210
228
  readonly plans: ReadonlyMap<string, PlanState>;
211
229
  }
@@ -252,6 +270,12 @@ export type StudyFinding = {
252
270
  readonly id: string;
253
271
  readonly path: string;
254
272
  readonly why: "missing" | "outside";
273
+ } | {
274
+ readonly problem: "result-file";
275
+ readonly id: string;
276
+ readonly path: string;
277
+ readonly why: "linked";
278
+ readonly link: string;
255
279
  } | {
256
280
  readonly problem: "no-successor";
257
281
  readonly id: string;
@@ -286,6 +310,12 @@ export type StudyFinding = {
286
310
  readonly id: string;
287
311
  readonly path: string;
288
312
  readonly why: "missing" | "outside";
313
+ } | {
314
+ readonly problem: "bad-plan";
315
+ readonly id: string;
316
+ readonly path: string;
317
+ readonly why: "linked";
318
+ readonly link: string;
289
319
  } | {
290
320
  readonly problem: "bad-plan";
291
321
  readonly id: string;
@@ -337,17 +367,44 @@ export declare const isInside: (path: string) => boolean;
337
367
  * naming `../x` would have them read and write outside the paper.
338
368
  */
339
369
  export declare const isFolderName: (folder: string) => boolean;
370
+ /**
371
+ * The rows of a registry that carry an id: exactly one, none, or several. The one way to address a
372
+ * study by its id — a caller that wants "the study P1-S01" gets a row only when there is exactly one,
373
+ * so no command can act on the first of two rows by accident. A registry may still hold two rows of
374
+ * one id (`repro/study-registered` reports it); this says so instead of choosing.
375
+ */
376
+ export type StudyLookup = {
377
+ readonly kind: "one";
378
+ readonly row: Study;
379
+ } | {
380
+ readonly kind: "none";
381
+ } | {
382
+ readonly kind: "ambiguous";
383
+ readonly rows: readonly Study[];
384
+ };
385
+ /** The rows of a registry that was read; none when there is no registry, or it does not parse. */
386
+ export declare const studiesOf: (state: RegistryState) => readonly Study[];
387
+ /** The rows of `studies` whose id is `id`, as a `StudyLookup`. */
388
+ export declare const studyById: (studies: readonly Study[], id: string) => StudyLookup;
389
+ /**
390
+ * The key a path inside a study's folder is held under: `<folder>/<path>`. A plan (`StudyInput.plans`,
391
+ * `IndexInput.plans`), the history of its study (`IndexInput.history`) and a result file
392
+ * (`StudyInput.results`) are all found by it.
393
+ */
394
+ export declare const folderKey: (folder: string, path: string) => string;
340
395
  /**
341
396
  * The `<folder>/<plan>` of each row whose plan lies inside its folder: the files the judge needs read
342
397
  * (`StudyInput.plans`). A plan outside its folder is reported without being read.
343
398
  */
344
399
  export declare const planKeys: (r: StudyRegistry) => readonly string[];
345
- /** Each plan `planKeys` names, with the kind of the study whose row names it: what its parser needs. */
346
- export declare const planRefs: (r: StudyRegistry) => readonly {
347
- readonly key: string;
400
+ /** A plan a row names: where it is read from, and the kind of the study — what its parser needs. */
401
+ export interface PlanRef {
348
402
  readonly folder: string;
403
+ readonly plan: string;
349
404
  readonly kind: StudyKind;
350
- }[];
405
+ }
406
+ /** Each plan `planKeys` names. */
407
+ export declare const planRefs: (r: StudyRegistry) => readonly PlanRef[];
351
408
  /**
352
409
  * Every defect of a paper's study registry, in a fixed order: the registry itself; the unregistered
353
410
  * folders; each row's; the index. Pure.
@@ -355,8 +412,8 @@ export declare const planRefs: (r: StudyRegistry) => readonly {
355
412
  export declare function judgeStudies(input: StudyInput): readonly StudyFinding[];
356
413
  /**
357
414
  * What the index is generated from beyond the registry: the plans by `<folder>/<plan>` (as
358
- * `StudyInput.plans`), and the history of each decide-first study by id. A study with no history
359
- * listed shows `not read` — the lint, which never compares those columns, asks none.
415
+ * `StudyInput.plans`), and the history of each decide-first study by the same key. A study with no
416
+ * history listed shows `not read` — the lint, which never compares those columns, asks none.
360
417
  */
361
418
  export interface IndexInput {
362
419
  readonly plans: ReadonlyMap<string, PlanState>;
@@ -1 +1 @@
1
- {"version":3,"file":"study-registry.d.ts","sourceRoot":"","sources":["../../src/domain/study-registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"study-registry.d.ts","sourceRoot":"","sources":["../../src/domain/study-registry.ts"],"names":[],"mappings":"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"}
@@ -159,14 +159,37 @@ export const isInside = (path) => {
159
159
  * naming `../x` would have them read and write outside the paper.
160
160
  */
161
161
  export const isFolderName = (folder) => folder !== "." && folder !== ".." && /^[^/\\\0]+$/u.test(folder);
162
+ /** The rows of a registry that was read; none when there is no registry, or it does not parse. */
163
+ export const studiesOf = (state) => state.kind === "read" ? state.registry.studies : [];
164
+ /** The rows of `studies` whose id is `id`, as a `StudyLookup`. */
165
+ export const studyById = (studies, id) => {
166
+ const [first, ...rest] = studies.filter((s) => s.id === id);
167
+ if (first === undefined)
168
+ return { kind: "none" };
169
+ return rest.length === 0
170
+ ? { kind: "one", row: first }
171
+ : { kind: "ambiguous", rows: [first, ...rest] };
172
+ };
173
+ /**
174
+ * The key a path inside a study's folder is held under: `<folder>/<path>`. A plan (`StudyInput.plans`,
175
+ * `IndexInput.plans`), the history of its study (`IndexInput.history`) and a result file
176
+ * (`StudyInput.results`) are all found by it.
177
+ */
178
+ export const folderKey = (folder, path) => `${folder}/${path}`;
162
179
  /**
163
180
  * The `<folder>/<plan>` of each row whose plan lies inside its folder: the files the judge needs read
164
181
  * (`StudyInput.plans`). A plan outside its folder is reported without being read.
165
182
  */
166
- export const planKeys = (r) => planRefs(r).map((p) => p.key);
167
- /** Each plan `planKeys` names, with the kind of the study whose row names it: what its parser needs. */
183
+ export const planKeys = (r) => planRefs(r).map((p) => folderKey(p.folder, p.plan));
184
+ /** Each plan `planKeys` names. */
168
185
  export const planRefs = (r) => r.studies.flatMap((s) => s.plan !== undefined && isInside(s.plan) && isFolderName(s.folder)
169
- ? [{ key: `${s.folder}/${s.plan}`, folder: s.folder, kind: s.kind }]
186
+ ? [
187
+ {
188
+ folder: s.folder,
189
+ plan: s.plan,
190
+ kind: s.kind,
191
+ },
192
+ ]
170
193
  : []);
171
194
  /** Whether the row is the first of the registry with its value of `key`. */
172
195
  const isFirst = ({ r, s, i }, key) => r.studies.findIndex((o) => key(o) === key(s)) === i;
@@ -174,7 +197,7 @@ const badId = ({ r, s }) => idNumber(r.prefix, s.id) === null
174
197
  ? { problem: "bad-id", id: s.id, prefix: r.prefix }
175
198
  : null;
176
199
  /** Reported once, on the first row that holds the id. */
177
- const duplicateId = (row) => row.r.studies.filter((o) => o.id === row.s.id).length > 1 &&
200
+ const duplicateId = (row) => studyById(row.r.studies, row.s.id).kind === "ambiguous" &&
178
201
  isFirst(row, (o) => o.id)
179
202
  ? { problem: "duplicate-id", id: row.s.id }
180
203
  : null;
@@ -217,9 +240,23 @@ const resultFile = ({ s, input }) => {
217
240
  return null;
218
241
  if (!isInside(path))
219
242
  return { problem: "result-file", id: s.id, path, why: "outside" };
220
- return input.existingResults.has(`${s.folder}/${path}`)
221
- ? null
222
- : { problem: "result-file", id: s.id, path, why: "missing" };
243
+ const found = input.results.get(folderKey(s.folder, path)) ?? {
244
+ kind: "absent",
245
+ };
246
+ switch (found.kind) {
247
+ case "file":
248
+ return null;
249
+ case "linked":
250
+ return {
251
+ problem: "result-file",
252
+ id: s.id,
253
+ path,
254
+ why: "linked",
255
+ link: found.link,
256
+ };
257
+ case "absent":
258
+ return { problem: "result-file", id: s.id, path, why: "missing" };
259
+ }
223
260
  };
224
261
  const noSuccessor = ({ r, s }) => {
225
262
  const by = s.superseded_by ?? null;
@@ -234,14 +271,12 @@ const unknownMeasurement = ({ r, s }) => r.measurements === undefined ||
234
271
  r.measurements.some((m) => m.id === s.measurement)
235
272
  ? null
236
273
  : { problem: "unknown-measurement", id: s.id, measurement: s.measurement };
237
- /** The state of the plan the row names (absent when outside its folder); null when it names none. */
238
- const planOf = ({ s, input }) => {
239
- if (s.plan === undefined)
240
- return null;
241
- return isInside(s.plan)
242
- ? (input.plans.get(`${s.folder}/${s.plan}`) ?? { kind: "absent" })
243
- : { kind: "absent" };
244
- };
274
+ /** The state of the plan `plan` of the row `s` (absent when outside its folder): the one place a plan is looked up. */
275
+ const planStateOf = (input, s, plan) => isInside(plan)
276
+ ? (input.plans.get(folderKey(s.folder, plan)) ?? { kind: "absent" })
277
+ : { kind: "absent" };
278
+ /** The state of the plan the row names; null when it names none. */
279
+ const planOf = ({ s, input }) => s.plan === undefined ? null : planStateOf(input, s, s.plan);
245
280
  const hasRun = (s) => RAN_STATUSES.includes(s.status);
246
281
  /** The finding for the plan `path` of `s`, in the state its folder holds it; null when it stands. */
247
282
  const planFinding = (s, path, state) => {
@@ -249,6 +284,8 @@ const planFinding = (s, path, state) => {
249
284
  switch (state.kind) {
250
285
  case "absent":
251
286
  return { ...at, why: "missing" };
287
+ case "linked":
288
+ return { ...at, why: "linked", link: state.link };
252
289
  case "unreadable":
253
290
  return { ...at, why: "unreadable", reasons: state.why };
254
291
  case "draft":
@@ -266,7 +303,7 @@ const badPlan = ({ s, input }) => {
266
303
  return null;
267
304
  if (!isInside(path))
268
305
  return { problem: "bad-plan", id: s.id, path, why: "outside" };
269
- return planFinding(s, path, input.plans.get(`${s.folder}/${path}`) ?? { kind: "absent" });
306
+ return planFinding(s, path, planStateOf(input, s, path));
270
307
  };
271
308
  /** A plan under its old name: read, and named for renaming. */
272
309
  const legacyPlan = ({ s }) => s.plan !== undefined && posix.basename(s.plan) === LEGACY_PLAN_FILE
@@ -406,10 +443,11 @@ const cell = (s) => s.replace(/\r?\n/gu, " ").replace(/\\/gu, "\\\\").replace(/\
406
443
  /** The mode the plan of `s` declares; null when it names none, or the plan is absent or unreadable. */
407
444
  const declaredMode = (s, plans) => {
408
445
  const state = s.plan !== undefined && isInside(s.plan)
409
- ? plans.get(`${s.folder}/${s.plan}`)
446
+ ? plans.get(folderKey(s.folder, s.plan))
410
447
  : undefined;
411
448
  return state === undefined ||
412
449
  state.kind === "absent" ||
450
+ state.kind === "linked" ||
413
451
  state.kind === "unreadable"
414
452
  ? null
415
453
  : (state.plan.mode ?? null);
@@ -417,7 +455,9 @@ const declaredMode = (s, plans) => {
417
455
  /** What the index shows of `s` beyond its row. */
418
456
  const factsOf = (s, at) => ({
419
457
  mode: declaredMode(s, at.plans),
420
- history: at.history.get(s.id) ?? null,
458
+ history: (s.plan === undefined
459
+ ? undefined
460
+ : at.history.get(folderKey(s.folder, s.plan))) ?? null,
421
461
  });
422
462
  /**
423
463
  * The columns of the index: each one's header, its cell for a study, and whether git's history is
@@ -558,7 +598,9 @@ const HEADS = {
558
598
  "folder-name": (f) => `${REGISTRY}: the row ${tick(f.id)} names the folder ${tick(f.folder)}, which is not \`${f.id}-<slug>\` — the id, then lowercase letters and digits in words joined by hyphens. What to do: rename the folder and the row's \`folder\` together.`,
559
599
  "long-title": (f) => `${REGISTRY}: the title of ${tick(f.id)} has ${String(f.words)} words; a title is a plain name of at most ${String(MAX_TITLE_WORDS)}. What to do: shorten it, and put the detail in \`question\`.`,
560
600
  "no-result": (f) => `${REGISTRY}: ${tick(f.id)} is \`done\` without ${f.missing.map(tick).join(" and ")}. What to do: write the one-line result and the file it is read from (\`result\`, \`result_file\`), or set the status it really has.`,
561
- "result-file": (f) => `${REGISTRY}: the \`result_file\` of ${tick(f.id)}, ${tick(f.path)}, ${f.why === "missing" ? "is not a file in its folder" : "is outside its folder"}. What to do: name a file that exists, relative to the study's folder.`,
601
+ "result-file": (f) => f.why === "linked"
602
+ ? `${REGISTRY}: the \`result_file\` of ${tick(f.id)}, ${tick(f.path)}, passes through the symbolic link ${tick(f.link)} in its folder; nothing is read through a link. What to do: name a regular file inside the study's folder, or replace the link with the file itself.`
603
+ : `${REGISTRY}: the \`result_file\` of ${tick(f.id)}, ${tick(f.path)}, ${f.why === "missing" ? "is not a file in its folder" : "is outside its folder"}. What to do: name a file that exists, relative to the study's folder.`,
562
604
  "no-successor": (f) => `${REGISTRY}: ${tick(f.id)} is \`superseded\` ${f.superseded_by === null ? "without `superseded_by`" : `by ${tick(f.superseded_by)}, which is no study in the registry`}. What to do: name the id of the study that replaced it.`,
563
605
  "stale-index": (f) => `${STALE_HEAD[f.why]} ${RUN_INDEX}`,
564
606
  "unknown-measurement": (f) => `${REGISTRY}: the row ${tick(f.id)} names the measurement ${tick(f.measurement)}, which is not in \`measurements\`. What to do: add the measurement to \`measurements\`, or correct the row's \`measurement\`.`,
@@ -573,6 +615,8 @@ const HEADS = {
573
615
  switch (f.why) {
574
616
  case "missing":
575
617
  return `${REGISTRY}: ${of} is not a file in its folder. What to do: write the plan there (its fields are on the rule's page), or correct the row's \`plan\`.`;
618
+ case "linked":
619
+ return `${REGISTRY}: ${of} passes through the symbolic link ${tick(f.link)} in its folder; nothing is read through a link. What to do: replace the link with the plan file itself.`;
576
620
  case "outside":
577
621
  return `${REGISTRY}: ${of} is outside its folder. What to do: keep the plan in the study's folder, as \`${PLAN_FILE}\`, and name it relative to the folder.`;
578
622
  case "unreadable":