paperlint 5.0.0 → 6.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/CLAUDE.md +13 -0
- package/CONTRIBUTING.md +3 -0
- package/README.md +8 -8
- package/bin/paperlint.mjs +5 -1
- package/dist/adapters/latex/index.d.ts +2 -1
- package/dist/adapters/latex/index.d.ts.map +1 -1
- package/dist/adapters/latex/index.js +6 -2
- package/dist/adapters/latex/index.js.map +1 -1
- package/dist/adapters/latex/layout.d.ts +27 -0
- package/dist/adapters/latex/layout.d.ts.map +1 -0
- package/dist/adapters/latex/layout.js +62 -0
- package/dist/adapters/latex/layout.js.map +1 -0
- package/dist/adapters/latex/nodes.d.ts.map +1 -1
- package/dist/adapters/latex/nodes.js +11 -1
- package/dist/adapters/latex/nodes.js.map +1 -1
- package/dist/adapters/latex/parse.d.ts.map +1 -1
- package/dist/adapters/latex/parse.js +5 -1
- package/dist/adapters/latex/parse.js.map +1 -1
- package/dist/adapters/latex/prose.d.ts +6 -1
- package/dist/adapters/latex/prose.d.ts.map +1 -1
- package/dist/adapters/latex/prose.js +142 -31
- package/dist/adapters/latex/prose.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +35 -18
- package/dist/cli.js.map +1 -1
- package/dist/domain/anonymity.d.ts +68 -0
- package/dist/domain/anonymity.d.ts.map +1 -0
- package/dist/domain/anonymity.js +94 -0
- package/dist/domain/anonymity.js.map +1 -0
- package/dist/domain/body-pages.d.ts +69 -0
- package/dist/domain/body-pages.d.ts.map +1 -0
- package/dist/domain/body-pages.js +141 -0
- package/dist/domain/body-pages.js.map +1 -0
- package/dist/domain/register.d.ts +96 -0
- package/dist/domain/register.d.ts.map +1 -0
- package/dist/domain/register.js +136 -0
- package/dist/domain/register.js.map +1 -0
- package/dist/domain/tex-document.d.ts +28 -0
- package/dist/domain/tex-document.d.ts.map +1 -1
- package/dist/domain/tex-document.js +8 -3
- package/dist/domain/tex-document.js.map +1 -1
- package/dist/eslint-rules/pdf-last-page-balance.d.ts +1 -1
- package/dist/eslint-rules/pdf-last-page-balance.js +2 -2
- package/dist/facts-file.d.ts +28 -2
- package/dist/facts-file.d.ts.map +1 -1
- package/dist/facts-file.js +54 -9
- package/dist/facts-file.js.map +1 -1
- package/dist/lib/paper-config.d.ts.map +1 -1
- package/dist/lib/paper-config.js +2 -1
- package/dist/lib/paper-config.js.map +1 -1
- package/dist/paper-settings.d.ts +11 -0
- package/dist/paper-settings.d.ts.map +1 -1
- package/dist/paper-settings.js +38 -4
- package/dist/paper-settings.js.map +1 -1
- package/dist/pdf-content.d.ts +40 -0
- package/dist/pdf-content.d.ts.map +1 -0
- package/dist/pdf-content.js +97 -0
- package/dist/pdf-content.js.map +1 -0
- package/dist/pdf-facts.d.ts +30 -0
- package/dist/pdf-facts.d.ts.map +1 -1
- package/dist/pdf-facts.js +37 -1
- package/dist/pdf-facts.js.map +1 -1
- package/dist/ports/latex.d.ts +8 -1
- package/dist/ports/latex.d.ts.map +1 -1
- package/dist/presets.d.ts +5 -0
- package/dist/presets.d.ts.map +1 -1
- package/dist/presets.js +8 -1
- package/dist/presets.js.map +1 -1
- package/dist/register-bands.d.ts +37 -0
- package/dist/register-bands.d.ts.map +1 -0
- package/dist/register-bands.js +196 -0
- package/dist/register-bands.js.map +1 -0
- package/dist/register.d.ts +4 -2
- package/dist/register.d.ts.map +1 -1
- package/dist/register.js +6 -45
- package/dist/register.js.map +1 -1
- package/dist/tex-requirements.d.ts +10 -0
- package/dist/tex-requirements.d.ts.map +1 -1
- package/dist/tex-requirements.js +29 -6
- package/dist/tex-requirements.js.map +1 -1
- package/dist/tex-venue-rules.d.ts +8 -2
- package/dist/tex-venue-rules.d.ts.map +1 -1
- package/dist/tex-venue-rules.js +40 -0
- package/dist/tex-venue-rules.js.map +1 -1
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/venue-rules.d.ts +38 -8
- package/dist/venue-rules.d.ts.map +1 -1
- package/dist/venue-rules.js +179 -41
- package/dist/venue-rules.js.map +1 -1
- package/docs/configuration.md +18 -16
- package/docs/e2e.md +32 -11
- package/docs/rules/anonymity/identity.md +111 -0
- package/docs/rules/format/layout-override.md +61 -0
- package/docs/rules/format/page-limit.md +108 -0
- package/docs/rules/pdf/body-size.md +87 -0
- package/docs/rules/tex/claim-emphasis.md +71 -0
- package/docs/rules/tex/contrast-frames.md +100 -0
- package/docs/rules/tex/relation-markers.md +72 -0
- package/docs/rules.md +59 -50
- package/eslint-rules/pdf-last-page-balance.harness.mjs +6 -1
- package/eslint-rules/pdf-last-page-balance.ts +2 -2
- package/fixtures/build-e2e/aidc/expect.json +1 -1
- package/fixtures/build-e2e/aidc/paperlint.json +1 -1
- package/fixtures/build-e2e/anon-ack/PIPELINE-STATUS.md +3 -0
- package/fixtures/build-e2e/anon-ack/expect.json +19 -0
- package/fixtures/build-e2e/anon-ack/paper.tex +31 -0
- package/fixtures/build-e2e/anon-ack/paperlint.json +1 -0
- package/fixtures/build-e2e/anon-author/PIPELINE-STATUS.md +3 -0
- package/fixtures/build-e2e/anon-author/expect.json +19 -0
- package/fixtures/build-e2e/anon-author/paper.tex +29 -0
- package/fixtures/build-e2e/anon-author/paperlint.json +1 -0
- package/fixtures/build-e2e/anon-bib/PIPELINE-STATUS.md +3 -0
- package/fixtures/build-e2e/anon-bib/expect.json +20 -0
- package/fixtures/build-e2e/anon-bib/paper.tex +35 -0
- package/fixtures/build-e2e/anon-bib/paperlint.json +1 -0
- package/fixtures/build-e2e/anon-href/PIPELINE-STATUS.md +3 -0
- package/fixtures/build-e2e/anon-href/expect.json +19 -0
- package/fixtures/build-e2e/anon-href/paper.tex +30 -0
- package/fixtures/build-e2e/anon-href/paperlint.json +1 -0
- package/fixtures/build-e2e/anon-macro/PIPELINE-STATUS.md +3 -0
- package/fixtures/build-e2e/anon-macro/expect.json +19 -0
- package/fixtures/build-e2e/anon-macro/paper.tex +30 -0
- package/fixtures/build-e2e/anon-macro/paperlint.json +1 -0
- package/fixtures/build-e2e/anon-pdfauthor/PIPELINE-STATUS.md +3 -0
- package/fixtures/build-e2e/anon-pdfauthor/expect.json +19 -0
- package/fixtures/build-e2e/anon-pdfauthor/paper.tex +31 -0
- package/fixtures/build-e2e/anon-pdfauthor/paperlint.json +1 -0
- package/fixtures/build-e2e/unbalanced/expect.json +2 -2
- package/lib/paper-config.ts +3 -1
- package/package.json +1 -1
- package/presets/acm-sigconf.jsonc +3 -1
- package/presets/aidc.jsonc +66 -17
- package/presets/ieee-conference.jsonc +8 -0
- package/presets/venue-profile.schema.json +57 -1
- package/skills/grade-paper-writing/SKILL.md +59 -27
- package/skills/grade-paper-writing/SKILL.md.spec.ts +58 -26
- package/skills/render-paper/extract-pdf-facts.harness.ts +3 -3
- package/src/adapters/latex/index.test.ts +91 -0
- package/src/adapters/latex/index.ts +6 -2
- package/src/adapters/latex/layout.ts +106 -0
- package/src/adapters/latex/nodes.ts +11 -3
- package/src/adapters/latex/parse.ts +5 -1
- package/src/adapters/latex/prose.ts +188 -58
- package/src/build.harness.mjs +2 -2
- package/src/build.test.ts +5 -0
- package/src/cli.test.ts +13 -0
- package/src/cli.ts +50 -17
- package/src/domain/anonymity.test.ts +163 -0
- package/src/domain/anonymity.ts +129 -0
- package/src/domain/body-pages.test.ts +300 -0
- package/src/domain/body-pages.ts +223 -0
- package/src/domain/register.test.ts +153 -0
- package/src/domain/register.ts +261 -0
- package/src/domain/tex-document.ts +47 -3
- package/src/facts-file.test.ts +100 -4
- package/src/facts-file.ts +91 -9
- package/src/new-paper.test.ts +7 -1
- package/src/paper-settings.test.ts +63 -6
- package/src/paper-settings.ts +53 -5
- package/src/pdf-content.test.ts +71 -0
- package/src/pdf-content.ts +125 -0
- package/src/pdf-facts.test.ts +110 -2
- package/src/pdf-facts.ts +106 -8
- package/src/ports/latex.ts +9 -0
- package/src/presets.ts +15 -9
- package/src/register-bands.test.ts +327 -0
- package/src/register-bands.ts +291 -0
- package/src/register.ts +7 -37
- package/src/rule-cases.test.ts +96 -20
- package/src/rule-docs.test.ts +0 -2
- package/src/tex-requirements.ts +56 -8
- package/src/tex-venue-rules.test.ts +110 -5
- package/src/tex-venue-rules.ts +64 -3
- package/src/types.ts +2 -0
- package/src/venue-rules.test.ts +351 -39
- package/src/venue-rules.ts +247 -47
package/dist/facts-file.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ import { type Sha256 } from "./domain/sha256.ts";
|
|
|
5
5
|
import type { MeasureGeometry } from "./ports/measure-geometry.ts";
|
|
6
6
|
import type { Files } from "./ports/files.ts";
|
|
7
7
|
import { type Result } from "./domain/result.ts";
|
|
8
|
-
export declare const FACTS_SCHEMA =
|
|
8
|
+
export declare const FACTS_SCHEMA = 3;
|
|
9
9
|
export declare const FACTS_DIR = "_build";
|
|
10
10
|
export declare const FACTS_FILE = "paper.facts.json";
|
|
11
11
|
/** Where a paper's facts live. */
|
|
@@ -53,7 +53,18 @@ export type FactsDocument = {
|
|
|
53
53
|
readonly last_page: LastPageEntry;
|
|
54
54
|
/** Schema 1's field, kept: the two heights, or null when the last page is a stub or a review build. */
|
|
55
55
|
readonly last_page_cols_pt: readonly [number, number] | null;
|
|
56
|
-
} & FactsGeometryFields;
|
|
56
|
+
} & FactsTextFields & FactsGeometryFields;
|
|
57
|
+
/** Schema 3's fields: what the PDF says (see the module header). */
|
|
58
|
+
export interface FactsTextFields {
|
|
59
|
+
readonly pages_text: readonly string[];
|
|
60
|
+
readonly metadata: Readonly<Record<string, string>>;
|
|
61
|
+
readonly links: readonly {
|
|
62
|
+
readonly page: number;
|
|
63
|
+
readonly uri: string;
|
|
64
|
+
}[];
|
|
65
|
+
readonly bib_anchor_page: number | null;
|
|
66
|
+
readonly appendix_anchor_page: number | null;
|
|
67
|
+
}
|
|
57
68
|
export declare function fontEntry(f: FontFact): FontEntry;
|
|
58
69
|
export declare function lastPageEntry(p: LastPage): LastPageEntry;
|
|
59
70
|
/** Everything the document is assembled from. */
|
|
@@ -102,6 +113,21 @@ export interface ReadFacts {
|
|
|
102
113
|
readonly fonts: readonly FontEntry[];
|
|
103
114
|
/** The geometry columns, or null when no measurer ran (`geometry_source` is null). */
|
|
104
115
|
readonly geometry: FlatGeometry | null;
|
|
116
|
+
/** What the PDF says: schema 3's fields, parsed. */
|
|
117
|
+
readonly text: TextFacts;
|
|
118
|
+
}
|
|
119
|
+
/** Schema 3's fields as a rule reads them. */
|
|
120
|
+
export interface TextFacts {
|
|
121
|
+
readonly pages: readonly string[];
|
|
122
|
+
readonly metadata: Readonly<Record<string, string>>;
|
|
123
|
+
readonly links: readonly {
|
|
124
|
+
readonly page: number;
|
|
125
|
+
readonly uri: string;
|
|
126
|
+
}[];
|
|
127
|
+
/** The page of the first bibliography entry hyperref anchored, or null. */
|
|
128
|
+
readonly bibAnchorPage: number | null;
|
|
129
|
+
/** The page hyperref anchored the appendix on, or null. */
|
|
130
|
+
readonly appendixAnchorPage: number | null;
|
|
105
131
|
}
|
|
106
132
|
/** Why a facts file cannot be judged. */
|
|
107
133
|
export type FactsProblem = {
|
package/dist/facts-file.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"facts-file.d.ts","sourceRoot":"","sources":["../src/facts-file.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"facts-file.d.ts","sourceRoot":"","sources":["../src/facts-file.ts"],"names":[],"mappings":"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"}
|
package/dist/facts-file.js
CHANGED
|
@@ -26,6 +26,14 @@
|
|
|
26
26
|
* fonts are all named `Type3`; `embedded` means a usable program is present, so a corrupted one is
|
|
27
27
|
* false. `pdf` is now relative to the PAPER directory, not to wherever the command ran.
|
|
28
28
|
*
|
|
29
|
+
* ── SCHEMA 3 (2026-09-29) ───────────────────────────────────────────────────────
|
|
30
|
+
* Adds what the PDF SAYS, for the rules that judge text rather than geometry: `pages_text` (each
|
|
31
|
+
* page's text, in content order), `metadata` (the Info dictionary and the XMP packet, flat),
|
|
32
|
+
* `links` (every link annotation's target and page), `bib_anchor_page` and `appendix_anchor_page`
|
|
33
|
+
* (the pages hyperref anchored the bibliography's first entry and the appendix on, or null). Every schema-2 field keeps its name and meaning. The number moves anyway: `anonymity/identity` and `format/page-limit` read these fields,
|
|
34
|
+
* and schema-2 facts without them would be judged as a PDF that says nothing — a clean pass over no
|
|
35
|
+
* input. A schema-2 file is refused by `pdf/fresh` with "rebuild", which is one `paperlint build`.
|
|
36
|
+
*
|
|
29
37
|
* 🔴 STALENESS. The PDF is not committed, so neither are these facts: they live in `_build/` and
|
|
30
38
|
* carry `pdf_sha256`. A rule compares it with the PDF on disk and refuses facts about another build.
|
|
31
39
|
*/
|
|
@@ -39,7 +47,7 @@ import { err, ok } from "./domain/result.js";
|
|
|
39
47
|
import { paperPreset, paperPresetProblem } from "./presets.js";
|
|
40
48
|
import { presetsDir } from "./package-dirs.js";
|
|
41
49
|
import { messageOf } from "./domain/text.js";
|
|
42
|
-
export const FACTS_SCHEMA =
|
|
50
|
+
export const FACTS_SCHEMA = 3;
|
|
43
51
|
export const FACTS_DIR = "_build";
|
|
44
52
|
export const FACTS_FILE = "paper.facts.json";
|
|
45
53
|
/** Where a paper's facts live. */
|
|
@@ -95,6 +103,11 @@ export function factsDocument(i) {
|
|
|
95
103
|
fonts: i.read.fonts.kind === "drawn" ? i.read.fonts.list.map(fontEntry) : [],
|
|
96
104
|
last_page: last,
|
|
97
105
|
last_page_cols_pt: last.kind === "measured" ? last.columns_pt : null,
|
|
106
|
+
pages_text: i.read.pageTexts,
|
|
107
|
+
metadata: i.read.metadata,
|
|
108
|
+
links: i.read.links,
|
|
109
|
+
bib_anchor_page: i.read.bibAnchorPage,
|
|
110
|
+
appendix_anchor_page: i.read.appendixAnchorPage,
|
|
98
111
|
...flatGeometry(i.geometry),
|
|
99
112
|
};
|
|
100
113
|
}
|
|
@@ -187,6 +200,42 @@ function geometryOf(d) {
|
|
|
187
200
|
pages_by_type: d.pages_by_type,
|
|
188
201
|
});
|
|
189
202
|
}
|
|
203
|
+
const isPage = (v) => typeof v === "number" && Number.isInteger(v) && v > 0;
|
|
204
|
+
const isPageOrNull = (v) => v === null || isPage(v);
|
|
205
|
+
const isStrings = (v) => Array.isArray(v) && v.every((x) => typeof x === "string");
|
|
206
|
+
const isStringRecord = (v) => isRecord(v) && Object.values(v).every((x) => typeof x === "string");
|
|
207
|
+
const isLinks = (v) => Array.isArray(v) &&
|
|
208
|
+
v.every((l) => isRecord(l) && isPage(l["page"]) && typeof l["uri"] === "string");
|
|
209
|
+
/** Schema 3's fields, or which one is wrong. */
|
|
210
|
+
function textOf(d) {
|
|
211
|
+
const { pages_text, metadata, links } = d;
|
|
212
|
+
const { bib_anchor_page, appendix_anchor_page } = d;
|
|
213
|
+
if (!isStrings(pages_text))
|
|
214
|
+
return err("`pages_text` is not a list of strings");
|
|
215
|
+
if (!isStringRecord(metadata))
|
|
216
|
+
return err("`metadata` is not an object of strings");
|
|
217
|
+
if (!isLinks(links))
|
|
218
|
+
return err("`links` is not a list of { page, uri }");
|
|
219
|
+
if (!isPageOrNull(bib_anchor_page))
|
|
220
|
+
return err("`bib_anchor_page` is neither a page number nor null");
|
|
221
|
+
if (!isPageOrNull(appendix_anchor_page))
|
|
222
|
+
return err("`appendix_anchor_page` is neither a page number nor null");
|
|
223
|
+
return ok({
|
|
224
|
+
pages: pages_text,
|
|
225
|
+
metadata,
|
|
226
|
+
links,
|
|
227
|
+
bibAnchorPage: bib_anchor_page,
|
|
228
|
+
appendixAnchorPage: appendix_anchor_page,
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
/** What the PDF measures and what it says: the geometry columns and schema 3's fields. */
|
|
232
|
+
function contentOf(d) {
|
|
233
|
+
const geometry = geometryOf(d);
|
|
234
|
+
if (!geometry.ok)
|
|
235
|
+
return geometry;
|
|
236
|
+
const text = textOf(d);
|
|
237
|
+
return text.ok ? ok({ geometry: geometry.value, text: text.value }) : text;
|
|
238
|
+
}
|
|
190
239
|
/** The PDF the facts describe: its path and its sha256. */
|
|
191
240
|
function artifactOf(d) {
|
|
192
241
|
const pdf = d["pdf"];
|
|
@@ -226,13 +275,9 @@ export function parseFactsText(text) {
|
|
|
226
275
|
kind: "broken",
|
|
227
276
|
why: "`fonts` is not a list of { name, type, embedded, program }",
|
|
228
277
|
});
|
|
229
|
-
const
|
|
230
|
-
if (!
|
|
231
|
-
return err({ kind: "broken", why:
|
|
232
|
-
return ok({
|
|
233
|
-
...artifact.value,
|
|
234
|
-
fonts,
|
|
235
|
-
geometry: geometry.value,
|
|
236
|
-
});
|
|
278
|
+
const content = contentOf(d);
|
|
279
|
+
if (!content.ok)
|
|
280
|
+
return err({ kind: "broken", why: content.error });
|
|
281
|
+
return ok({ ...artifact.value, fonts, ...content.value });
|
|
237
282
|
}
|
|
238
283
|
//# sourceMappingURL=facts-file.js.map
|
package/dist/facts-file.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"facts-file.js","sourceRoot":"","sources":["../src/facts-file.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"facts-file.js","sourceRoot":"","sources":["../src/facts-file.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paper-config.d.ts","sourceRoot":"","sources":["../../lib/paper-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAKH;;;;GAIG;AACH,eAAO,MAAM,UAAU,EAAE,MAAoB,CAAC;AAE9C;;;;;;;;;;GAUG;AACH,eAAO,MAAM,WAAW,EAAE,MAAyB,CAAC;AAEpD;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,SAAS,MAAM,EAKzC,CAAC;AAEH;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,EAChB,MAAM,GAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAoB,GAC7C,MAAM,CAmBR;AAKD;;;;GAIG;AACH,wBAAgB,UAAU,CACxB,IAAI,EAAE,MAAM,GACX,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,SAAS,CAQ/C;AAED,0GAA0G;AAC1G,eAAO,MAAM,mBAAmB,EAAE,MAAiB,CAAC;AAEpD;;;;;;;;GAQG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAoB,CAAC;AAEpD;;;;;;;;;GASG;AACH,eAAO,MAAM,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"paper-config.d.ts","sourceRoot":"","sources":["../../lib/paper-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAKH;;;;GAIG;AACH,eAAO,MAAM,UAAU,EAAE,MAAoB,CAAC;AAE9C;;;;;;;;;;GAUG;AACH,eAAO,MAAM,WAAW,EAAE,MAAyB,CAAC;AAEpD;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,SAAS,MAAM,EAKzC,CAAC;AAEH;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,EAChB,MAAM,GAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAoB,GAC7C,MAAM,CAmBR;AAKD;;;;GAIG;AACH,wBAAgB,UAAU,CACxB,IAAI,EAAE,MAAM,GACX,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,SAAS,CAQ/C;AAED,0GAA0G;AAC1G,eAAO,MAAM,mBAAmB,EAAE,MAAiB,CAAC;AAEpD;;;;;;;;GAQG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAoB,CAAC;AAEpD;;;;;;;;;GASG;AACH,eAAO,MAAM,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAiBzD,CAAC;AAEH,sGAAsG;AACtG,eAAO,MAAM,cAAc,EAAE,SAAS,MAAM,EAO1C,CAAC"}
|
package/dist/lib/paper-config.js
CHANGED
|
@@ -118,8 +118,9 @@ export const SETTINGS_KEYS = Object.freeze({
|
|
|
118
118
|
structure: "which files a paper directory must hold — paperlint lint",
|
|
119
119
|
rules: "rule overrides: { id: severity } for every paper in scope, or ESLint blocks (files, ignores, rules) — paperlint lint",
|
|
120
120
|
extends: "the venue preset: paperlint:<name> or ./path.jsonc — the pdf/ venue rules, paperlint build",
|
|
121
|
-
kind: "the kind of paper, whose page limit applies —
|
|
121
|
+
kind: "the kind of paper, whose page limit applies — format/page-limit",
|
|
122
122
|
pdf: "where the built PDF is, relative to the paper, when it is not paper.pdf — the facts",
|
|
123
|
+
identity: "what identifies the authors — names, handles, emails, affiliations, own project names; a blind venue's PDF must not say any of them — anonymity/identity. The root's list and a paper's are joined",
|
|
123
124
|
scripts: "how skill prose names the scripts — consumer.mjs",
|
|
124
125
|
timezone: "the zone deadline anchors are written in — consumer.mjs",
|
|
125
126
|
contactEmail: "the polite-pool address for citation lookups — consumer.mjs",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paper-config.js","sourceRoot":"","sources":["../../lib/paper-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEnD;;;;GAIG;AACH,MAAM,CAAC,MAAM,UAAU,GAAW,WAAW,CAAC;AAE9C;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,WAAW,GAAW,gBAAgB,CAAC;AAEpD;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAsB,MAAM,CAAC,MAAM,CAAC;IAC5D,WAAW;IACX,UAAU;IACV,UAAU;IACV,oBAAoB;CACrB,CAAC,CAAC;AAEH;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAC7B,QAAgB,EAChB,SAAoC,UAAU;IAE9C,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAChC,MAAM,OAAO,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7E,2FAA2F;IAC3F,gGAAgG;IAChG,kEAAkE;IAClE,MAAM,IAAI,GAAG,CAAC,KAA+B,EAAiB,EAAE;QAC9D,IAAI,CAAC,GAAG,KAAK,CAAC;QACd,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YACjB,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAC;YAClC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC,CAAC;IACF,OAAO,CACL,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACxD,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC;QAC5C,KAAK,CACN,CAAC;AACJ,CAAC;AAED,MAAM,QAAQ,GAAG,CAAC,CAAU,EAA0C,EAAE,CACtE,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAE3D;;;;GAIG;AACH,MAAM,UAAU,UAAU,CACxB,IAAY;IAEZ,IAAI,CAAU,CAAC;IACf,IAAI,CAAC;QACH,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IAChE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACrC,CAAC;AAED,0GAA0G;AAC1G,MAAM,CAAC,MAAM,mBAAmB,GAAW,QAAQ,CAAC;AAEpD;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAW,WAAW,CAAC;AAEpD;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,aAAa,GAAqC,MAAM,CAAC,MAAM,CAAC;IAC3E,SAAS,EAAE,mEAAmE;IAC9E,SAAS,EAAE,0DAA0D;IACrE,KAAK,EACH,sHAAsH;IACxH,OAAO,EACL,4FAA4F;IAC9F,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"paper-config.js","sourceRoot":"","sources":["../../lib/paper-config.ts"],"names":[],"mappings":"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"}
|
package/dist/paper-settings.d.ts
CHANGED
|
@@ -14,6 +14,12 @@ export interface PaperSettings {
|
|
|
14
14
|
* against the shipped rules.
|
|
15
15
|
*/
|
|
16
16
|
readonly rules: Readonly<Record<string, unknown>> | readonly unknown[] | null;
|
|
17
|
+
/**
|
|
18
|
+
* What identifies the authors — `anonymity/identity` requires a blind venue's PDF to say none of it.
|
|
19
|
+
* The root's list and the paper's own, joined: a paper adds its co-authors to the project's author
|
|
20
|
+
* and cannot drop them by accident. Null when neither declares one.
|
|
21
|
+
*/
|
|
22
|
+
readonly identity: readonly string[] | null;
|
|
17
23
|
}
|
|
18
24
|
/** Why a paper's settings cannot be read. */
|
|
19
25
|
export type SettingsProblem = {
|
|
@@ -23,6 +29,11 @@ export type SettingsProblem = {
|
|
|
23
29
|
declare const STRING_FIELDS: readonly ["extends", "kind", "pdf"];
|
|
24
30
|
/** `extends`, `kind` and `pdf`, each null when absent. The root file's defaults parse the same way. */
|
|
25
31
|
export declare function stringFields(d: Readonly<Record<string, unknown>>): Result<Pick<PaperSettings, (typeof STRING_FIELDS)[number]>, string>;
|
|
32
|
+
/**
|
|
33
|
+
* `identity`: absent is null; otherwise a list of strings, each with a letter or digit in it — a
|
|
34
|
+
* blank entry would match nothing and read as a declared, clean identity.
|
|
35
|
+
*/
|
|
36
|
+
export declare function identityField(d: Readonly<Record<string, unknown>>): Result<readonly string[] | null, string>;
|
|
26
37
|
/** The parsed JSON of `paperlint.json` → the settings, or one line saying what is wrong. Pure. */
|
|
27
38
|
export declare function parsePaperSettings(json: unknown): Result<PaperSettings, string>;
|
|
28
39
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paper-settings.d.ts","sourceRoot":"","sources":["../src/paper-settings.ts"],"names":[],"mappings":"AAyBA,OAAO,EAAW,KAAK,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAEL,KAAK,MAAM,EACX,KAAK,SAAS,EACf,MAAM,mBAAmB,CAAC;AAG3B,2DAA2D;AAC3D,MAAM,WAAW,aAAa;IAC5B,2FAA2F;IAC3F,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,4EAA4E;IAC5E,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,uEAAuE;IACvE,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,SAAS,OAAO,EAAE,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"paper-settings.d.ts","sourceRoot":"","sources":["../src/paper-settings.ts"],"names":[],"mappings":"AAyBA,OAAO,EAAW,KAAK,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAEL,KAAK,MAAM,EACX,KAAK,SAAS,EACf,MAAM,mBAAmB,CAAC;AAG3B,2DAA2D;AAC3D,MAAM,WAAW,aAAa;IAC5B,2FAA2F;IAC3F,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,4EAA4E;IAC5E,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,uEAAuE;IACvE,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,SAAS,OAAO,EAAE,GAAG,IAAI,CAAC;IAC9E;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAAC;CAC7C;AAED,6CAA6C;AAC7C,MAAM,MAAM,eAAe,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC;AAGhF,QAAA,MAAM,aAAa,qCAAsC,CAAC;AAkB1D,uGAAuG;AACvG,wBAAgB,YAAY,CAC1B,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GACnC,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAYrE;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GACnC,MAAM,CAAC,SAAS,MAAM,EAAE,GAAG,IAAI,EAAE,MAAM,CAAC,CAS1C;AAED,kGAAkG;AAClG,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,OAAO,GACZ,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CA0B/B;AA8CD;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,MAAM,GACf,MAAM,CAAC,aAAa,GAAG,IAAI,EAAE,eAAe,CAAC,CAS/C;AAsCD;;;;GAIG;AACH,wBAAgB,UAAU,CACxB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,aAAa,EACvB,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,GAC3B,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAI,CAAC,CAK1C"}
|
package/dist/paper-settings.js
CHANGED
|
@@ -49,6 +49,19 @@ export function stringFields(d) {
|
|
|
49
49
|
pdf: out["pdf"] ?? null,
|
|
50
50
|
});
|
|
51
51
|
}
|
|
52
|
+
/**
|
|
53
|
+
* `identity`: absent is null; otherwise a list of strings, each with a letter or digit in it — a
|
|
54
|
+
* blank entry would match nothing and read as a declared, clean identity.
|
|
55
|
+
*/
|
|
56
|
+
export function identityField(d) {
|
|
57
|
+
const v = d["identity"];
|
|
58
|
+
if (v === undefined)
|
|
59
|
+
return ok(null);
|
|
60
|
+
return Array.isArray(v) &&
|
|
61
|
+
v.every((x) => typeof x === "string" && /[\p{L}\p{N}]/u.test(x))
|
|
62
|
+
? ok(v.filter((x) => typeof x === "string"))
|
|
63
|
+
: err(`"identity" must be a list of strings, each with a letter or digit, got ${JSON.stringify(v)}`);
|
|
64
|
+
}
|
|
52
65
|
/** The parsed JSON of `paperlint.json` → the settings, or one line saying what is wrong. Pure. */
|
|
53
66
|
export function parsePaperSettings(json) {
|
|
54
67
|
if (!isObject(json))
|
|
@@ -62,12 +75,16 @@ export function parsePaperSettings(json) {
|
|
|
62
75
|
const fields = stringFields(json);
|
|
63
76
|
if (!fields.ok)
|
|
64
77
|
return fields;
|
|
78
|
+
const identity = identityField(json);
|
|
79
|
+
if (!identity.ok)
|
|
80
|
+
return identity;
|
|
65
81
|
const rules = json["rules"];
|
|
66
82
|
if (rules !== undefined && !isObject(rules) && !Array.isArray(rules))
|
|
67
83
|
return err(`"rules" must be an object of rule id → severity, or a list of ESLint blocks`);
|
|
68
84
|
return ok({
|
|
69
85
|
...fields.value,
|
|
70
86
|
rules: rules ?? null,
|
|
87
|
+
identity: identity.value,
|
|
71
88
|
});
|
|
72
89
|
}
|
|
73
90
|
/** A JSON file through `files`: undefined when absent, the problem when it does not parse. */
|
|
@@ -95,9 +112,18 @@ function rootDefaults(files, paperDir) {
|
|
|
95
112
|
if (!isObject(json.value))
|
|
96
113
|
return ok(null);
|
|
97
114
|
const fields = stringFields(json.value);
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
115
|
+
const identity = identityField(json.value);
|
|
116
|
+
if (!fields.ok)
|
|
117
|
+
return err({
|
|
118
|
+
kind: "broken",
|
|
119
|
+
why: `the root ${CONFIG_FILE}: ${fields.error}`,
|
|
120
|
+
});
|
|
121
|
+
return identity.ok
|
|
122
|
+
? ok({ ...fields.value, identity: identity.value })
|
|
123
|
+
: err({
|
|
124
|
+
kind: "broken",
|
|
125
|
+
why: `the root ${CONFIG_FILE}: ${identity.error}`,
|
|
126
|
+
});
|
|
101
127
|
}
|
|
102
128
|
/**
|
|
103
129
|
* A paper's settings, its own `paperlint.json` merged over the root's defaults: null when neither
|
|
@@ -115,7 +141,14 @@ export function readPaperSettings(files, paperDir) {
|
|
|
115
141
|
return defaults;
|
|
116
142
|
return ok(merge(defaults.value, parsed.value));
|
|
117
143
|
}
|
|
118
|
-
const NO_DEFAULTS = {
|
|
144
|
+
const NO_DEFAULTS = {
|
|
145
|
+
extends: null,
|
|
146
|
+
kind: null,
|
|
147
|
+
pdf: null,
|
|
148
|
+
identity: null,
|
|
149
|
+
};
|
|
150
|
+
/** Both lists, joined without repeats; null when neither side has one. */
|
|
151
|
+
const joined = (a, b) => a === null && b === null ? null : [...new Set([...(a ?? []), ...(b ?? [])])];
|
|
119
152
|
/** The paper's own values win; each absent one falls back to the root's. */
|
|
120
153
|
function merge(root, paper) {
|
|
121
154
|
const r = root ?? NO_DEFAULTS;
|
|
@@ -125,6 +158,7 @@ function merge(root, paper) {
|
|
|
125
158
|
kind: p.kind ?? r.kind,
|
|
126
159
|
pdf: p.pdf ?? r.pdf,
|
|
127
160
|
rules: p.rules,
|
|
161
|
+
identity: joined(r.identity, p.identity),
|
|
128
162
|
};
|
|
129
163
|
return paper === null && Object.values(merged).every((v) => v === null)
|
|
130
164
|
? null
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paper-settings.js","sourceRoot":"","sources":["../src/paper-settings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EACL,WAAW,EACX,cAAc,EACd,aAAa,EACb,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,GAAG,EAAE,EAAE,EAAe,MAAM,oBAAoB,CAAC;AAE1D,OAAO,EACL,gBAAgB,GAGjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"paper-settings.js","sourceRoot":"","sources":["../src/paper-settings.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A page's text: its items in content order, joined WITHOUT a separator — pdf.js emits a space as
|
|
3
|
+
* an item of its own where the glyphs leave a gap, so a word split into two items by kerning comes
|
|
4
|
+
* back whole — with a line break after every item pdf.js marks as ending a line.
|
|
5
|
+
*/
|
|
6
|
+
export declare const pageTextOf: (items: readonly unknown[]) => string;
|
|
7
|
+
/**
|
|
8
|
+
* The target of every link annotation on a page, once each: its `url`, else its `unsafeUrl`. A link
|
|
9
|
+
* whose text breaks across lines is one annotation per line (measured: hyperref's `\\href` gave two
|
|
10
|
+
* for one target), and one target is one fact.
|
|
11
|
+
*/
|
|
12
|
+
export declare const linkTargetsOf: (annotations: readonly unknown[]) => readonly string[];
|
|
13
|
+
/** The page reference an explicit destination starts with, or null for anything else. */
|
|
14
|
+
export declare const refOf: (dest: unknown) => object | null;
|
|
15
|
+
/**
|
|
16
|
+
* The page references of the named destinations whose name starts with `prefix`, from pdf.js's
|
|
17
|
+
* `getDestinations()` (name → explicit destination). hyperref names one `cite.<key>` per
|
|
18
|
+
* `\bibitem`, and, after `\appendix` in the standard classes, the appendix's sections
|
|
19
|
+
* `appendix.<letter>`.
|
|
20
|
+
*/
|
|
21
|
+
export declare const namedRefs: (destinations: unknown, prefix: string) => readonly object[];
|
|
22
|
+
/**
|
|
23
|
+
* The destinations of the top-level bookmarks that open an appendix, from pdf.js's `getOutline()`:
|
|
24
|
+
* each a name to look up, or an explicit destination. IEEEtran's `\appendices` names its sections
|
|
25
|
+
* `section*.<n>`, so the bookmark's title is what says it is an appendix.
|
|
26
|
+
*/
|
|
27
|
+
export declare const appendixOutlineDests: (outline: unknown) => readonly unknown[];
|
|
28
|
+
/**
|
|
29
|
+
* The XMP packet pdf.js parsed, as `name → value`: its `Metadata` iterates `[name, value]` pairs.
|
|
30
|
+
* Null when the PDF carries no packet.
|
|
31
|
+
*/
|
|
32
|
+
export declare const xmpOf: (packet: Iterable<unknown> | null) => Readonly<Record<string, unknown>> | null;
|
|
33
|
+
/**
|
|
34
|
+
* The document's metadata as flat `field → text`: every string of the Info dictionary (`Author`,
|
|
35
|
+
* `Title`, …), of its custom entries (`PTEX.Fullbanner`), and of the XMP packet, whose names carry
|
|
36
|
+
* their namespace (`dc:creator`), as pdf.js's `getMetadata` returns them. `xmp` is the packet's
|
|
37
|
+
* `xmpOf`, or null when the PDF has none.
|
|
38
|
+
*/
|
|
39
|
+
export declare function metadataOf(info: unknown, xmp: unknown): Readonly<Record<string, string>>;
|
|
40
|
+
//# sourceMappingURL=pdf-content.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pdf-content.d.ts","sourceRoot":"","sources":["../src/pdf-content.ts"],"names":[],"mappings":"AAQA;;;;GAIG;AACH,eAAO,MAAM,UAAU,GAAI,OAAO,SAAS,OAAO,EAAE,KAAG,MAM1C,CAAC;AAEd;;;;GAIG;AACH,eAAO,MAAM,aAAa,GACxB,aAAa,SAAS,OAAO,EAAE,KAC9B,SAAS,MAAM,EAOjB,CAAC;AAEF,yFAAyF;AACzF,eAAO,MAAM,KAAK,GAAI,MAAM,OAAO,KAAG,MAAM,GAAG,IAG9C,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,SAAS,GACpB,cAAc,OAAO,EACrB,QAAQ,MAAM,KACb,SAAS,MAAM,EAMV,CAAC;AAKT;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,GAAI,SAAS,OAAO,KAAG,SAAS,OAAO,EAQhE,CAAC;AAkBT;;;GAGG;AACH,eAAO,MAAM,KAAK,GAChB,QAAQ,QAAQ,CAAC,OAAO,CAAC,GAAG,IAAI,KAC/B,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,IAOhC,CAAC;AAER;;;;;GAKG;AACH,wBAAgB,UAAU,CACxB,IAAI,EAAE,OAAO,EACb,GAAG,EAAE,OAAO,GACX,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAMlC"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What a page SAYS, as pdf.js exports it — PURE. The anonymity and page-limit rules judge text, so
|
|
3
|
+
* the facts carry each page's text, the targets of its links, where the bibliography's first entry
|
|
4
|
+
* and the appendix are anchored, and the document's metadata. `pdf-facts.ts` reads the PDF and
|
|
5
|
+
* calls these; nothing here knows what a rule does with the result.
|
|
6
|
+
*/
|
|
7
|
+
import { fieldOf, isRecord } from "./domain/record.js";
|
|
8
|
+
/**
|
|
9
|
+
* A page's text: its items in content order, joined WITHOUT a separator — pdf.js emits a space as
|
|
10
|
+
* an item of its own where the glyphs leave a gap, so a word split into two items by kerning comes
|
|
11
|
+
* back whole — with a line break after every item pdf.js marks as ending a line.
|
|
12
|
+
*/
|
|
13
|
+
export const pageTextOf = (items) => items
|
|
14
|
+
.map((it) => {
|
|
15
|
+
const s = fieldOf(it, "str");
|
|
16
|
+
return `${typeof s === "string" ? s : ""}${fieldOf(it, "hasEOL") === true ? "\n" : ""}`;
|
|
17
|
+
})
|
|
18
|
+
.join("");
|
|
19
|
+
/**
|
|
20
|
+
* The target of every link annotation on a page, once each: its `url`, else its `unsafeUrl`. A link
|
|
21
|
+
* whose text breaks across lines is one annotation per line (measured: hyperref's `\\href` gave two
|
|
22
|
+
* for one target), and one target is one fact.
|
|
23
|
+
*/
|
|
24
|
+
export const linkTargetsOf = (annotations) => {
|
|
25
|
+
const urls = annotations.flatMap((a) => {
|
|
26
|
+
if (fieldOf(a, "subtype") !== "Link")
|
|
27
|
+
return [];
|
|
28
|
+
const url = fieldOf(a, "url") ?? fieldOf(a, "unsafeUrl");
|
|
29
|
+
return typeof url === "string" && url !== "" ? [url] : [];
|
|
30
|
+
});
|
|
31
|
+
return urls.filter((u, i) => urls.indexOf(u) === i);
|
|
32
|
+
};
|
|
33
|
+
/** The page reference an explicit destination starts with, or null for anything else. */
|
|
34
|
+
export const refOf = (dest) => {
|
|
35
|
+
const ref = Array.isArray(dest) ? dest[0] : undefined;
|
|
36
|
+
return typeof ref === "object" && ref !== null ? ref : null;
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* The page references of the named destinations whose name starts with `prefix`, from pdf.js's
|
|
40
|
+
* `getDestinations()` (name → explicit destination). hyperref names one `cite.<key>` per
|
|
41
|
+
* `\bibitem`, and, after `\appendix` in the standard classes, the appendix's sections
|
|
42
|
+
* `appendix.<letter>`.
|
|
43
|
+
*/
|
|
44
|
+
export const namedRefs = (destinations, prefix) => isRecord(destinations)
|
|
45
|
+
? Object.entries(destinations).flatMap(([name, dest]) => {
|
|
46
|
+
const ref = refOf(dest);
|
|
47
|
+
return name.startsWith(prefix) && ref !== null ? [ref] : [];
|
|
48
|
+
})
|
|
49
|
+
: [];
|
|
50
|
+
/** A bookmark title that opens an appendix: «Appendix A: …», «APPENDIX», «Appendices». */
|
|
51
|
+
const APPENDIX_TITLE = /^\s*appendi(?:x|ces)\b/iu;
|
|
52
|
+
/**
|
|
53
|
+
* The destinations of the top-level bookmarks that open an appendix, from pdf.js's `getOutline()`:
|
|
54
|
+
* each a name to look up, or an explicit destination. IEEEtran's `\appendices` names its sections
|
|
55
|
+
* `section*.<n>`, so the bookmark's title is what says it is an appendix.
|
|
56
|
+
*/
|
|
57
|
+
export const appendixOutlineDests = (outline) => Array.isArray(outline)
|
|
58
|
+
? outline.flatMap((item) => {
|
|
59
|
+
const title = fieldOf(item, "title");
|
|
60
|
+
return typeof title === "string" && APPENDIX_TITLE.test(title)
|
|
61
|
+
? [fieldOf(item, "dest")]
|
|
62
|
+
: [];
|
|
63
|
+
})
|
|
64
|
+
: [];
|
|
65
|
+
/** A value of a metadata field as text: a string, or the strings of a list; nothing else. */
|
|
66
|
+
const textsOf = (v) => typeof v === "string"
|
|
67
|
+
? [v]
|
|
68
|
+
: Array.isArray(v)
|
|
69
|
+
? v.filter((x) => typeof x === "string")
|
|
70
|
+
: [];
|
|
71
|
+
const entries = (rec) => isRecord(rec)
|
|
72
|
+
? Object.entries(rec).flatMap(([k, v]) => {
|
|
73
|
+
const text = textsOf(v).join("; ");
|
|
74
|
+
return text === "" ? [] : [[k, text]];
|
|
75
|
+
})
|
|
76
|
+
: [];
|
|
77
|
+
/**
|
|
78
|
+
* The XMP packet pdf.js parsed, as `name → value`: its `Metadata` iterates `[name, value]` pairs.
|
|
79
|
+
* Null when the PDF carries no packet.
|
|
80
|
+
*/
|
|
81
|
+
export const xmpOf = (packet) => packet === null
|
|
82
|
+
? null
|
|
83
|
+
: Object.fromEntries([...packet].flatMap((e) => Array.isArray(e) && typeof e[0] === "string" ? [[e[0], e[1]]] : []));
|
|
84
|
+
/**
|
|
85
|
+
* The document's metadata as flat `field → text`: every string of the Info dictionary (`Author`,
|
|
86
|
+
* `Title`, …), of its custom entries (`PTEX.Fullbanner`), and of the XMP packet, whose names carry
|
|
87
|
+
* their namespace (`dc:creator`), as pdf.js's `getMetadata` returns them. `xmp` is the packet's
|
|
88
|
+
* `xmpOf`, or null when the PDF has none.
|
|
89
|
+
*/
|
|
90
|
+
export function metadataOf(info, xmp) {
|
|
91
|
+
return Object.fromEntries([
|
|
92
|
+
...entries(info),
|
|
93
|
+
...entries(fieldOf(info, "Custom")),
|
|
94
|
+
...entries(xmp),
|
|
95
|
+
]);
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=pdf-content.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pdf-content.js","sourceRoot":"","sources":["../src/pdf-content.ts"],"names":[],"mappings":"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"}
|
package/dist/pdf-facts.d.ts
CHANGED
|
@@ -46,11 +46,26 @@ interface Page {
|
|
|
46
46
|
getViewport(params: {
|
|
47
47
|
scale: number;
|
|
48
48
|
}): Viewport;
|
|
49
|
+
/** pdf.js's annotations; the link ones carry `url`. */
|
|
50
|
+
getAnnotations(): Promise<readonly unknown[]>;
|
|
49
51
|
}
|
|
50
52
|
/** A document as this module reads it; pdf.js's `PDFDocumentProxy` is one. */
|
|
51
53
|
interface Doc {
|
|
52
54
|
readonly numPages: number;
|
|
53
55
|
getPage(pageNumber: number): Promise<Page>;
|
|
56
|
+
/** The Info dictionary, and the XMP packet when there is one. */
|
|
57
|
+
getMetadata(): Promise<{
|
|
58
|
+
readonly info: unknown;
|
|
59
|
+
readonly metadata: Iterable<unknown> | null;
|
|
60
|
+
}>;
|
|
61
|
+
/** Every named destination: name → explicit destination. */
|
|
62
|
+
getDestinations(): Promise<unknown>;
|
|
63
|
+
/** The 0-based index of the page a destination's reference names. */
|
|
64
|
+
getPageIndex(ref: object): Promise<number>;
|
|
65
|
+
/** One named destination, or null. */
|
|
66
|
+
getDestination(id: string): Promise<unknown>;
|
|
67
|
+
/** The bookmarks: `{ title, dest, items }`, or null. */
|
|
68
|
+
getOutline(): Promise<unknown>;
|
|
54
69
|
}
|
|
55
70
|
/**
|
|
56
71
|
* What `readPdf` measured. `last` is the last page's words; `classifyLastPage` reads it. `layout` is
|
|
@@ -61,6 +76,21 @@ export interface PdfFacts {
|
|
|
61
76
|
readonly fonts: Fonts;
|
|
62
77
|
readonly last: PageText;
|
|
63
78
|
readonly layout: readonly PageLayout[];
|
|
79
|
+
/** Each page's text, in content order, a line break after each line (`pageTextOf`). */
|
|
80
|
+
readonly pageTexts: readonly string[];
|
|
81
|
+
/** The target of every link, with its 1-based page. */
|
|
82
|
+
readonly links: readonly PdfLink[];
|
|
83
|
+
/** The 1-based page of the first bibliography entry hyperref anchored, or null without one. */
|
|
84
|
+
readonly bibAnchorPage: number | null;
|
|
85
|
+
/** The 1-based page the appendix starts on, from hyperref's destinations and bookmarks, or null. */
|
|
86
|
+
readonly appendixAnchorPage: number | null;
|
|
87
|
+
/** The Info dictionary and XMP packet, flat (`metadataOf`). */
|
|
88
|
+
readonly metadata: Readonly<Record<string, string>>;
|
|
89
|
+
}
|
|
90
|
+
/** A link annotation's target, and the page it is on. */
|
|
91
|
+
export interface PdfLink {
|
|
92
|
+
readonly page: number;
|
|
93
|
+
readonly uri: string;
|
|
64
94
|
}
|
|
65
95
|
export type PdfReadFailure = "unreadable" | "encrypted" | "zero-fonts-on-text" | "empty";
|
|
66
96
|
export type PdfRead = {
|
package/dist/pdf-facts.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pdf-facts.d.ts","sourceRoot":"","sources":["../src/pdf-facts.ts"],"names":[],"mappings":"AAsBA,OAAO,EAKL,KAAK,KAAK,EACV,KAAK,QAAQ,EACb,KAAK,OAAO,EAGb,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,UAAU,EAAW,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"pdf-facts.d.ts","sourceRoot":"","sources":["../src/pdf-facts.ts"],"names":[],"mappings":"AAsBA,OAAO,EAKL,KAAK,KAAK,EACV,KAAK,QAAQ,EACb,KAAK,OAAO,EAGb,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,UAAU,EAAW,MAAM,yBAAyB,CAAC;AAenE,KAAK,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC,cAAc,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC;AAE1E,uEAAuE;AACvE,UAAU,QAAQ;IAChB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,qDAAqD;IACrD,QAAQ,CAAC,SAAS,EAAE,SAAS,OAAO,EAAE,CAAC;IACvC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AACD,4FAA4F;AAC5F,UAAU,aAAa;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC;CAC1B;AACD,KAAK,IAAI,GAAG,QAAQ,GAAG,aAAa,CAAC;AAErC,mFAAmF;AACnF,UAAU,YAAY;IACpB,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,SAAS,EAAE,SAAS,OAAO,EAAE,CAAC;CACxC;AAED,0EAA0E;AAC1E,UAAU,QAAQ;IAChB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,sBAAsB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,SAAS,OAAO,EAAE,CAAC;CAClE;AAED;;;GAGG;AACH,UAAU,IAAI;IACZ,eAAe,IAAI,OAAO,CAAC,YAAY,CAAC,CAAC;IACzC,cAAc,IAAI,OAAO,CAAC;QAAE,QAAQ,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,CAAA;KAAE,CAAC,CAAC;IAC/D,qFAAqF;IACrF,QAAQ,CAAC,UAAU,EAAE;QACnB,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;QACzB,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;QACzB,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,SAAS,OAAO,EAAE,CAAC,CAAC;KACnD,CAAC;IACF,WAAW,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,QAAQ,CAAC;IACjD,uDAAuD;IACvD,cAAc,IAAI,OAAO,CAAC,SAAS,OAAO,EAAE,CAAC,CAAC;CAC/C;AAED,8EAA8E;AAC9E,UAAU,GAAG;IACX,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,iEAAiE;IACjE,WAAW,IAAI,OAAO,CAAC;QACrB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;QACvB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;KAC7C,CAAC,CAAC;IACH,4DAA4D;IAC5D,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IACpC,qEAAqE;IACrE,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3C,sCAAsC;IACtC,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7C,wDAAwD;IACxD,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;CAChC;AAQD;;;GAGG;AACH,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,SAAS,UAAU,EAAE,CAAC;IACvC,uFAAuF;IACvF,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,uDAAuD;IACvD,QAAQ,CAAC,KAAK,EAAE,SAAS,OAAO,EAAE,CAAC;IACnC,+FAA+F;IAC/F,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,oGAAoG;IACpG,QAAQ,CAAC,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3C,+DAA+D;IAC/D,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACrD;AAED,yDAAyD;AACzD,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,cAAc,GACxB,YAAY,GAAG,WAAW,GAAG,oBAAoB,GAAG,OAAO,CAAC;AAE9D,MAAM,MAAM,OAAO,GACf;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAA;CAAE,GAC/C;IACE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IACnB,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB,CAAC;AAEN,iGAAiG;AACjG,MAAM,MAAM,SAAS,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;AAE3D;;;;GAIG;AACH,eAAO,MAAM,aAAa;;;;;;CAMhB,CAAC;AAeX,oGAAoG;AACpG,wBAAgB,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,GAAG,IAAI,CAclE;AAsJD;;;;GAIG;AACH,wBAAsB,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CA8BpE;AAsDD,+EAA+E;AAC/E,wBAAgB,SAAS,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAQ7C;AAED,4FAA4F;AAC5F,eAAO,MAAM,OAAO,EAAE,SAgBrB,CAAC;AAEF,4EAA4E;AAC5E,wBAAgB,eAAe,CAC7B,CAAC,EAAE,OAAO,CAAC,OAAO,EAAE;IAAE,EAAE,EAAE,KAAK,CAAA;CAAE,CAAC,EAClC,GAAG,EAAE,MAAM,GACV,MAAM,CAER"}
|