paperlint 6.3.0 → 7.1.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.
- package/CONTRIBUTING.md +4 -2
- package/README.md +20 -13
- package/dist/adapters/latex/conditionals.d.ts +21 -0
- package/dist/adapters/latex/conditionals.d.ts.map +1 -0
- package/dist/adapters/latex/conditionals.js +75 -0
- package/dist/adapters/latex/conditionals.js.map +1 -0
- package/dist/adapters/latex/headings.d.ts +10 -0
- package/dist/adapters/latex/headings.d.ts.map +1 -0
- package/dist/adapters/latex/headings.js +129 -0
- package/dist/adapters/latex/headings.js.map +1 -0
- package/dist/adapters/latex/index.d.ts +1 -0
- package/dist/adapters/latex/index.d.ts.map +1 -1
- package/dist/adapters/latex/index.js +3 -0
- package/dist/adapters/latex/index.js.map +1 -1
- package/dist/adapters/latex/parse.d.ts +1 -1
- package/dist/adapters/latex/parse.d.ts.map +1 -1
- package/dist/adapters/latex/parse.js +3 -2
- package/dist/adapters/latex/parse.js.map +1 -1
- package/dist/build.d.ts +1 -1
- package/dist/build.d.ts.map +1 -1
- package/dist/build.js +1 -1
- package/dist/build.js.map +1 -1
- package/dist/cli.d.ts +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +19 -5
- package/dist/cli.js.map +1 -1
- package/dist/domain/body-pages.d.ts +29 -0
- package/dist/domain/body-pages.d.ts.map +1 -1
- package/dist/domain/body-pages.js +25 -0
- package/dist/domain/body-pages.js.map +1 -1
- package/dist/domain/heading-case.d.ts +100 -0
- package/dist/domain/heading-case.d.ts.map +1 -0
- package/dist/domain/heading-case.js +365 -0
- package/dist/domain/heading-case.js.map +1 -0
- package/dist/domain/tex-document.d.ts +32 -0
- package/dist/domain/tex-document.d.ts.map +1 -1
- package/dist/domain/tex-document.js +11 -0
- package/dist/domain/tex-document.js.map +1 -1
- package/dist/eslint-rules/latex-language.d.ts.map +1 -1
- package/dist/eslint-rules/latex-language.js +16 -3
- package/dist/eslint-rules/latex-language.js.map +1 -1
- package/dist/facts-file.d.ts +3 -3
- package/dist/facts-file.d.ts.map +1 -1
- package/dist/facts-file.js +3 -3
- package/dist/facts-file.js.map +1 -1
- package/dist/folder-venue-rule.js +6 -6
- package/dist/folder-venue-rule.js.map +1 -1
- package/dist/heading-case.d.ts +48 -0
- package/dist/heading-case.d.ts.map +1 -0
- package/dist/heading-case.js +191 -0
- package/dist/heading-case.js.map +1 -0
- package/dist/paper-includes.d.ts +3 -0
- package/dist/paper-includes.d.ts.map +1 -1
- package/dist/paper-includes.js +17 -2
- package/dist/paper-includes.js.map +1 -1
- package/dist/ports/latex.d.ts +7 -1
- package/dist/ports/latex.d.ts.map +1 -1
- package/dist/preset-card-rule.d.ts +100 -0
- package/dist/preset-card-rule.d.ts.map +1 -0
- package/dist/preset-card-rule.js +221 -0
- package/dist/preset-card-rule.js.map +1 -0
- package/dist/presets.d.ts +29 -5
- package/dist/presets.d.ts.map +1 -1
- package/dist/presets.js +104 -68
- package/dist/presets.js.map +1 -1
- package/dist/submission.d.ts +8 -0
- package/dist/submission.d.ts.map +1 -1
- package/dist/submission.js +19 -7
- package/dist/submission.js.map +1 -1
- package/dist/tex-requirements.d.ts +42 -3
- package/dist/tex-requirements.d.ts.map +1 -1
- package/dist/tex-requirements.js +34 -5
- package/dist/tex-requirements.js.map +1 -1
- package/dist/tex-venue-rules.d.ts +6 -3
- package/dist/tex-venue-rules.d.ts.map +1 -1
- package/dist/tex-venue-rules.js +29 -10
- package/dist/tex-venue-rules.js.map +1 -1
- package/dist/venue-rules.d.ts +2 -1
- package/dist/venue-rules.d.ts.map +1 -1
- package/dist/venue-rules.js +55 -7
- package/dist/venue-rules.js.map +1 -1
- package/docs/configuration.md +13 -1
- package/docs/e2e.md +14 -12
- package/docs/optional-rules.md +4 -3
- package/docs/rules/format/page-limit.md +19 -2
- package/docs/rules/paper/folder-venue-leftover.md +1 -1
- package/docs/rules/talk/profile.md +1 -1
- package/docs/rules/tex/heading-case.md +424 -0
- package/docs/rules/tex/template.md +25 -5
- package/docs/rules/tex/venue-leftover.md +13 -0
- package/docs/rules.md +74 -57
- package/docs/submission.md +5 -1
- package/eslint-rules/latex-language.test.mjs +12 -0
- package/eslint-rules/latex-language.ts +17 -4
- package/eslint-rules/paper-typography.test.mjs +12 -0
- package/eslint.config.mjs +59 -1
- package/fixtures/build-e2e/acmart/paper.tex +1 -1
- package/fixtures/build-e2e/fallback/expect.json +3 -3
- package/fixtures/build-e2e/msr/PIPELINE-STATUS.md +3 -0
- package/fixtures/build-e2e/msr/expect.json +18 -0
- package/fixtures/build-e2e/msr/paper.tex +49 -0
- package/fixtures/build-e2e/msr/paperlint.json +1 -0
- package/fixtures/build-e2e/msr-appendix-after/PIPELINE-STATUS.md +3 -0
- package/fixtures/build-e2e/msr-appendix-after/expect.json +20 -0
- package/fixtures/build-e2e/msr-appendix-after/paper.tex +48 -0
- package/fixtures/build-e2e/msr-appendix-after/paperlint.json +1 -0
- package/lib/skill-checks.mjs +31 -0
- package/package.json +7 -1
- package/presets/acm-sigconf.jsonc +5 -0
- package/presets/acm-sigconf.md +43 -0
- package/presets/agenticdev.jsonc +27 -6
- package/presets/agenticdev.md +151 -0
- package/presets/aidc.jsonc +6 -0
- package/presets/aidc.md +75 -0
- package/presets/aisec.jsonc +5 -1
- package/presets/aisec.md +117 -0
- package/presets/ieee-conference.jsonc +5 -0
- package/presets/ieee-conference.md +38 -0
- package/presets/msr.jsonc +71 -0
- package/presets/msr.md +94 -0
- package/presets/realm.jsonc +7 -2
- package/presets/realm.md +166 -0
- package/presets/tex/agenticdev.tex +1 -1
- package/presets/tex-base.jsonc +6 -0
- package/presets/tex-base.md +30 -0
- package/presets/venue-profile.schema.json +65 -1
- package/skills/camera-ready/SKILL.md +8 -1
- package/skills/camera-ready/SKILL.md.spec.ts +7 -0
- package/skills/find-venue/SKILL.md +6 -5
- package/skills/find-venue/SKILL.md.spec.ts +5 -4
- package/skills/paper-pipeline/SKILL.md +5 -6
- package/skills/paper-pipeline/SKILL.md.spec.ts +4 -5
- package/skills/paper-pipeline/references/acl-venue-rules.md +1 -1
- package/skills/study-accepted-papers/SKILL.md +3 -3
- package/skills/study-accepted-papers/SKILL.md.spec.ts +2 -2
- package/skills/submission-portal/SKILL.md +2 -2
- package/skills/submission-portal/SKILL.md.spec.ts +1 -1
- package/skills/submit-paper/SKILL.md +34 -22
- package/skills/submit-paper/SKILL.md.spec.ts +33 -21
- package/skills/submit-paper/references/publishers/acm.md +1 -1
- package/src/adapters/latex/conditionals.ts +130 -0
- package/src/adapters/latex/headings.ts +163 -0
- package/src/adapters/latex/index.test.ts +65 -0
- package/src/adapters/latex/index.ts +3 -0
- package/src/adapters/latex/parse.ts +3 -2
- package/src/build.ts +2 -2
- package/src/cli.test.ts +50 -7
- package/src/cli.ts +28 -6
- package/src/domain/body-pages.test.ts +144 -0
- package/src/domain/body-pages.ts +61 -1
- package/src/domain/heading-case.test.ts +660 -0
- package/src/domain/heading-case.ts +538 -0
- package/src/domain/tex-document.ts +36 -0
- package/src/domain/venue-name.test.ts +13 -7
- package/src/facts-file.test.ts +4 -4
- package/src/facts-file.ts +6 -6
- package/src/folder-venue-rule.test.ts +10 -10
- package/src/folder-venue-rule.ts +6 -6
- package/src/heading-case.test.ts +500 -0
- package/src/heading-case.ts +275 -0
- package/src/init.test.ts +1 -1
- package/src/new-paper.test.ts +37 -6
- package/src/paper-includes.test.ts +26 -0
- package/src/paper-includes.ts +20 -2
- package/src/paper-settings-commands.test.ts +26 -11
- package/src/ports/latex.ts +7 -0
- package/src/preset-card-rule.test.ts +267 -0
- package/src/preset-card-rule.ts +384 -0
- package/src/presets.test.ts +259 -41
- package/src/presets.ts +161 -75
- package/src/rule-cases.test.ts +136 -50
- package/src/submission.test.ts +44 -4
- package/src/submission.ts +28 -7
- package/src/talk-rules.test.ts +6 -3
- package/src/tex-requirements.harness.ts +25 -11
- package/src/tex-requirements.test.ts +127 -1
- package/src/tex-requirements.ts +91 -12
- package/src/tex-venue-rules.test.ts +196 -21
- package/src/tex-venue-rules.ts +47 -16
- package/src/venue-rules.test.ts +180 -8
- package/src/venue-rules.ts +71 -10
- package/templates/paper/paper.tex +1 -1
- package/skills/submit-paper/references/venues/agenticdev.md +0 -171
- package/skills/submit-paper/references/venues/aisec.md +0 -105
- package/skills/submit-paper/references/venues/realm.md +0 -155
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `preset/card-rules` — the rules table in a preset's card, generated from the preset beside it.
|
|
3
|
+
*
|
|
4
|
+
* Every shipped preset has a card, `presets/<name>.md` beside `presets/<name>.jsonc`: what the venue
|
|
5
|
+
* or the template family is, its call for papers, its kinds and limits — prose a person writes. One
|
|
6
|
+
* part of the card is NOT prose: which rules a paper extending the preset runs with, at which
|
|
7
|
+
* severity and options, and which file of the chain set each. That part is generated between two
|
|
8
|
+
* markers and checked on every lint, so it cannot say anything the preset does not:
|
|
9
|
+
*
|
|
10
|
+
* <!-- paperlint:preset-rules -->
|
|
11
|
+
* …generated: what the preset is, its call for papers, the resolved rules…
|
|
12
|
+
* <!-- /paperlint:preset-rules -->
|
|
13
|
+
*
|
|
14
|
+
* A section that differs from what the preset resolves to is reported, and `eslint --fix` writes it.
|
|
15
|
+
* A card with no markers gets the section appended by `--fix`; a card with one marker and not the
|
|
16
|
+
* other is reported and left alone, since where the section should end is a person's call.
|
|
17
|
+
*
|
|
18
|
+
* ── WHY OUR OWN RULE, AND NOT eslint-doc-generator ───────────────────────────────
|
|
19
|
+
* eslint-doc-generator documents an ESLint PLUGIN: its rules, and which of the plugin's exported
|
|
20
|
+
* configs enable each. A preset is not an ESLint config — it is paperlint's own format, merged along
|
|
21
|
+
* an `extends` chain of files (`src/presets.ts`), and the column that matters here (which file of
|
|
22
|
+
* the chain set a rule) has no counterpart in a plugin's configs.
|
|
23
|
+
*
|
|
24
|
+
* ── WHAT IT READS ────────────────────────────────────────────────────────────────
|
|
25
|
+
* The card's markdown tree (the two markers are top-level `html` nodes), the preset beside it through
|
|
26
|
+
* `resolvePreset` — the reader every rule uses — and whether `docs/rules/<rule>.md` exists, to link
|
|
27
|
+
* a rule to its page or, before it has one, to the index `docs/rules.md`.
|
|
28
|
+
*/
|
|
29
|
+
import { basename, dirname, join, relative } from "node:path";
|
|
30
|
+
import { callerPath } from "./caller-path.js";
|
|
31
|
+
import { presetProblemText, resolvePreset, resolveShipped, SHIPPED_PREFIX, } from "./presets.js";
|
|
32
|
+
/** The first line of the generated section. */
|
|
33
|
+
export const SECTION_START = "<!-- paperlint:preset-rules -->";
|
|
34
|
+
/** The last line of the generated section. */
|
|
35
|
+
export const SECTION_END = "<!-- /paperlint:preset-rules -->";
|
|
36
|
+
const PRESET_EXT = ".jsonc";
|
|
37
|
+
const CARD_EXT = ".md";
|
|
38
|
+
/** A rule entry (`"error"`, `2`, `["error", { … }]`) → its severity and its options as JSON. Pure. */
|
|
39
|
+
export function entryParts(entry) {
|
|
40
|
+
// One level of `flat`: an array entry gives its elements, a bare severity itself.
|
|
41
|
+
const [severity, ...options] = [entry].flat();
|
|
42
|
+
return {
|
|
43
|
+
severity: String(severity),
|
|
44
|
+
options: options.map((o) => JSON.stringify(o)).join(", "),
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
/** The resolved preset's rules, one row each, by rule id. Pure. */
|
|
48
|
+
export const ruleRows = (preset) => Object.entries(preset.ruleOrigins)
|
|
49
|
+
.sort(([a], [b]) => a.localeCompare(b))
|
|
50
|
+
.map(([id, origin]) => ({ id, ...entryParts(preset.rules[id]), origin }));
|
|
51
|
+
/** How a card names a preset file: `paperlint:<name>` when it is shipped, else its path from the card. */
|
|
52
|
+
const specOf = (file, card, venuesDir) => dirname(file) === venuesDir
|
|
53
|
+
? `${SHIPPED_PREFIX}${basename(file, PRESET_EXT)}`
|
|
54
|
+
: relative(dirname(card), file);
|
|
55
|
+
/** A table cell's text with GFM's column separator escaped. Pure. */
|
|
56
|
+
const cell = (text) => text.split("|").join("\\|");
|
|
57
|
+
/** What the card says about where to look for the section's source, and how to rewrite it. */
|
|
58
|
+
const generatedNote = (preset) => `<!-- Generated from ${preset} by \`npx eslint --fix\` (rule preset/card-rules). Edit the preset, not this section. -->`;
|
|
59
|
+
/** The section's first paragraph: what the preset is, its call for papers or its relatives. */
|
|
60
|
+
function identityLine(o) {
|
|
61
|
+
const spec = o.specOf(o.own);
|
|
62
|
+
const extendsText = o.preset.chain
|
|
63
|
+
.slice(-2, -1)
|
|
64
|
+
.map((parent) => ` · extends \`${o.specOf(parent)}\``)
|
|
65
|
+
.join("");
|
|
66
|
+
switch (o.preset.identity.type) {
|
|
67
|
+
case "venue":
|
|
68
|
+
return `**\`${spec}\`** — venue preset for ${o.preset.identity.name} · call for papers: <${o.preset.identity.url}>${extendsText}`;
|
|
69
|
+
case "family": {
|
|
70
|
+
const by = o.extendedBy.length
|
|
71
|
+
? o.extendedBy.map((s) => `\`${s}\``).join(", ")
|
|
72
|
+
: "no shipped preset";
|
|
73
|
+
return `**\`${spec}\`** — template family, no venue of its own${extendsText} · extended by ${by}`;
|
|
74
|
+
}
|
|
75
|
+
case "base":
|
|
76
|
+
return `**\`${basename(o.own)}\`** — the TeX base set: every paper gets it, whatever it extends, and no preset extends it`;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
/** The table, or the sentence that stands for an empty one. Pure. */
|
|
80
|
+
function rulesTable(rows, own, link, originSpec) {
|
|
81
|
+
if (rows.length === 0)
|
|
82
|
+
return "No preset of this chain sets a rule: under it, every rule keeps paperlint's default.";
|
|
83
|
+
return [
|
|
84
|
+
"| rule | severity | options | set in |",
|
|
85
|
+
"| --- | --- | --- | --- |",
|
|
86
|
+
...rows.map((r) => `| [\`${r.id}\`](${link(r.id)}) | ${r.severity} | ${r.options === "" ? "—" : `\`${cell(r.options)}\``} | ${r.origin === own ? "this preset" : `inherited from \`${originSpec(r.origin)}\``} |`),
|
|
87
|
+
].join("\n");
|
|
88
|
+
}
|
|
89
|
+
/** A rule's link from the card: its page under `docs/rules/`, or the index before it has one. */
|
|
90
|
+
const ruleLink = (o) => (id) => {
|
|
91
|
+
const page = join(o.docsRoot, "docs", "rules", `${id}.md`);
|
|
92
|
+
return relative(dirname(o.card), o.docExists(page) ? page : join(o.docsRoot, "docs", "rules.md"));
|
|
93
|
+
};
|
|
94
|
+
/**
|
|
95
|
+
* The section between the markers for the preset `own`, resolved, as the card `card` shows it —
|
|
96
|
+
* without the markers. Wrapped in prettier-ignore, so the formatter and this rule never disagree
|
|
97
|
+
* about the table's spacing. Pure but for `docExists`.
|
|
98
|
+
*/
|
|
99
|
+
export function cardSection(o) {
|
|
100
|
+
const link = ruleLink(o);
|
|
101
|
+
const spec = (file) => specOf(file, o.card, o.venuesDir);
|
|
102
|
+
return [
|
|
103
|
+
"<!-- prettier-ignore-start -->",
|
|
104
|
+
generatedNote(basename(o.own)),
|
|
105
|
+
"",
|
|
106
|
+
identityLine({
|
|
107
|
+
preset: o.preset,
|
|
108
|
+
own: o.own,
|
|
109
|
+
specOf: spec,
|
|
110
|
+
extendedBy: o.extendedBy,
|
|
111
|
+
}),
|
|
112
|
+
"",
|
|
113
|
+
rulesTable(ruleRows(o.preset), o.own, link, spec),
|
|
114
|
+
"",
|
|
115
|
+
"<!-- prettier-ignore-end -->",
|
|
116
|
+
].join("\n");
|
|
117
|
+
}
|
|
118
|
+
/** The shipped presets whose chain runs through `file`, by their spec, `file` itself left out. */
|
|
119
|
+
const extendedByOf = (file, deps) => resolveShipped(deps)
|
|
120
|
+
.flatMap((p) => (p.chain.includes(file) ? p.chain.slice(-1) : []))
|
|
121
|
+
.filter((leaf) => leaf !== file)
|
|
122
|
+
.map((leaf) => specOf(leaf, file, deps.venuesDir));
|
|
123
|
+
/** The expected section for the card at `card`, or the finding that stands in its place. */
|
|
124
|
+
function expectedSection(card, deps) {
|
|
125
|
+
const own = join(dirname(card), `${basename(card, CARD_EXT)}${PRESET_EXT}`);
|
|
126
|
+
if (!deps.files.isFile(callerPath(own)))
|
|
127
|
+
return { ok: false, messageId: "noPreset", data: { preset: own } };
|
|
128
|
+
const r = resolvePreset(`./${basename(own)}`, card, deps);
|
|
129
|
+
if (!r.ok) {
|
|
130
|
+
const why = presetProblemText(r.error);
|
|
131
|
+
return { ok: false, messageId: "presetProblem", data: { why } };
|
|
132
|
+
}
|
|
133
|
+
return {
|
|
134
|
+
ok: true,
|
|
135
|
+
text: cardSection({
|
|
136
|
+
preset: r.value,
|
|
137
|
+
own,
|
|
138
|
+
card,
|
|
139
|
+
venuesDir: deps.venuesDir,
|
|
140
|
+
docsRoot: deps.docsRoot,
|
|
141
|
+
docExists: (f) => deps.files.isFile(callerPath(f)),
|
|
142
|
+
extendedBy: extendedByOf(own, deps),
|
|
143
|
+
}),
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
/** The first top-level `html` node of the card that is exactly `marker`, or null. */
|
|
147
|
+
const markerIn = (root, marker) => root.children
|
|
148
|
+
.filter((n) => n.type === "html")
|
|
149
|
+
.find((n) => String(n.value).trim() === marker) ?? null;
|
|
150
|
+
/** The section to append to a card that has none, after its last line. */
|
|
151
|
+
const appended = (text, section) => `${text.endsWith("\n") ? "" : "\n"}\n${SECTION_START}\n${section}\n${SECTION_END}\n`;
|
|
152
|
+
/** The finding for the section between `start` and `end`: stale, with the fix; null when it is right. */
|
|
153
|
+
function staleSection(between, text, section) {
|
|
154
|
+
const from = between.start.position.end.offset;
|
|
155
|
+
const to = between.end.position.start.offset;
|
|
156
|
+
const expected = `\n${section}\n`;
|
|
157
|
+
return text.slice(from, to) === expected
|
|
158
|
+
? null
|
|
159
|
+
: {
|
|
160
|
+
node: between.start,
|
|
161
|
+
messageId: "stale",
|
|
162
|
+
fix: (fixer) => fixer.replaceTextRange([from, to], expected),
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
/** The card's section against `section`, the one its preset resolves to: missing, unpaired, stale, or right (null). */
|
|
166
|
+
function sectionFinding(root, text, section) {
|
|
167
|
+
const start = markerIn(root, SECTION_START);
|
|
168
|
+
const end = markerIn(root, SECTION_END);
|
|
169
|
+
if (start === null)
|
|
170
|
+
return end === null
|
|
171
|
+
? {
|
|
172
|
+
node: root,
|
|
173
|
+
messageId: "missing",
|
|
174
|
+
fix: (fixer) => fixer.insertTextAfterRange([text.length, text.length], appended(text, section)),
|
|
175
|
+
}
|
|
176
|
+
: { node: end, messageId: "unpaired" };
|
|
177
|
+
if (end === null)
|
|
178
|
+
return { node: start, messageId: "unpaired" };
|
|
179
|
+
return staleSection({ start, end }, text, section);
|
|
180
|
+
}
|
|
181
|
+
/** Judge the card `context.filename`: its preset beside it, then its generated section. */
|
|
182
|
+
function judgeCard(context, root, deps) {
|
|
183
|
+
const want = expectedSection(context.filename, deps);
|
|
184
|
+
const finding = want.ok
|
|
185
|
+
? sectionFinding(root, context.sourceCode.text, want.text)
|
|
186
|
+
: { node: root, messageId: want.messageId, data: want.data };
|
|
187
|
+
if (finding !== null)
|
|
188
|
+
context.report(finding);
|
|
189
|
+
}
|
|
190
|
+
/** The rule, over `deps`. */
|
|
191
|
+
export function presetCardRule(deps) {
|
|
192
|
+
return {
|
|
193
|
+
meta: {
|
|
194
|
+
type: "problem",
|
|
195
|
+
fixable: "code",
|
|
196
|
+
docs: {
|
|
197
|
+
description: "a preset card's rules table is the one its preset resolves to — generated, never hand-written",
|
|
198
|
+
},
|
|
199
|
+
schema: [],
|
|
200
|
+
messages: {
|
|
201
|
+
stale: "the rules section does not match the preset beside this card — run `npx eslint --fix` on this file to rewrite it from the preset",
|
|
202
|
+
missing: `this card has no generated rules section — run \`npx eslint --fix\` on this file to append one (between ${SECTION_START} and ${SECTION_END})`,
|
|
203
|
+
unpaired: `the generated rules section needs both markers, ${SECTION_START} and ${SECTION_END}, each on its own line`,
|
|
204
|
+
noPreset: "a preset card describes the preset beside it, and there is none: {{preset}}",
|
|
205
|
+
presetProblem: "the preset beside this card does not resolve, so its rules cannot be listed: {{why}}",
|
|
206
|
+
},
|
|
207
|
+
},
|
|
208
|
+
create(context) {
|
|
209
|
+
return {
|
|
210
|
+
root(node) {
|
|
211
|
+
judgeCard(context, node, deps);
|
|
212
|
+
},
|
|
213
|
+
};
|
|
214
|
+
},
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
/** The plugin's rules: `preset/card-rules` once registered under the name `preset`. */
|
|
218
|
+
export const presetCardRules = (deps) => ({
|
|
219
|
+
"card-rules": presetCardRule(deps),
|
|
220
|
+
});
|
|
221
|
+
//# sourceMappingURL=preset-card-rule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preset-card-rule.js","sourceRoot":"","sources":["../src/preset-card-rule.ts"],"names":[],"mappings":"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"}
|
package/dist/presets.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type RequiredSection, type TexRequirements, type VenueFormat } from "./tex-requirements.ts";
|
|
1
|
+
import { type PresetIdentity, type RequiredSection, type TexRequirements, type VenueFormat } from "./tex-requirements.ts";
|
|
2
2
|
import { type Result } from "./domain/result.ts";
|
|
3
3
|
import type { Files } from "./ports/files.ts";
|
|
4
4
|
import { type PaperSettings, type SettingsProblem } from "./paper-settings.ts";
|
|
@@ -14,17 +14,26 @@ export interface PresetDeps {
|
|
|
14
14
|
/** The package's venues directory: the shipped presets and the schema every preset is checked against. */
|
|
15
15
|
readonly venuesDir: string;
|
|
16
16
|
}
|
|
17
|
-
/** A preset's `template`, as its file spells it. */
|
|
17
|
+
/** A preset's `template`, as its file spells it, and the class options that file forbids. */
|
|
18
18
|
export interface PresetTemplate {
|
|
19
19
|
readonly text: string;
|
|
20
20
|
readonly file: string;
|
|
21
|
+
/** `template_forbids` of the same file: options the paper's class line must not carry. */
|
|
22
|
+
readonly forbids: readonly string[];
|
|
21
23
|
}
|
|
22
24
|
/** A resolved chain, merged. */
|
|
23
25
|
export interface Preset {
|
|
24
|
-
/**
|
|
26
|
+
/**
|
|
27
|
+
* The preset's id: the spec's file name without its extension (`agenticdev`, `usenix-sec`). The
|
|
28
|
+
* stable key a machine reads — the facts file and the build plan carry it — whatever `name` says.
|
|
29
|
+
*/
|
|
30
|
+
readonly id: string;
|
|
31
|
+
/** The word for this venue in messages: the venue's `name`, else the id. */
|
|
25
32
|
readonly label: string;
|
|
26
33
|
/** Every file of the chain, root first. */
|
|
27
34
|
readonly chain: readonly string[];
|
|
35
|
+
/** What the spec names — the leaf file of the chain: a venue (with its call), or a family. */
|
|
36
|
+
readonly identity: PresetIdentity;
|
|
28
37
|
/**
|
|
29
38
|
* The `\\documentclass` the venue's template uses, as the preset spells it, and the file that
|
|
30
39
|
* spells it; null when no file of the chain names one. Read by the rules and `paperlint new`,
|
|
@@ -35,10 +44,17 @@ export interface Preset {
|
|
|
35
44
|
readonly aliases: readonly string[];
|
|
36
45
|
/** Whether the venue reviews double-blind (`anonymity/identity`); false when no file of the chain says. */
|
|
37
46
|
readonly blind: boolean;
|
|
47
|
+
/**
|
|
48
|
+
* When the venue's names count as a mention in a paper's text (`tex/venue-leftover`): `any`
|
|
49
|
+
* whole-word use, or `with-year` beside it; `any` when no file of the chain says.
|
|
50
|
+
*/
|
|
51
|
+
readonly mentions: "any" | "with-year";
|
|
38
52
|
readonly requiredSections: readonly RequiredSection[];
|
|
39
53
|
readonly tex: TexRequirements;
|
|
40
54
|
readonly format: VenueFormat;
|
|
41
55
|
readonly rules: Readonly<Record<string, unknown>>;
|
|
56
|
+
/** Rule id → the file of the chain that set its entry in `rules` (the last one to name it). */
|
|
57
|
+
readonly ruleOrigins: Readonly<Record<string, string>>;
|
|
42
58
|
/** The accepted papers the register rules measure a body against; empty when no file names any. */
|
|
43
59
|
readonly registerAnchors: readonly RegisterAnchor[];
|
|
44
60
|
/** What the venue asks a presenter to send (`talk/*`); null when no file of the chain says. */
|
|
@@ -61,6 +77,14 @@ export type PresetProblem = {
|
|
|
61
77
|
} | {
|
|
62
78
|
readonly kind: "too-deep";
|
|
63
79
|
readonly chain: readonly string[];
|
|
80
|
+
}
|
|
81
|
+
/** `file` extends `parent`, which a preset of its type may not extend. */
|
|
82
|
+
| {
|
|
83
|
+
readonly kind: "wrong-parent";
|
|
84
|
+
readonly file: string;
|
|
85
|
+
readonly parent: string;
|
|
86
|
+
/** A family extending a venue, or anything extending the base set. */
|
|
87
|
+
readonly parentType: "venue" | "base";
|
|
64
88
|
} | {
|
|
65
89
|
readonly kind: "broken";
|
|
66
90
|
readonly file: string;
|
|
@@ -86,12 +110,12 @@ export declare const shippedSpec: (name: string) => string;
|
|
|
86
110
|
*/
|
|
87
111
|
export declare function resolveShipped(deps: PresetDeps): readonly Preset[];
|
|
88
112
|
/** A shipped venue as a name knows it, and the files of its chain: what tells it from a paper's own. */
|
|
89
|
-
export type ShippedVenue = Pick<Preset, "label" | "aliases" | "chain">;
|
|
113
|
+
export type ShippedVenue = Pick<Preset, "label" | "aliases" | "chain" | "mentions">;
|
|
90
114
|
/**
|
|
91
115
|
* A resolved preset as a name knows it: its label, its aliases, its chain. Pure. (Not Remeda's
|
|
92
116
|
* `pick`: the app layer may not import it — `boundaries/dependencies`, `APP_EXTERNALS`.)
|
|
93
117
|
*/
|
|
94
|
-
export declare const venueOf: ({ label, aliases, chain }: Preset) => ShippedVenue;
|
|
118
|
+
export declare const venueOf: ({ label, aliases, chain, mentions, }: Preset) => ShippedVenue;
|
|
95
119
|
/**
|
|
96
120
|
* THE ONE SOURCE OF VENUE NAMES: every shipped venue's label and `aliases` (with each `name` along
|
|
97
121
|
* its chain). Read by `paperlint new`, which refuses a folder name naming one, and through
|
package/dist/presets.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../src/presets.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../src/presets.ts"],"names":[],"mappings":"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"}
|
package/dist/presets.js
CHANGED
|
@@ -12,20 +12,27 @@
|
|
|
12
12
|
* Anything else — an npm package name, a bare name — is refused by name. npm presets are not
|
|
13
13
|
* supported yet; a bare name is almost always a shipped name missing its prefix, and the message says so.
|
|
14
14
|
*
|
|
15
|
+
* ── WHAT EACH FILE IS ─────────────────────────────────────────────────────────────
|
|
16
|
+
* Every preset declares its `type` (`venue-profile.schema.json`): a `venue` names itself and links
|
|
17
|
+
* its call for papers, a template `family` names no venue, and the TeX `base` set is extended by
|
|
18
|
+
* nothing. A chain must read top-down as template → venue: a family extends only a family, and
|
|
19
|
+
* nothing extends the base set. A chain that does not is refused naming both files.
|
|
20
|
+
*
|
|
15
21
|
* ── THE CHAIN ─────────────────────────────────────────────────────────────────────
|
|
16
22
|
* At most `MAX_PRESET_DEPTH` files, root to leaf. A cycle (relative paths can form one) is refused
|
|
17
23
|
* naming the chain. The chain is merged block by block:
|
|
18
24
|
*
|
|
19
25
|
* tex union — a child never removes a package its parent needs
|
|
20
26
|
* format per key, the child wins; `kinds` by kind name, a child's kind replaces that kind
|
|
21
|
-
* rules per rule id, the child wins
|
|
22
|
-
* template the child wins
|
|
27
|
+
* rules per rule id, the child wins; `ruleOrigins` keeps which file set each
|
|
28
|
+
* template the child wins, with its `template_forbids`; so does `name`, and `required_sections`, `register`, `talk` and
|
|
23
29
|
* `portal` (each whole)
|
|
24
30
|
* aliases union, with every `name` — what the venue is called along the chain
|
|
25
31
|
*
|
|
26
|
-
* ── THE LABEL
|
|
27
|
-
*
|
|
28
|
-
*
|
|
32
|
+
* ── THE ID AND THE LABEL ──────────────────────────────────────────────────────────
|
|
33
|
+
* The facts file and the build plan carry the preset's `id`: the spec's file name without its
|
|
34
|
+
* extension, a stable key consumers match against preset ids. Messages say the `label`: the most
|
|
35
|
+
* derived venue's `name` when the chain has a venue, else the id
|
|
29
36
|
* (`paperlint:agenticdev` → `agenticdev`, `./venues/usenix-sec.jsonc` → `usenix-sec`). Display
|
|
30
37
|
* only: nothing is ever resolved by it.
|
|
31
38
|
*/
|
|
@@ -82,24 +89,39 @@ function readPreset(spec, from, deps) {
|
|
|
82
89
|
});
|
|
83
90
|
}
|
|
84
91
|
}
|
|
85
|
-
/**
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
92
|
+
/**
|
|
93
|
+
* The chain from `child` up, leaf first: `below` is every file read so far, `child` the last of them.
|
|
94
|
+
* Each parent is refused when it closes a cycle, makes the chain too long, or is of a type `child`
|
|
95
|
+
* may not extend.
|
|
96
|
+
*/
|
|
97
|
+
function chainUp(below, child, deps) {
|
|
98
|
+
const up = child.preset.extends;
|
|
99
|
+
if (up === null)
|
|
100
|
+
return ok(below);
|
|
101
|
+
const r = readPreset(up, child.file, deps);
|
|
102
|
+
if (!r.ok)
|
|
103
|
+
return r;
|
|
104
|
+
const files = below.map((x) => x.file);
|
|
105
|
+
if (files.includes(r.value.file))
|
|
106
|
+
return err({ kind: "cycle", chain: [...files, r.value.file] });
|
|
107
|
+
if (below.length === MAX_PRESET_DEPTH)
|
|
108
|
+
return err({ kind: "too-deep", chain: [...files, r.value.file] });
|
|
109
|
+
const parentType = r.value.preset.identity.type;
|
|
110
|
+
if (parentType === "venue" && child.preset.identity.type === "family")
|
|
111
|
+
return err({
|
|
112
|
+
kind: "wrong-parent",
|
|
113
|
+
file: child.file,
|
|
114
|
+
parent: r.value.file,
|
|
115
|
+
parentType,
|
|
116
|
+
});
|
|
117
|
+
if (parentType === "base")
|
|
118
|
+
return err({
|
|
119
|
+
kind: "wrong-parent",
|
|
120
|
+
file: child.file,
|
|
121
|
+
parent: r.value.file,
|
|
122
|
+
parentType,
|
|
123
|
+
});
|
|
124
|
+
return chainUp([...below, r.value], r.value, deps);
|
|
103
125
|
}
|
|
104
126
|
/** A child's format over its parent's: per key the child wins, kinds by name. Pure. */
|
|
105
127
|
export function mergeFormat(parent, child) {
|
|
@@ -116,47 +138,58 @@ export function mergeFormat(parent, child) {
|
|
|
116
138
|
fontsText: pick("fontsText"),
|
|
117
139
|
fontsTitle: pick("fontsTitle"),
|
|
118
140
|
bodyEndsAt: pick("bodyEndsAt"),
|
|
141
|
+
appendixInBody: pick("appendixInBody"),
|
|
119
142
|
kinds: new Map([...parent.kinds, ...child.kinds]),
|
|
120
143
|
};
|
|
121
144
|
}
|
|
145
|
+
/** A venue's name; a family and the base set have none. Pure. */
|
|
146
|
+
const nameOf = (i) => i.type === "venue" ? i.name : null;
|
|
147
|
+
/** A venue's name as a list, empty for a family and the base set. Pure. */
|
|
148
|
+
const namesOf = (i) => i.type === "venue" ? [i.name] : [];
|
|
149
|
+
const NOTHING_MERGED = {
|
|
150
|
+
name: null,
|
|
151
|
+
template: null,
|
|
152
|
+
aliases: [],
|
|
153
|
+
blind: false,
|
|
154
|
+
mentions: "any",
|
|
155
|
+
requiredSections: [],
|
|
156
|
+
tex: NO_REQUIREMENTS,
|
|
157
|
+
format: NO_FORMAT,
|
|
158
|
+
rules: {},
|
|
159
|
+
ruleOrigins: {},
|
|
160
|
+
registerAnchors: [],
|
|
161
|
+
talk: null,
|
|
162
|
+
portal: null,
|
|
163
|
+
};
|
|
164
|
+
/** One file of the chain, `file`, merged over what its parents gave. Pure. */
|
|
165
|
+
const mergeOne = (acc, { preset: p, file }) => ({
|
|
166
|
+
name: nameOf(p.identity) ?? acc.name,
|
|
167
|
+
template: p.template === null
|
|
168
|
+
? acc.template
|
|
169
|
+
: { text: p.template, file, forbids: p.templateForbids },
|
|
170
|
+
aliases: [...new Set([...acc.aliases, ...namesOf(p.identity), ...p.aliases])],
|
|
171
|
+
blind: p.blind ?? acc.blind,
|
|
172
|
+
mentions: p.mentions ?? acc.mentions,
|
|
173
|
+
requiredSections: p.requiredSections ?? acc.requiredSections,
|
|
174
|
+
tex: p.tex ? mergeRequirements(acc.tex, p.tex) : acc.tex,
|
|
175
|
+
format: mergeFormat(acc.format, p.format),
|
|
176
|
+
rules: { ...acc.rules, ...p.rules },
|
|
177
|
+
ruleOrigins: {
|
|
178
|
+
...acc.ruleOrigins,
|
|
179
|
+
...Object.fromEntries(Object.keys(p.rules).map((id) => [id, file])),
|
|
180
|
+
},
|
|
181
|
+
registerAnchors: p.registerAnchors ?? acc.registerAnchors,
|
|
182
|
+
talk: p.talk ?? acc.talk,
|
|
183
|
+
portal: p.portal ?? acc.portal,
|
|
184
|
+
});
|
|
122
185
|
/** The chain, root first, merged into one preset. Pure. */
|
|
123
|
-
function merged(spec, rootFirst) {
|
|
124
|
-
const
|
|
125
|
-
name: null,
|
|
126
|
-
template: null,
|
|
127
|
-
aliases: [],
|
|
128
|
-
blind: false,
|
|
129
|
-
requiredSections: [],
|
|
130
|
-
tex: NO_REQUIREMENTS,
|
|
131
|
-
format: NO_FORMAT,
|
|
132
|
-
rules: {},
|
|
133
|
-
registerAnchors: [],
|
|
134
|
-
talk: null,
|
|
135
|
-
portal: null,
|
|
136
|
-
};
|
|
137
|
-
const m = rootFirst.reduce((acc, { preset: p, file }) => ({
|
|
138
|
-
name: p.name ?? acc.name,
|
|
139
|
-
template: p.template === null ? acc.template : { text: p.template, file },
|
|
140
|
-
aliases: [
|
|
141
|
-
...new Set([
|
|
142
|
-
...acc.aliases,
|
|
143
|
-
...(p.name === null ? [] : [p.name]),
|
|
144
|
-
...p.aliases,
|
|
145
|
-
]),
|
|
146
|
-
],
|
|
147
|
-
blind: p.blind ?? acc.blind,
|
|
148
|
-
requiredSections: p.requiredSections ?? acc.requiredSections,
|
|
149
|
-
tex: p.tex ? mergeRequirements(acc.tex, p.tex) : acc.tex,
|
|
150
|
-
format: mergeFormat(acc.format, p.format),
|
|
151
|
-
rules: { ...acc.rules, ...p.rules },
|
|
152
|
-
registerAnchors: p.registerAnchors ?? acc.registerAnchors,
|
|
153
|
-
talk: p.talk ?? acc.talk,
|
|
154
|
-
portal: p.portal ?? acc.portal,
|
|
155
|
-
}), base);
|
|
156
|
-
const { name, ...rest } = m;
|
|
186
|
+
function merged(spec, rootFirst, leaf) {
|
|
187
|
+
const { name, ...rest } = rootFirst.reduce(mergeOne, NOTHING_MERGED);
|
|
157
188
|
return {
|
|
189
|
+
id: labelOf(spec),
|
|
158
190
|
label: name ?? labelOf(spec),
|
|
159
191
|
chain: rootFirst.map((x) => x.file),
|
|
192
|
+
identity: leaf.preset.identity,
|
|
160
193
|
...rest,
|
|
161
194
|
};
|
|
162
195
|
}
|
|
@@ -165,13 +198,16 @@ function merged(spec, rootFirst) {
|
|
|
165
198
|
* does not resolve. Reads through `deps.files` only; never throws.
|
|
166
199
|
*/
|
|
167
200
|
export function resolvePreset(spec, fromFile, deps) {
|
|
168
|
-
const
|
|
201
|
+
const refused = (p) => err(p.kind === "not-found"
|
|
202
|
+
? { ...p, shipped: shippedPresets(deps.venuesDir) }
|
|
203
|
+
: p);
|
|
204
|
+
const leaf = readPreset(spec, fromFile, deps);
|
|
205
|
+
if (!leaf.ok)
|
|
206
|
+
return refused(leaf.error);
|
|
207
|
+
const chain = chainUp([leaf.value], leaf.value, deps);
|
|
169
208
|
if (!chain.ok)
|
|
170
|
-
return chain.error
|
|
171
|
-
|
|
172
|
-
: chain;
|
|
173
|
-
const rootFirst = [...chain.value].reverse();
|
|
174
|
-
return ok(merged(spec, rootFirst));
|
|
209
|
+
return refused(chain.error);
|
|
210
|
+
return ok(merged(spec, [...chain.value].reverse(), leaf.value));
|
|
175
211
|
}
|
|
176
212
|
/** The shipped presets' names (each is spelled `paperlint:<name>`). */
|
|
177
213
|
export function shippedPresets(venuesDir) {
|
|
@@ -195,11 +231,7 @@ export function resolveShipped(deps) {
|
|
|
195
231
|
* A resolved preset as a name knows it: its label, its aliases, its chain. Pure. (Not Remeda's
|
|
196
232
|
* `pick`: the app layer may not import it — `boundaries/dependencies`, `APP_EXTERNALS`.)
|
|
197
233
|
*/
|
|
198
|
-
export const venueOf = ({ label, aliases, chain }) => ({
|
|
199
|
-
label,
|
|
200
|
-
aliases,
|
|
201
|
-
chain,
|
|
202
|
-
});
|
|
234
|
+
export const venueOf = ({ label, aliases, chain, mentions, }) => ({ label, aliases, chain, mentions });
|
|
203
235
|
/**
|
|
204
236
|
* THE ONE SOURCE OF VENUE NAMES: every shipped venue's label and `aliases` (with each `name` along
|
|
205
237
|
* its chain). Read by `paperlint new`, which refuses a folder name naming one, and through
|
|
@@ -219,6 +251,10 @@ export function presetProblemText(p) {
|
|
|
219
251
|
return `the preset chain is longer than ${String(MAX_PRESET_DEPTH)}: ${p.chain.join(" → ")}`;
|
|
220
252
|
case "broken":
|
|
221
253
|
return `the preset ${p.file} does not parse: ${p.why}`;
|
|
254
|
+
case "wrong-parent":
|
|
255
|
+
return p.parentType === "base"
|
|
256
|
+
? `the preset ${p.file} extends ${p.parent}, the TeX base set — every paper gets that set already, and no preset extends it`
|
|
257
|
+
: `the preset ${p.file} is a template family and extends ${p.parent}, a venue — a family builds only on a family; a venue extends a family or another venue`;
|
|
222
258
|
}
|
|
223
259
|
}
|
|
224
260
|
/** A paper directory → its settings and its resolved preset. Reads through `deps.files`; never throws. */
|
package/dist/presets.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"presets.js","sourceRoot":"","sources":["../src/presets.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"presets.js","sourceRoot":"","sources":["../src/presets.ts"],"names":[],"mappings":"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"}
|
package/dist/submission.d.ts
CHANGED
|
@@ -37,6 +37,8 @@ export interface SubmissionTarget {
|
|
|
37
37
|
readonly id: number;
|
|
38
38
|
/** The paper's built PDF, absolute. */
|
|
39
39
|
readonly pdf: string;
|
|
40
|
+
/** The venue's call for papers (the preset's `url`); null when the preset names no venue. */
|
|
41
|
+
readonly call: string | null;
|
|
40
42
|
}
|
|
41
43
|
/** The paper directory → its portal and submission, or the line naming the file and key to set. */
|
|
42
44
|
export declare function submissionTarget(paperDir: string, deps: PresetDeps): Result<SubmissionTarget, string>;
|
|
@@ -49,6 +51,12 @@ export declare function showLines(t: SubmissionTarget, view: SubmissionView, loc
|
|
|
49
51
|
readonly shown: string;
|
|
50
52
|
readonly sha256: Sha256 | null;
|
|
51
53
|
}): readonly string[];
|
|
54
|
+
/**
|
|
55
|
+
* What `update` says before it sends a PDF, dry run or not: the author opens that file and checks it
|
|
56
|
+
* against the venue's call. paperlint's checks are an aid; the venue's reading of the PDF is what
|
|
57
|
+
* counts. Pure.
|
|
58
|
+
*/
|
|
59
|
+
export declare const checkPdfLine: (shown: string, call: string | null) => string;
|
|
52
60
|
/** `update`'s report. Pure. */
|
|
53
61
|
export declare function updateLines(o: UpdateOutcome, local: {
|
|
54
62
|
readonly shown: string;
|