paperlint 10.4.1 → 11.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.
Files changed (151) hide show
  1. package/.github/workflows/deadlines.yml +27 -7
  2. package/README.md +16 -15
  3. package/dist/adapters/hotcrp/index.d.ts +6 -4
  4. package/dist/adapters/hotcrp/index.d.ts.map +1 -1
  5. package/dist/adapters/hotcrp/index.js +6 -4
  6. package/dist/adapters/hotcrp/index.js.map +1 -1
  7. package/dist/adapters/hotcrp/portal.io.d.ts +3 -1
  8. package/dist/adapters/hotcrp/portal.io.d.ts.map +1 -1
  9. package/dist/adapters/hotcrp/portal.io.js +51 -11
  10. package/dist/adapters/hotcrp/portal.io.js.map +1 -1
  11. package/dist/adapters/hotcrp/response.d.ts +12 -1
  12. package/dist/adapters/hotcrp/response.d.ts.map +1 -1
  13. package/dist/adapters/hotcrp/response.js +52 -3
  14. package/dist/adapters/hotcrp/response.js.map +1 -1
  15. package/dist/adapters/hotcrp/site.d.ts +9 -0
  16. package/dist/adapters/hotcrp/site.d.ts.map +1 -0
  17. package/dist/adapters/hotcrp/site.js +21 -0
  18. package/dist/adapters/hotcrp/site.js.map +1 -0
  19. package/dist/adapters/hotcrp/token.d.ts +13 -0
  20. package/dist/adapters/hotcrp/token.d.ts.map +1 -0
  21. package/dist/adapters/hotcrp/token.js +48 -0
  22. package/dist/adapters/hotcrp/token.js.map +1 -0
  23. package/dist/adapters/latex/abstract.d.ts +22 -0
  24. package/dist/adapters/latex/abstract.d.ts.map +1 -0
  25. package/dist/adapters/latex/abstract.js +187 -0
  26. package/dist/adapters/latex/abstract.js.map +1 -0
  27. package/dist/adapters/latex/headings.d.ts +6 -0
  28. package/dist/adapters/latex/headings.d.ts.map +1 -1
  29. package/dist/adapters/latex/headings.js +5 -4
  30. package/dist/adapters/latex/headings.js.map +1 -1
  31. package/dist/adapters/latex/index.d.ts.map +1 -1
  32. package/dist/adapters/latex/index.js +2 -0
  33. package/dist/adapters/latex/index.js.map +1 -1
  34. package/dist/adapters/latex/parse.d.ts +15 -0
  35. package/dist/adapters/latex/parse.d.ts.map +1 -1
  36. package/dist/adapters/latex/parse.js +58 -1
  37. package/dist/adapters/latex/parse.js.map +1 -1
  38. package/dist/cli.d.ts.map +1 -1
  39. package/dist/cli.js +25 -8
  40. package/dist/cli.js.map +1 -1
  41. package/dist/cycle-rules.d.ts.map +1 -1
  42. package/dist/cycle-rules.js +3 -4
  43. package/dist/cycle-rules.js.map +1 -1
  44. package/dist/domain/deadline.d.ts +8 -1
  45. package/dist/domain/deadline.d.ts.map +1 -1
  46. package/dist/domain/deadline.js +26 -12
  47. package/dist/domain/deadline.js.map +1 -1
  48. package/dist/domain/portal-token.d.ts +44 -0
  49. package/dist/domain/portal-token.d.ts.map +1 -0
  50. package/dist/domain/portal-token.js +32 -0
  51. package/dist/domain/portal-token.js.map +1 -0
  52. package/dist/domain/submission-fields.d.ts +77 -0
  53. package/dist/domain/submission-fields.d.ts.map +1 -0
  54. package/dist/domain/submission-fields.js +127 -0
  55. package/dist/domain/submission-fields.js.map +1 -0
  56. package/dist/domain/submission.d.ts +40 -0
  57. package/dist/domain/submission.d.ts.map +1 -1
  58. package/dist/domain/submission.js +68 -0
  59. package/dist/domain/submission.js.map +1 -1
  60. package/dist/lib/paper-config.d.ts +1 -1
  61. package/dist/lib/paper-config.d.ts.map +1 -1
  62. package/dist/lib/paper-config.js +8 -4
  63. package/dist/lib/paper-config.js.map +1 -1
  64. package/dist/paper-settings.d.ts +8 -1
  65. package/dist/paper-settings.d.ts.map +1 -1
  66. package/dist/paper-settings.js +14 -5
  67. package/dist/paper-settings.js.map +1 -1
  68. package/dist/ports/latex.d.ts +23 -0
  69. package/dist/ports/latex.d.ts.map +1 -1
  70. package/dist/ports/submission-portal.d.ts +41 -2
  71. package/dist/ports/submission-portal.d.ts.map +1 -1
  72. package/dist/ports/venue-deadlines.d.ts +1 -1
  73. package/dist/presets.d.ts +3 -0
  74. package/dist/presets.d.ts.map +1 -1
  75. package/dist/presets.js +3 -1
  76. package/dist/presets.js.map +1 -1
  77. package/dist/submission.d.ts +68 -11
  78. package/dist/submission.d.ts.map +1 -1
  79. package/dist/submission.js +441 -63
  80. package/dist/submission.js.map +1 -1
  81. package/dist/tex-requirements.d.ts +3 -0
  82. package/dist/tex-requirements.d.ts.map +1 -1
  83. package/dist/tex-requirements.js +30 -2
  84. package/dist/tex-requirements.js.map +1 -1
  85. package/docs/configuration.md +2 -1
  86. package/docs/rules/cycle/record.md +9 -6
  87. package/docs/submission.md +73 -51
  88. package/eslint.config.mjs +3 -0
  89. package/lib/paper-config.ts +10 -4
  90. package/package.json +6 -1
  91. package/presets/msr.jsonc +75 -7
  92. package/presets/msr.md +14 -10
  93. package/presets/venue-profile.schema.json +41 -0
  94. package/scripts/check.ts +1 -1
  95. package/scripts/refresh-deadlines/compare.test.ts +75 -0
  96. package/scripts/refresh-deadlines/compare.ts +101 -0
  97. package/scripts/refresh-deadlines/main.test.ts +140 -0
  98. package/scripts/refresh-deadlines/main.ts +56 -0
  99. package/scripts/refresh-deadlines/refresh.test.ts +287 -0
  100. package/scripts/refresh-deadlines/refresh.ts +183 -0
  101. package/skills/submission-portal/SKILL.md +92 -45
  102. package/skills/submission-portal/SKILL.md.spec.ts +94 -44
  103. package/skills/submission-portal/submission-portal.test.ts +4 -73
  104. package/src/adapters/hotcrp/cassette/README.md +11 -10
  105. package/src/adapters/hotcrp/cassette/deadlines-msr2027.html +9 -9
  106. package/src/adapters/hotcrp/cassette/get-searchcompletion.json +100 -0
  107. package/src/adapters/hotcrp/deadlines.io.test.ts +2 -2
  108. package/src/adapters/hotcrp/deadlines.test.ts +3 -3
  109. package/src/adapters/hotcrp/index.ts +16 -3
  110. package/src/adapters/hotcrp/portal.io.ts +81 -17
  111. package/src/adapters/hotcrp/portal.test.ts +208 -3
  112. package/src/adapters/hotcrp/response.ts +66 -4
  113. package/src/adapters/hotcrp/site.ts +33 -0
  114. package/src/adapters/hotcrp/token.test.ts +69 -0
  115. package/src/adapters/hotcrp/token.ts +51 -0
  116. package/src/adapters/latex/abstract.test.ts +280 -0
  117. package/src/adapters/latex/abstract.ts +272 -0
  118. package/src/adapters/latex/headings.ts +5 -4
  119. package/src/adapters/latex/index.test.ts +31 -1
  120. package/src/adapters/latex/index.ts +2 -0
  121. package/src/adapters/latex/parse.ts +64 -3
  122. package/src/cli.test.ts +20 -8
  123. package/src/cli.ts +27 -13
  124. package/src/cycle-rules.test.ts +6 -6
  125. package/src/cycle-rules.ts +7 -4
  126. package/src/domain/deadline.test.ts +31 -2
  127. package/src/domain/deadline.ts +42 -16
  128. package/src/domain/portal-token.test.ts +55 -0
  129. package/src/domain/portal-token.ts +63 -0
  130. package/src/domain/submission-fields.test.ts +183 -0
  131. package/src/domain/submission-fields.ts +190 -0
  132. package/src/domain/submission.test.ts +88 -0
  133. package/src/domain/submission.ts +110 -0
  134. package/src/new-paper.test.ts +2 -0
  135. package/src/paper-settings.test.ts +26 -0
  136. package/src/paper-settings.ts +25 -5
  137. package/src/ports/latex.ts +25 -0
  138. package/src/ports/submission-portal.ts +46 -1
  139. package/src/ports/venue-deadlines.ts +1 -1
  140. package/src/presets.test.ts +8 -5
  141. package/src/presets.ts +12 -2
  142. package/src/submission-fields-run.test.ts +247 -0
  143. package/src/submission-new.test.ts +569 -0
  144. package/src/submission-show.test.ts +210 -0
  145. package/src/submission-update.test.ts +166 -0
  146. package/src/submission.test.ts +140 -518
  147. package/src/submission.ts +667 -81
  148. package/src/tex-requirements.test.ts +21 -0
  149. package/src/tex-requirements.ts +67 -2
  150. package/scripts/refresh-deadlines.test.ts +0 -431
  151. package/scripts/refresh-deadlines.ts +0 -387
@@ -0,0 +1,77 @@
1
+ /**
2
+ * A VENUE'S OWN SUBMISSION FIELDS — what its portal's form asks beyond the title, the abstract, the
3
+ * authors and the PDF: topics, PC conflicts, a corresponding author …
4
+ *
5
+ * Two declarations, each in the file that owns the fact:
6
+ *
7
+ * venue preset `submission_fields` what the edition's form asks, as read: a kind per field
8
+ * paper `fields` what this paper answers
9
+ *
10
+ * The preset is DATA: it names a kind from the fixed set below, never a schema. The one schema of a
11
+ * paper's answers is built here from those kinds, so an unknown topic is refused before anything is
12
+ * sent — the portal itself would drop it without a word (HotCRP: measured 2026-10-20, a topic it
13
+ * does not know leaves `change_list` without `topics` and the submission with none).
14
+ */
15
+ import { z } from "zod";
16
+ import { type Result } from "./result.ts";
17
+ /**
18
+ * The kinds a field can be, after the HotCRP form controls they stand for:
19
+ *
20
+ * checkboxes a list of option names (HotCRP's topics: `"Group: Topic"`, the group and the topic)
21
+ * text free text
22
+ * email an email address (a selector of authors that the API takes by email)
23
+ * pc_conflicts PC member's email → conflict type (`true` or a type name the portal checks)
24
+ */
25
+ export declare const FIELD_KINDS: readonly ["checkboxes", "text", "email", "pc_conflicts"];
26
+ export type FieldKind = (typeof FIELD_KINDS)[number];
27
+ /**
28
+ * The keys the submission object carries itself (`src/adapters/hotcrp/portal.io.ts`): a venue field
29
+ * of one of these names would be spread over it — `submission` would drop the PDF's upload.
30
+ */
31
+ export declare const RESERVED_FIELD_KEYS: readonly ["object", "pid", "title", "abstract", "authors", "submission", "status"];
32
+ /** The first of `keys` that is reserved, or null. Pure. */
33
+ export declare const reservedKey: (keys: readonly string[]) => string | null;
34
+ /** One field of the form, as the preset records it. */
35
+ export interface FieldDeclaration {
36
+ readonly kind: FieldKind;
37
+ /** The form will not complete without it. */
38
+ readonly required: boolean;
39
+ /** The form's own label, when the API's key is not it. */
40
+ readonly label: string | null;
41
+ /** The choices, for `checkboxes`; empty for every other kind. */
42
+ readonly options: readonly string[];
43
+ }
44
+ /** A venue preset's `submission_fields`: the form's fields, and where and when they were read. */
45
+ export interface VenueFields {
46
+ /** `portal`: read through the portal's API; `form`: copied from its submission form. */
47
+ readonly source: "portal" | "form";
48
+ readonly url: string;
49
+ /** The day it was read, YYYY-MM-DD. */
50
+ readonly read: string;
51
+ /** The API's key → the field. */
52
+ readonly fields: Readonly<Record<string, FieldDeclaration>>;
53
+ }
54
+ /** A paper's answers, checked against its venue's fields: the API's key → the value to send. */
55
+ export type FieldValues = Readonly<Record<string, unknown>>;
56
+ /** The schema of a paper's `fields` for these venue fields: every key declared, the required ones present. Pure. */
57
+ export declare const fieldValuesSchema: (v: VenueFields) => Readonly<z.ZodType<FieldValues>>;
58
+ /**
59
+ * A paper's `fields` key, checked against its venue's form → the values to send, or one line saying
60
+ * what is wrong. Pure. A paper that gives none answers nothing: fine for a venue whose preset records
61
+ * no fields, refused when the venue's form requires one.
62
+ *
63
+ * @param raw the paper's `fields`, null when absent
64
+ * @param venue the venue preset's `submission_fields`; null when it records none
65
+ * @param where where the venue's fields were read from, for the message (the preset chain)
66
+ */
67
+ export declare function parsePaperFields(raw: unknown, venue: VenueFields | null, where: string): Result<FieldValues, string>;
68
+ /**
69
+ * The checkbox fields the paper sent that the portal did not take: sent non-empty, absent from the
70
+ * answer's changes, and named in a message of the portal's. That is a silent drop — the portal keeps
71
+ * an option it does not know as nothing. Pure.
72
+ */
73
+ export declare function droppedFields(sent: FieldValues, venue: VenueFields | null, answer: {
74
+ readonly changes: readonly string[];
75
+ readonly messageFields: readonly (string | null)[];
76
+ }): readonly string[];
77
+ //# sourceMappingURL=submission-fields.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"submission-fields.d.ts","sourceRoot":"","sources":["../../src/domain/submission-fields.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAW,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AAEnD;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW,0DAKd,CAAC;AACX,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAErD;;;GAGG;AACH,eAAO,MAAM,mBAAmB,oFAQtB,CAAC;AAEX,2DAA2D;AAC3D,eAAO,MAAM,WAAW,GAAI,MAAM,SAAS,MAAM,EAAE,KAAG,MAAM,GAAG,IACK,CAAC;AAErE,uDAAuD;AACvD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,6CAA6C;IAC7C,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,0DAA0D;IAC1D,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,iEAAiE;IACjE,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC;AAED,kGAAkG;AAClG,MAAM,WAAW,WAAW;IAC1B,wFAAwF;IACxF,QAAQ,CAAC,MAAM,EAAE,QAAQ,GAAG,MAAM,CAAC;IACnC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,uCAAuC;IACvC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,iCAAiC;IACjC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC;CAC7D;AAED,gGAAgG;AAChG,MAAM,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAiC5D,oHAAoH;AACpH,eAAO,MAAM,iBAAiB,GAC5B,GAAG,WAAW,KACb,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAQ/B,CAAC;AAqBJ;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,OAAO,EACZ,KAAK,EAAE,WAAW,GAAG,IAAI,EACzB,KAAK,EAAE,MAAM,GACZ,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAW7B;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,WAAW,EACjB,KAAK,EAAE,WAAW,GAAG,IAAI,EACzB,MAAM,EAAE;IACN,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,aAAa,EAAE,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;CACpD,GACA,SAAS,MAAM,EAAE,CAYnB"}
@@ -0,0 +1,127 @@
1
+ /**
2
+ * A VENUE'S OWN SUBMISSION FIELDS — what its portal's form asks beyond the title, the abstract, the
3
+ * authors and the PDF: topics, PC conflicts, a corresponding author …
4
+ *
5
+ * Two declarations, each in the file that owns the fact:
6
+ *
7
+ * venue preset `submission_fields` what the edition's form asks, as read: a kind per field
8
+ * paper `fields` what this paper answers
9
+ *
10
+ * The preset is DATA: it names a kind from the fixed set below, never a schema. The one schema of a
11
+ * paper's answers is built here from those kinds, so an unknown topic is refused before anything is
12
+ * sent — the portal itself would drop it without a word (HotCRP: measured 2026-10-20, a topic it
13
+ * does not know leaves `change_list` without `topics` and the submission with none).
14
+ */
15
+ import { z } from "zod";
16
+ import { err, ok } from "./result.js";
17
+ /**
18
+ * The kinds a field can be, after the HotCRP form controls they stand for:
19
+ *
20
+ * checkboxes a list of option names (HotCRP's topics: `"Group: Topic"`, the group and the topic)
21
+ * text free text
22
+ * email an email address (a selector of authors that the API takes by email)
23
+ * pc_conflicts PC member's email → conflict type (`true` or a type name the portal checks)
24
+ */
25
+ export const FIELD_KINDS = [
26
+ "checkboxes",
27
+ "text",
28
+ "email",
29
+ "pc_conflicts",
30
+ ];
31
+ /**
32
+ * The keys the submission object carries itself (`src/adapters/hotcrp/portal.io.ts`): a venue field
33
+ * of one of these names would be spread over it — `submission` would drop the PDF's upload.
34
+ */
35
+ export const RESERVED_FIELD_KEYS = [
36
+ "object",
37
+ "pid",
38
+ "title",
39
+ "abstract",
40
+ "authors",
41
+ "submission",
42
+ "status",
43
+ ];
44
+ /** The first of `keys` that is reserved, or null. Pure. */
45
+ export const reservedKey = (keys) => keys.find((k) => RESERVED_FIELD_KEYS.some((r) => r === k)) ?? null;
46
+ const CONFLICT = z.union([z.literal(true), z.string().trim().min(1)]);
47
+ /** One field's value schema, from its kind. Pure. */
48
+ function valueSchema(d) {
49
+ switch (d.kind) {
50
+ case "checkboxes":
51
+ return z
52
+ .array(z.string().refine((v) => d.options.includes(v), {
53
+ error: (i) => `${JSON.stringify(i.input)} is not one of the form's options`,
54
+ }))
55
+ .min(d.required ? 1 : 0, {
56
+ error: "the form requires at least one",
57
+ })
58
+ .refine((l) => new Set(l).size === l.length, {
59
+ error: "an option is given twice",
60
+ });
61
+ case "text":
62
+ return z
63
+ .string()
64
+ .trim()
65
+ .min(d.required ? 1 : 0);
66
+ case "email":
67
+ return z.email();
68
+ case "pc_conflicts":
69
+ return z.record(z.email(), CONFLICT);
70
+ }
71
+ }
72
+ /** The schema of a paper's `fields` for these venue fields: every key declared, the required ones present. Pure. */
73
+ export const fieldValuesSchema = (v) => z.strictObject(Object.fromEntries(Object.entries(v.fields).map(([key, d]) => {
74
+ const s = valueSchema(d);
75
+ return [key, d.required ? s : s.optional()];
76
+ })));
77
+ const at = (path) => path
78
+ .map((p) => (typeof p === "number" ? `[${String(p)}]` : `.${String(p)}`))
79
+ .join("");
80
+ /** The first problem of a refused `fields`, naming the key, and what the form offers when it is a choice. */
81
+ function problemOf(issue, v) {
82
+ const key = issue.path[0];
83
+ const declared = typeof key === "string" ? v.fields[key] : undefined;
84
+ const offers = declared !== undefined && declared.kind === "checkboxes"
85
+ ? ` — the form offers: ${declared.options.map((o) => JSON.stringify(o)).join(", ")}`
86
+ : "";
87
+ const known = Object.keys(v.fields).join(", ");
88
+ return issue.code === "unrecognized_keys"
89
+ ? `"fields" has ${issue.keys.map((k) => `"${k}"`).join(", ")}, which the venue's form does not ask (it asks: ${known})`
90
+ : `"fields"${at(issue.path)}: ${issue.message}${offers}`;
91
+ }
92
+ /**
93
+ * A paper's `fields` key, checked against its venue's form → the values to send, or one line saying
94
+ * what is wrong. Pure. A paper that gives none answers nothing: fine for a venue whose preset records
95
+ * no fields, refused when the venue's form requires one.
96
+ *
97
+ * @param raw the paper's `fields`, null when absent
98
+ * @param venue the venue preset's `submission_fields`; null when it records none
99
+ * @param where where the venue's fields were read from, for the message (the preset chain)
100
+ */
101
+ export function parsePaperFields(raw, venue, where) {
102
+ if (venue === null)
103
+ return raw === null
104
+ ? ok({})
105
+ : err(`"fields" is set, but the venue preset records no "submission_fields" (read: ${where}) — record the form's fields in the venue's preset first, or drop "fields"`);
106
+ const parsed = fieldValuesSchema(venue).safeParse(raw ?? {});
107
+ return parsed.success
108
+ ? ok(parsed.data)
109
+ : err(parsed.error.issues.map((i) => problemOf(i, venue)).join("; "));
110
+ }
111
+ /**
112
+ * The checkbox fields the paper sent that the portal did not take: sent non-empty, absent from the
113
+ * answer's changes, and named in a message of the portal's. That is a silent drop — the portal keeps
114
+ * an option it does not know as nothing. Pure.
115
+ */
116
+ export function droppedFields(sent, venue, answer) {
117
+ if (venue === null)
118
+ return [];
119
+ return Object.entries(sent)
120
+ .filter(([key, value]) => venue.fields[key]?.kind === "checkboxes" &&
121
+ Array.isArray(value) &&
122
+ value.length > 0 &&
123
+ !answer.changes.includes(key) &&
124
+ answer.messageFields.includes(key))
125
+ .map(([key]) => key);
126
+ }
127
+ //# sourceMappingURL=submission-fields.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"submission-fields.js","sourceRoot":"","sources":["../../src/domain/submission-fields.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,7 @@
11
11
  */
12
12
  import { type Result } from "./result.ts";
13
13
  import type { Sha256 } from "./sha256.ts";
14
+ import type { FieldValues } from "./submission-fields.ts";
14
15
  /** The portal kinds an adapter exists for. Any other kind is refused by name. */
15
16
  export type PortalKind = "hotcrp";
16
17
  export declare const PORTAL_KINDS: readonly PortalKind[];
@@ -69,6 +70,8 @@ export interface SubmissionChange {
69
70
  readonly abstract: string | null;
70
71
  /** Mark the submission submitted (ready for review). */
71
72
  readonly submit: boolean;
73
+ /** The venue's own form fields the paper answers, checked against the preset; empty sends none. */
74
+ readonly fields: FieldValues;
72
75
  }
73
76
  /** One message from the portal: its text, and the field it is about when it names one. */
74
77
  export interface PortalMessage {
@@ -103,4 +106,41 @@ export type PortalFailure = {
103
106
  };
104
107
  /** Words in a text, as a reader counts them: runs of non-space. Pure. */
105
108
  export declare const wordCount: (s: string) => number;
109
+ /** One author as the portal records it. Never guessed: the paper's `authors` key declares it. */
110
+ export interface Author {
111
+ readonly name: string;
112
+ readonly email: string;
113
+ /** Null when the paper does not declare one. */
114
+ readonly affiliation: string | null;
115
+ }
116
+ /** A paper's `authors` key → the list, null when absent, or one line saying what is wrong. Pure. */
117
+ export declare function parsePaperAuthors(v: unknown): Result<readonly Author[] | null, string>;
118
+ /** What creating a submission sends. */
119
+ export interface NewSubmission {
120
+ readonly title: string;
121
+ readonly abstract: string;
122
+ readonly authors: readonly Author[];
123
+ readonly pdf: {
124
+ readonly name: string;
125
+ readonly bytes: Uint8Array;
126
+ };
127
+ /** The venue's own form fields the paper answers, checked against the preset; empty sends none. */
128
+ readonly fields: FieldValues;
129
+ }
130
+ /** What the portal lets an author read of its form's choices: only what an author's token can see. */
131
+ export interface PortalOptions {
132
+ /** The topics an author can choose, spelled as the portal takes them. */
133
+ readonly topics: readonly string[];
134
+ }
135
+ /** What the portal answered to a creation: an update's answer, and the id it chose when it saved. */
136
+ export interface CreateOutcome extends UpdateOutcome {
137
+ /** The new submission's id; null on a dry run, or when nothing was created. */
138
+ readonly id: number | null;
139
+ }
140
+ /**
141
+ * The parsed `paperlint.json` with the new submission's id recorded where the paper's submission is
142
+ * read from: the last cycle (the open attempt) in the cycles form, the top level in the flat form.
143
+ * Pure; the caller writes the result and reads it back.
144
+ */
145
+ export declare function withSubmissionId(json: unknown, id: number): Result<Readonly<Record<string, unknown>>, string>;
106
146
  //# sourceMappingURL=submission.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"submission.d.ts","sourceRoot":"","sources":["../../src/domain/submission.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"submission.d.ts","sourceRoot":"","sources":["../../src/domain/submission.ts"],"names":[],"mappings":"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"}
@@ -36,4 +36,72 @@ export function parsePaperSubmission(v) {
36
36
  }
37
37
  /** Words in a text, as a reader counts them: runs of non-space. Pure. */
38
38
  export const wordCount = (s) => s.split(/\s+/).filter((w) => w !== "").length;
39
+ const AUTHOR_KEYS = ["name", "email", "affiliation"];
40
+ const AUTHORS_SHAPE = `"authors" must be a non-empty list of { "name": "<as the portal should show it>", "email": "<the address the portal knows the author by>", "affiliation"?: "<…>" }, in the paper's order`;
41
+ const nonEmpty = (v) => typeof v === "string" && v.trim() !== "";
42
+ /** One entry of `authors` → the author, or what is wrong with it. */
43
+ function authorOf(v, i) {
44
+ const at = `"authors"[${String(i)}]`;
45
+ if (!isRecord(v))
46
+ return err(AUTHORS_SHAPE);
47
+ const unknown = Object.keys(v).find((k) => !AUTHOR_KEYS.some((a) => a === k));
48
+ if (unknown !== undefined)
49
+ return err(`${at} has an unknown key "${unknown}" — known: ${AUTHOR_KEYS.join(", ")}`);
50
+ const { name, email, affiliation } = v;
51
+ if (!nonEmpty(name))
52
+ return err(`${at}: "name" must be a non-empty string`);
53
+ if (!nonEmpty(email) || !/^[^\s@]+@[^\s@]+$/.test(email.trim()))
54
+ return err(`${at}: "email" must be an email address, got ${JSON.stringify(email)}`);
55
+ if (affiliation !== undefined && !nonEmpty(affiliation))
56
+ return err(`${at}: "affiliation", when given, must be a non-empty string`);
57
+ return ok({
58
+ name: name.trim(),
59
+ email: email.trim(),
60
+ affiliation: affiliation === undefined ? null : affiliation.trim(),
61
+ });
62
+ }
63
+ /** A paper's `authors` key → the list, null when absent, or one line saying what is wrong. Pure. */
64
+ export function parsePaperAuthors(v) {
65
+ if (v === undefined)
66
+ return ok(null);
67
+ if (!Array.isArray(v) || v.length === 0)
68
+ return err(AUTHORS_SHAPE);
69
+ const list = v;
70
+ const parsed = list.reduce((acc, x, i) => {
71
+ if (!acc.ok)
72
+ return acc;
73
+ const a = authorOf(x, i);
74
+ return a.ok ? ok([...acc.value, a.value]) : a;
75
+ }, ok([]));
76
+ if (!parsed.ok)
77
+ return parsed;
78
+ const authors = parsed.value;
79
+ const emails = authors.map((a) => a.email.toLowerCase());
80
+ const twice = emails.find((e, i) => emails.indexOf(e) !== i);
81
+ return twice === undefined
82
+ ? ok(authors)
83
+ : err(`"authors": the email ${twice} is given twice`);
84
+ }
85
+ /**
86
+ * The parsed `paperlint.json` with the new submission's id recorded where the paper's submission is
87
+ * read from: the last cycle (the open attempt) in the cycles form, the top level in the flat form.
88
+ * Pure; the caller writes the result and reads it back.
89
+ */
90
+ export function withSubmissionId(json, id) {
91
+ if (!isRecord(json))
92
+ return err("must be a JSON object");
93
+ const cycles = json["cycles"];
94
+ if (cycles === undefined)
95
+ return ok({ ...json, submission: { id } });
96
+ if (!Array.isArray(cycles) || cycles.length === 0)
97
+ return err(`"cycles" has no attempt to record the submission in`);
98
+ const list = cycles;
99
+ const last = list.at(-1);
100
+ return isRecord(last)
101
+ ? ok({
102
+ ...json,
103
+ cycles: [...list.slice(0, -1), { ...last, submission: { id } }],
104
+ })
105
+ : err(`the last entry of "cycles" is not an object`);
106
+ }
39
107
  //# sourceMappingURL=submission.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"submission.js","sourceRoot":"","sources":["../../src/domain/submission.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,GAAG,EAAE,EAAE,EAAe,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAKvC,MAAM,CAAC,MAAM,YAAY,GAA0B,CAAC,QAAQ,CAAC,CAAC;AAe9D,MAAM,YAAY,GAAG,CAAC,CAAS,EAAmB,EAAE,CAClD,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAEpC,6FAA6F;AAC7F,MAAM,UAAU,eAAe,CAC7B,CAAc;IAEd,OAAO,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC;QACzB,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;QACtD,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,IAAI,oCAAoC,CAAC,CAAC;AACtE,CAAC;AAOD,wGAAwG;AACxG,MAAM,UAAU,oBAAoB,CAClC,CAAU;IAEV,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,GAAG,GAAG,GAAG,CACb,8EAA8E,CAC/E,CAAC;IACF,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QAAE,OAAO,GAAG,CAAC;IAC7B,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;IACvD,IAAI,OAAO,KAAK,SAAS;QACvB,OAAO,GAAG,CAAC,oCAAoC,OAAO,eAAe,CAAC,CAAC;IACzE,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;IACnB,OAAO,OAAO,EAAE,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC;QAC7D,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;QACZ,CAAC,CAAC,GAAG,CAAC;AACV,CAAC;AAyED,yEAAyE;AACzE,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAS,EAAU,EAAE,CAC7C,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC"}
1
+ {"version":3,"file":"submission.js","sourceRoot":"","sources":["../../src/domain/submission.ts"],"names":[],"mappings":"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"}
@@ -79,7 +79,7 @@ export declare const PAPERS_DIR_FIELD: string;
79
79
  * the harness red before a consumer's config does.
80
80
  */
81
81
  export declare const SETTINGS_KEYS: Readonly<Record<string, string>>;
82
- /** The keys that only mean something for one paper: refused in the root `paperlint.json`. */
82
+ /** The keys that only mean something for one paper: an error in the root `paperlint.json`. */
83
83
  export declare const PAPER_ONLY_KEYS: readonly string[];
84
84
  /** The keys that only mean something for the whole project: refused in a paper's `paperlint.json`. */
85
85
  export declare const ROOT_ONLY_KEYS: readonly string[];
@@ -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,EAGzC,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,CAsBzD,CAAC;AAEH,6FAA6F;AAC7F,eAAO,MAAM,eAAe,EAAE,SAAS,MAAM,EAI3C,CAAC;AAEH,sGAAsG;AACtG,eAAO,MAAM,cAAc,EAAE,SAAS,MAAM,EAO1C,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,EAGzC,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,CA0BzD,CAAC;AAEH,8FAA8F;AAC9F,eAAO,MAAM,eAAe,EAAE,SAAS,MAAM,EAM3C,CAAC;AAEH,sGAAsG;AACtG,eAAO,MAAM,cAAc,EAAE,SAAS,MAAM,EAO1C,CAAC"}
@@ -119,19 +119,23 @@ export const SETTINGS_KEYS = Object.freeze({
119
119
  kind: "the kind of paper, whose page limit applies — format/page-limit",
120
120
  pdf: "where the built PDF is, relative to the paper, when it is not paper.pdf — the facts",
121
121
  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",
122
- talk: 'how this paper is presented: { "mode": "remote-video", "dir"?, "files"?, "one_slide"? } — the talk/ rules. A paper\'s own; refused in the root file',
123
- submission: "which submission on the venue's portal is this paper's: { \"id\": <number> } — paperlint submission, with the preset's \"portal\". A paper's own; refused in the root file",
124
- cycles: "the paper's attempts at venues, oldest first: [{ id, venue, kind, opened, phase?, deadlines, submission?, outcome }] — extends, kind and submission are then the current attempt's, and the cycle/ rules judge the record. A paper's own; refused in the root file",
122
+ talk: 'how this paper is presented: { "mode": "remote-video", "dir"?, "files"?, "one_slide"? } — the talk/ rules. Set only in a paper\'s own paperlint.json; in the root paperlint.json it is an error',
123
+ submission: "which submission on the venue's portal is this paper's: { \"id\": <number> } — paperlint submission, with the preset's \"portal\". Set only in a paper's own paperlint.json; in the root paperlint.json it is an error",
124
+ authors: 'the authors as the venue\'s portal should record them, in order: [{ "name", "email", "affiliation"? }] — paperlint submission new. Set only in a paper\'s own paperlint.json; in the root paperlint.json it is an error',
125
+ fields: 'the paper\'s answers to the venue\'s own form fields, keyed as the preset\'s "submission_fields" names them: { "topics": ["<an option>"], "pc_conflicts": { "<pc email>": "<conflict type>" }, … } — checked against those fields, then sent by paperlint submission new and update. Set only in a paper\'s own paperlint.json; in the root paperlint.json it is an error',
126
+ cycles: "the paper's attempts at venues, oldest first: [{ id, venue, kind, opened, phase?, deadlines, submission?, outcome }] — extends, kind and submission are then the current attempt's, and the cycle/ rules judge the record. Set only in a paper's own paperlint.json; in the root paperlint.json it is an error",
125
127
  scripts: "how skill prose names the scripts — consumer.mjs",
126
128
  timezone: "the zone deadline anchors are written in — consumer.mjs",
127
129
  contactEmail: "the polite-pool address for citation lookups — consumer.mjs",
128
130
  triggerCases: "the consumer's own skill trigger cases — lib/skill-trigger-cases.mjs",
129
131
  $comment: "a note for humans (JSON Schema's own comment keyword); ignored",
130
132
  });
131
- /** The keys that only mean something for one paper: refused in the root `paperlint.json`. */
133
+ /** The keys that only mean something for one paper: an error in the root `paperlint.json`. */
132
134
  export const PAPER_ONLY_KEYS = Object.freeze([
133
135
  "talk",
134
136
  "submission",
137
+ "authors",
138
+ "fields",
135
139
  "cycles",
136
140
  ]);
137
141
  /** The keys that only mean something for the whole project: refused in a paper's `paperlint.json`. */
@@ -1 +1 @@
1
- {"version":3,"file":"paper-config.js","sourceRoot":"","sources":["../../lib/paper-config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"paper-config.js","sourceRoot":"","sources":["../../lib/paper-config.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@ import { type Result } from "./domain/result.ts";
2
2
  import type { Files } from "./ports/files.ts";
3
3
  import { type Parsed, type RuleEntry } from "./rules-config.ts";
4
4
  import { type PaperTalk } from "./domain/talk.ts";
5
- import { type PaperSubmission } from "./domain/submission.ts";
5
+ import { type Author, type PaperSubmission } from "./domain/submission.ts";
6
6
  import { type Cycles } from "./domain/cycle.ts";
7
7
  /** What one paper declares. Every absent field is null. */
8
8
  export interface PaperSettings {
@@ -27,6 +27,13 @@ export interface PaperSettings {
27
27
  readonly talk: PaperTalk | null;
28
28
  /** Which submission on the venue's portal is this paper's; null when it says none. Never the root's. */
29
29
  readonly submission: PaperSubmission | null;
30
+ /** The authors as the venue's portal should record them, in order; null when the paper declares none. Never the root's. */
31
+ readonly authors: readonly Author[] | null;
32
+ /**
33
+ * The paper's answers to its venue's own form fields, as written: checked against the venue
34
+ * preset's `submission_fields` where both are known (`paperlint submission`); null when absent.
35
+ */
36
+ readonly fields: unknown;
30
37
  /**
31
38
  * The paper's attempts at venues and the current one, when the file declares `cycles`; null for a
32
39
  * file in the flat form. With cycles, `extends`, `kind` and `submission` above are the current
@@ -1 +1 @@
1
- {"version":3,"file":"paper-settings.d.ts","sourceRoot":"","sources":["../src/paper-settings.ts"],"names":[],"mappings":"AA2BA,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;AAE3B,OAAO,EAAkB,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAEL,KAAK,eAAe,EACrB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAKL,KAAK,MAAM,EACZ,MAAM,mBAAmB,CAAC;AAE3B,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;IAC5C,+FAA+F;IAC/F,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,CAAC;IAChC,wGAAwG;IACxG,QAAQ,CAAC,UAAU,EAAE,eAAe,GAAG,IAAI,CAAC;IAC5C;;;;OAIG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;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;AA8ED,kGAAkG;AAClG,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,OAAO,GACZ,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAqB/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;AA+CD;;;;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"}
1
+ {"version":3,"file":"paper-settings.d.ts","sourceRoot":"","sources":["../src/paper-settings.ts"],"names":[],"mappings":"AA2BA,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;AAE3B,OAAO,EAAkB,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAGL,KAAK,MAAM,EACX,KAAK,eAAe,EACrB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAKL,KAAK,MAAM,EACZ,MAAM,mBAAmB,CAAC;AAE3B,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;IAC5C,+FAA+F;IAC/F,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,CAAC;IAChC,wGAAwG;IACxG,QAAQ,CAAC,UAAU,EAAE,eAAe,GAAG,IAAI,CAAC;IAC5C,2HAA2H;IAC3H,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAAC;IAC3C;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB;;;;OAIG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;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;AAqFD,kGAAkG;AAClG,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,OAAO,GACZ,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAqB/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;AAmDD;;;;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"}
@@ -4,7 +4,7 @@
4
4
  * One file name at two levels, one schema (lib/paper-config.mjs → SETTINGS_KEYS):
5
5
  *
6
6
  * paperlint.json the project (optional): papersDir, rules, defaults
7
- * <paper>/paperlint.json this paper: { extends, kind, pdf, rules, identity, talk, submission } —
7
+ * <paper>/paperlint.json this paper: { extends, kind, pdf, rules, identity, talk, submission, authors, fields } —
8
8
  * or `cycles`, from whose current attempt extends, kind and submission
9
9
  * are DERIVED (src/domain/cycle.ts); the two forms do not mix
10
10
  * a venue preset `paperlint:<name>` (shipped) or `./x.jsonc` (src/presets.ts)
@@ -24,7 +24,7 @@ import { err, ok } from "./domain/result.js";
24
24
  import { parseRuleEntries, } from "./rules-config.js";
25
25
  import { messageOf } from "./domain/text.js";
26
26
  import { parsePaperTalk } from "./domain/talk.js";
27
- import { parsePaperSubmission, } from "./domain/submission.js";
27
+ import { parsePaperAuthors, parsePaperSubmission, } from "./domain/submission.js";
28
28
  import { cycleProblemText, cyclesOf, parseCycles, venueCycleOf, } from "./domain/cycle.js";
29
29
  const KNOWN = Object.keys(SETTINGS_KEYS);
30
30
  const STRING_FIELDS = ["extends", "kind", "pdf"];
@@ -67,7 +67,7 @@ export function identityField(d) {
67
67
  ? ok(v.filter((x) => typeof x === "string"))
68
68
  : err(`"identity" must be a list of strings, each with a letter or digit, got ${JSON.stringify(v)}`);
69
69
  }
70
- /** `rules` (checked for shape only), `talk` and `submission`, each null when absent. */
70
+ /** `rules` (checked for shape only), `talk`, `submission` and `authors`, each null when absent; `fields` as written. */
71
71
  function rulesAndTalk(json) {
72
72
  const rules = json["rules"];
73
73
  if (rules !== undefined && !isObject(rules) && !Array.isArray(rules))
@@ -76,13 +76,18 @@ function rulesAndTalk(json) {
76
76
  if (!talk.ok)
77
77
  return talk;
78
78
  const submission = parsePaperSubmission(json["submission"]);
79
- return submission.ok
79
+ if (!submission.ok)
80
+ return submission;
81
+ const authors = parsePaperAuthors(json["authors"]);
82
+ return authors.ok
80
83
  ? ok({
81
84
  rules: rules ?? null,
82
85
  talk: talk.value,
83
86
  submission: submission.value,
87
+ authors: authors.value,
88
+ fields: json["fields"] ?? null,
84
89
  })
85
- : submission;
90
+ : authors;
86
91
  }
87
92
  /** The keys the current cycle supplies: writing one beside `cycles` is a second source for it. */
88
93
  const DERIVED_FROM_CYCLE = ["extends", "kind", "submission"];
@@ -223,6 +228,8 @@ function merge(root, paper) {
223
228
  rules: null,
224
229
  talk: null,
225
230
  submission: null,
231
+ authors: null,
232
+ fields: null,
226
233
  cycles: null,
227
234
  };
228
235
  const merged = {
@@ -233,6 +240,8 @@ function merge(root, paper) {
233
240
  identity: joined(r.identity, p.identity),
234
241
  talk: p.talk,
235
242
  submission: p.submission,
243
+ authors: p.authors,
244
+ fields: p.fields,
236
245
  cycles: p.cycles,
237
246
  };
238
247
  return paper === null && Object.values(merged).every((v) => v === null)
@@ -1 +1 @@
1
- {"version":3,"file":"paper-settings.js","sourceRoot":"","sources":["../src/paper-settings.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"paper-settings.js","sourceRoot":"","sources":["../src/paper-settings.ts"],"names":[],"mappings":"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"}