paperlint 2.0.0 → 2.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/.github/workflows/ci.yml +4 -4
- package/CLAUDE.md +3 -3
- package/CONTRIBUTING.md +21 -0
- package/LICENSE +1 -1
- package/README.md +81 -24
- package/action.harness.mjs +10 -10
- package/action.mutations.mjs +3 -3
- package/action.yml +11 -11
- package/bin/{rpp.mjs → paperlint.mjs} +2 -2
- package/dist/adapters/banal/invocation.js +3 -3
- package/dist/adapters/banal/invocation.js.map +1 -1
- package/dist/adapters/banal/run.d.ts +1 -1
- package/dist/adapters/banal/run.js +1 -1
- package/dist/adapters/banal/run.js.map +1 -1
- package/dist/adapters/banal/settings.d.ts +4 -4
- package/dist/adapters/banal/settings.d.ts.map +1 -1
- package/dist/adapters/banal/settings.js +4 -4
- package/dist/adapters/banal/settings.js.map +1 -1
- package/dist/adapters/banal/xml.js +1 -1
- package/dist/adapters/banal/xml.js.map +1 -1
- package/dist/adapters/curl/download.io.d.ts.map +1 -1
- package/dist/adapters/curl/download.io.js +2 -2
- package/dist/adapters/curl/download.io.js.map +1 -1
- package/dist/build-engine.d.ts +1 -1
- package/dist/build-engine.d.ts.map +1 -1
- package/dist/build-engine.js +6 -3
- package/dist/build-engine.js.map +1 -1
- package/dist/build.d.ts +1 -1
- package/dist/build.d.ts.map +1 -1
- package/dist/build.js +5 -4
- package/dist/build.js.map +1 -1
- package/dist/cli.d.ts +29 -30
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +174 -98
- package/dist/cli.js.map +1 -1
- package/dist/doctor.d.ts.map +1 -1
- package/dist/doctor.js +21 -6
- package/dist/doctor.js.map +1 -1
- package/dist/engine.d.ts +2 -2
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +1 -1
- package/dist/facts-file.d.ts +33 -9
- package/dist/facts-file.d.ts.map +1 -1
- package/dist/facts-file.js +117 -17
- package/dist/facts-file.js.map +1 -1
- package/dist/hooks-settings.d.ts +0 -18
- package/dist/hooks-settings.d.ts.map +1 -1
- package/dist/hooks-settings.js +70 -42
- package/dist/hooks-settings.js.map +1 -1
- package/dist/init.d.ts +13 -10
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +74 -42
- package/dist/init.js.map +1 -1
- package/dist/link-skills.js +2 -2
- package/dist/link-skills.js.map +1 -1
- package/dist/new-paper.d.ts +2 -2
- package/dist/new-paper.d.ts.map +1 -1
- package/dist/new-paper.js +17 -2
- package/dist/new-paper.js.map +1 -1
- package/dist/paper-settings.d.ts +68 -0
- package/dist/paper-settings.d.ts.map +1 -0
- package/dist/paper-settings.js +144 -0
- package/dist/paper-settings.js.map +1 -0
- package/dist/presets.d.ts +84 -0
- package/dist/presets.d.ts.map +1 -0
- package/dist/presets.js +186 -0
- package/dist/presets.js.map +1 -0
- package/dist/rules-config.d.ts +8 -1
- package/dist/rules-config.d.ts.map +1 -1
- package/dist/rules-config.js +13 -8
- package/dist/rules-config.js.map +1 -1
- package/dist/structure.d.ts.map +1 -1
- package/dist/structure.js +2 -1
- package/dist/structure.js.map +1 -1
- package/dist/tex-requirements.d.ts +63 -7
- package/dist/tex-requirements.d.ts.map +1 -1
- package/dist/tex-requirements.js +91 -24
- package/dist/tex-requirements.js.map +1 -1
- package/dist/toolchain.d.ts +2 -2
- package/dist/toolchain.d.ts.map +1 -1
- package/dist/toolchain.js +8 -8
- package/dist/toolchain.js.map +1 -1
- package/dist/types.d.ts +4 -4
- package/dist/types.d.ts.map +1 -1
- package/dist/venue-rules.d.ts +109 -0
- package/dist/venue-rules.d.ts.map +1 -0
- package/dist/venue-rules.js +387 -0
- package/dist/venue-rules.js.map +1 -0
- package/docs/configuration.md +73 -17
- package/docs/e2e.md +3 -4
- package/docs/install.md +11 -3
- package/docs/optional-rules.md +26 -25
- package/docs/rules.md +132 -3
- package/docs/toolchain.md +5 -5
- package/eslint-rules/paper-typography.mjs +1 -1
- package/eslint-rules/paper-typography.mutations.mjs +1 -1
- package/eslint-rules/papers.mjs +6 -2
- package/eslint-rules/pdf-last-page-balance.harness.mjs +5 -3
- package/eslint-rules/pdf-last-page-balance.mjs +23 -2
- package/fixtures/build-e2e/acmart/paperlint.json +1 -0
- package/fixtures/build-e2e/guards/paper.tex +1 -1
- package/fixtures/pdf-facts/README.md +1 -1
- package/fixtures/real-markdown-paper/baseline.json +1 -1
- package/fixtures/real-markdown-paper/baseline.mjs +2 -2
- package/fixtures/toolchain-mirror/install-tl +2 -2
- package/fixtures/toolchain-mirror/stub-pdflatex +1 -1
- package/fixtures/toolchain-mirror/stub-tlmgr +1 -1
- package/hooks/hooks.harness.mjs +1 -1
- package/lib/paper-config.d.mts +7 -0
- package/lib/paper-config.harness.mjs +3 -3
- package/lib/paper-config.mjs +34 -3
- package/lib/skill-trigger-cases.harness.mjs +1 -1
- package/package.json +4 -4
- package/plugin/hooks/hooks.json +3 -3
- package/scripts/check.mjs +1 -1
- package/scripts/harness-api.frozen.json +1 -1
- package/scripts/harness-api.test.ts +2 -2
- package/scripts/layer-legacy.frozen.json +1 -1
- package/scripts/mutation-batteries-frozen.harness.mjs +1 -1
- package/scripts/mutation-batteries.frozen.json +2 -2
- package/scripts/release-config.test.ts +1 -1
- package/skills/find-venue/SKILL.md +5 -1
- package/skills/find-venue/SKILL.md.spec.ts +4 -0
- package/skills/paper-pipeline/PIPELINE-MAP.md +14 -4
- package/skills/paper-pipeline/SKILL.md +4 -3
- package/skills/paper-pipeline/SKILL.md.spec.ts +3 -2
- package/skills/paper-pipeline/description-language.eval.mjs +1 -1
- package/skills/paper-pipeline/framing-vs-vocabulary.eval.mjs +1 -1
- package/skills/paper-pipeline/grade-paper-writing-ablation.eval.mjs +2 -2
- package/skills/paper-pipeline/pipeline-firing.eval.mjs +1 -1
- package/skills/paper-pipeline/pipeline-language.eval.mjs +1 -1
- package/skills/paper-pipeline/scripts/consumer.d.mts +1 -0
- package/skills/paper-pipeline/scripts/consumer.harness.mjs +10 -4
- package/skills/paper-pipeline/scripts/consumer.mjs +8 -1
- package/skills/paper-pipeline/scripts/consumer.mutations.mjs +1 -1
- package/skills/render-paper/SKILL.md +3 -3
- package/skills/render-paper/SKILL.md.spec.ts +2 -2
- package/skills/render-paper/extract-pdf-facts.harness.mjs +6 -6
- package/skills/render-paper/extract-pdf-facts.mjs +4 -4
- package/skills/study-accepted-papers/SKILL.md +2 -1
- package/skills/study-accepted-papers/SKILL.md.spec.ts +1 -0
- package/skills/submit-paper/SKILL.md +9 -1
- package/skills/submit-paper/SKILL.md.spec.ts +8 -0
- package/skills/submit-paper/references/venues/acm-sigconf.jsonc +86 -0
- package/skills/submit-paper/references/venues/agenticdev.jsonc +34 -102
- package/skills/submit-paper/references/venues/aisec.jsonc +21 -82
- package/skills/submit-paper/references/venues/realm.jsonc +45 -43
- package/skills/submit-paper/references/venues/tex-base.jsonc +1 -1
- package/skills/submit-paper/references/venues/venue-profile.schema.json +120 -30
- package/src/adapters/banal/index.test.ts +1 -1
- package/src/adapters/banal/invocation.test.ts +3 -3
- package/src/adapters/banal/invocation.ts +3 -3
- package/src/adapters/banal/locate.test.ts +4 -4
- package/src/adapters/banal/run.ts +2 -2
- package/src/adapters/banal/settings.test.ts +12 -6
- package/src/adapters/banal/settings.ts +9 -5
- package/src/adapters/banal/xml.test.ts +1 -1
- package/src/adapters/banal/xml.ts +1 -1
- package/src/adapters/curl/download.io.ts +4 -2
- package/src/adapters/curl/download.test.ts +3 -1
- package/src/adapters/node/files.test.ts +1 -1
- package/src/adapters/node/process.test.ts +2 -2
- package/src/adapters/node/workspace.test.ts +4 -4
- package/src/build-engine.harness.mjs +2 -2
- package/src/build-engine.ts +11 -3
- package/src/build.harness.mjs +27 -22
- package/src/build.mutations.mjs +3 -2
- package/src/build.ts +6 -5
- package/src/cli.harness.mjs +72 -131
- package/src/cli.mutations.mjs +7 -32
- package/src/cli.ts +204 -121
- package/src/doctor.harness.mjs +9 -25
- package/src/doctor.ts +28 -5
- package/src/engine.harness.mjs +4 -2
- package/src/engine.ts +2 -2
- package/src/facts-file.test.ts +54 -7
- package/src/facts-file.ts +145 -24
- package/src/hooks-settings.harness.mjs +24 -15
- package/src/hooks-settings.mutations.mjs +2 -4
- package/src/hooks-settings.ts +92 -49
- package/src/init.ts +88 -52
- package/src/latex-log.harness.mjs +1 -1
- package/src/link-skills.harness.mjs +3 -1
- package/src/link-skills.mutations.mjs +1 -1
- package/src/link-skills.ts +2 -2
- package/src/new-paper.harness.mjs +10 -7
- package/src/new-paper.test.ts +145 -0
- package/src/new-paper.ts +22 -2
- package/src/paper-settings-commands.test.ts +311 -0
- package/src/paper-settings.test.ts +220 -0
- package/src/paper-settings.ts +206 -0
- package/src/pdf-facts.harness.mjs +1 -1
- package/src/presets.test.ts +236 -0
- package/src/presets.ts +307 -0
- package/src/rules-config.ts +14 -9
- package/src/structure.harness.mjs +4 -4
- package/src/structure.ts +2 -1
- package/src/tex-requirements.harness.mjs +12 -18
- package/src/tex-requirements.ts +179 -29
- package/src/toolchain.harness.mjs +34 -25
- package/src/toolchain.ts +14 -8
- package/src/types.ts +4 -4
- package/src/venue-rules.test.ts +545 -0
- package/src/venue-rules.ts +573 -0
- package/templates/paper/paperlint.json +4 -0
- package/fixtures/build-e2e/acmart/venue.json +0 -1
- package/plugin/.claude-plugin/plugin.json +0 -8
package/dist/doctor.js
CHANGED
|
@@ -28,8 +28,8 @@ import { spawnSync } from "node:child_process";
|
|
|
28
28
|
// Types come from `paper-edit-guard.hook.d.mts`; see the block above for why the import points at
|
|
29
29
|
// the hook itself rather than at a shared module.
|
|
30
30
|
import { papersRoot, CONFIG_KEY, DEFAULT_PAPERS_ROOT, PAPERS_DIR_FIELD, OLD_PAPERS_DIR_FIELD, } from "../hooks/paper-edit-guard.hook.mjs";
|
|
31
|
-
import { LEGACY_CONFIG_KEY, LEGACY_KEY_MESSAGE, declaredSettings, } from "../lib/paper-config.mjs";
|
|
32
|
-
import { PAPER_MARKERS } from "./build.js";
|
|
31
|
+
import { LEGACY_CONFIG_KEY, LEGACY_KEY_MESSAGE, LEGACY_PAPER_SETTINGS_FILE, PAPER_SETTINGS_FILE, declaredSettings, } from "../lib/paper-config.mjs";
|
|
32
|
+
import { PAPER_MARKERS, papersIn } from "./build.js";
|
|
33
33
|
import { linkSkills, SKILLS_HOME } from "./link-skills.js";
|
|
34
34
|
import { doctorHooks } from "./hooks-settings.js";
|
|
35
35
|
/**
|
|
@@ -195,6 +195,22 @@ function papersVerdict(root, cliPapers, hookSays) {
|
|
|
195
195
|
}
|
|
196
196
|
return { lines: out, bad };
|
|
197
197
|
}
|
|
198
|
+
/**
|
|
199
|
+
* A pre-2.1.0 `venue.json` left in a paper: it is no longer read, so that paper's venue checks
|
|
200
|
+
* silently would not run if nothing named it. `init` moves it.
|
|
201
|
+
*/
|
|
202
|
+
function leftoverSettingsVerdict(root, papersDir) {
|
|
203
|
+
if (papersDir === null)
|
|
204
|
+
return { lines: [], bad: 0 };
|
|
205
|
+
const lines = papersIn(resolve(root, papersDir), [
|
|
206
|
+
...PAPER_MARKERS,
|
|
207
|
+
LEGACY_PAPER_SETTINGS_FILE,
|
|
208
|
+
])
|
|
209
|
+
.map((dir) => join(dir, LEGACY_PAPER_SETTINGS_FILE))
|
|
210
|
+
.filter((f) => existsSync(f))
|
|
211
|
+
.map((f) => ` ✗ ${relative(root, f)} is no longer read — paperlint 2.1.0 renamed it ${PAPER_SETTINGS_FILE}, so this paper's venue checks do not run. \`npx paperlint init\` moves it`);
|
|
212
|
+
return { lines, bad: lines.length };
|
|
213
|
+
}
|
|
198
214
|
/**
|
|
199
215
|
* @returns 2 when the guard and the linter do not agree, or the declaration is unusable — those
|
|
200
216
|
* are binary and are the reason this command exists. A missing external program is a FACT, not a
|
|
@@ -224,16 +240,15 @@ cwd = process.cwd(), projectDir, run = spawnSync, cliPapers = null, skillLinks =
|
|
|
224
240
|
out.push(...declaration.lines);
|
|
225
241
|
bad += declaration.bad;
|
|
226
242
|
}
|
|
227
|
-
if (existsSync(join(root, "rpp.json")))
|
|
228
|
-
out.push(` ⚠ rpp.json is present — deprecated; the hooks never read it`);
|
|
229
243
|
out.push("", "papers directory");
|
|
230
244
|
const hookRoot = rawPkg ? papersRoot(rawPkg) : null;
|
|
231
245
|
const hookSays = typeof hookRoot === "string" ? hookRoot : null;
|
|
232
246
|
out.push(` the CLI will lint ${cliPapers ?? "(nothing — no declaration found)"}`);
|
|
233
247
|
out.push(` the hooks will guard ${hookSays ?? "(nothing — the guard refuses and says why on first use)"}`);
|
|
234
248
|
const verdict = papersVerdict(root, cliPapers, hookSays);
|
|
235
|
-
|
|
236
|
-
|
|
249
|
+
const leftover = leftoverSettingsVerdict(root, cliPapers ?? hookSays);
|
|
250
|
+
out.push(...verdict.lines, ...leftover.lines);
|
|
251
|
+
bad += verdict.bad + leftover.bad;
|
|
237
252
|
// A skill that is not linked is ADVISORY, like a missing program: `paperlint lint`, the hooks and CI
|
|
238
253
|
// work without it, and an entry of the same name that `init` refused to replace is the
|
|
239
254
|
// consumer's own decision. What this section removes is the silence — before it, a consumer
|
package/dist/doctor.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,6FAA6F;AAC7F,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpD,6FAA6F;AAC7F,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,kGAAkG;AAClG,kDAAkD;AAClD,OAAO,EACL,UAAU,EACV,UAAU,EACV,mBAAmB,EACnB,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"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"}
|
package/dist/engine.d.ts
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* TeX Live qualifies only when `kpsewhich` finds every file the venue declares (issue #26).
|
|
9
9
|
*
|
|
10
10
|
* The order (the Playwright pattern, decided 2026-09-24):
|
|
11
|
-
* 1.
|
|
11
|
+
* 1. paperlint's own cache (`paperlint toolchain` installs it) — when it has everything;
|
|
12
12
|
* 2. a TeX Live already on PATH — when IT has everything;
|
|
13
13
|
* 3. neither: on a terminal, ask once and install; without one (CI, an agent), refuse in one line
|
|
14
14
|
* that names `npx paperlint toolchain` and the missing packages. Never a silent install without a
|
|
@@ -34,7 +34,7 @@ export interface TreeProbe {
|
|
|
34
34
|
export interface EngineFacts {
|
|
35
35
|
/** install-tl-unx runs here (Linux, macOS). */
|
|
36
36
|
readonly supported: boolean;
|
|
37
|
-
/**
|
|
37
|
+
/** paperlint's cached TeX Live, probed — or null when there is none. */
|
|
38
38
|
readonly cache: TreeProbe | null;
|
|
39
39
|
/** The `pdflatex` on PATH, probed — or null when there is none. */
|
|
40
40
|
readonly system: TreeProbe | null;
|
package/dist/engine.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAI/C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,iFAAiF;AACjF,MAAM,MAAM,MAAM,GAAG,OAAO,SAAS,CAAC;AAEtC,6DAA6D;AAC7D,MAAM,WAAW,SAAS;IACxB,yFAAyF;IACzF,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,wDAAwD;IACxD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,4EAA4E;IAC5E,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC;AAED,MAAM,WAAW,WAAW;IAC1B,+CAA+C;IAC/C,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAI/C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,iFAAiF;AACjF,MAAM,MAAM,MAAM,GAAG,OAAO,SAAS,CAAC;AAEtC,6DAA6D;AAC7D,MAAM,WAAW,SAAS;IACxB,yFAAyF;IACzF,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,wDAAwD;IACxD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,4EAA4E;IAC5E,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC;AAED,MAAM,WAAW,WAAW;IAC1B,+CAA+C;IAC/C,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,wEAAwE;IACxE,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;IACjC,mEAAmE;IACnE,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAAC;IAClC,yEAAyE;IACzE,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,qFAAqF;IACrF,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AAED,MAAM,MAAM,cAAc,GACtB;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;CAAE,GACxD;IAAE,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;CAAE,GACzD;IAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GAC7D;IACE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,aAAa,GAAG,eAAe,CAAC;IACjD,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC,CAAC;AAEN;;;GAGG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,WAAW,GAAG,cAAc,CAS5D;AAID,oGAAoG;AACpG,eAAO,MAAM,iBAAiB,GAAI,UAAU,MAAM,CAAC,QAAQ,KAAG,OACf,CAAC;AAEhD;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,eAAe,CAAC,UAAU,CAAC,EACrC,KAAK,EAAE,MAAM,GACZ,MAAM,EAAE,CAYV;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EAEZ,QAAQ,GAAE,MAAM,CAAC,QAA2B,GAC3C,OAAO,CAQT;AAED,sEAAsE;AACtE,wBAAgB,YAAY,CAC1B,KAAK,EAAE,eAAe,CAAC,OAAO,CAAC,EAC/B,GAAG,EAAE,MAAM,EACX,MAAM,GAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAsB,GAC/C,MAAM,EAAE,CAKV;AAOD;;;GAGG;AACH,wBAAgB,SAAS,CACvB,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,eAAe,CAAC,UAAU,CAAC,EACrC,GAAG,GAAE,MAAkB,GACtB,MAAM,EAAE,CASV;AAED,wFAAwF;AACxF,wBAAgB,WAAW,CACzB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,MAAM,GAAE,CAAC,CAAC,EAAE,MAAM,KAAK,OAAsB,GAC5C,MAAM,GAAG,IAAI,CAIf"}
|
package/dist/engine.js
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* TeX Live qualifies only when `kpsewhich` finds every file the venue declares (issue #26).
|
|
9
9
|
*
|
|
10
10
|
* The order (the Playwright pattern, decided 2026-09-24):
|
|
11
|
-
* 1.
|
|
11
|
+
* 1. paperlint's own cache (`paperlint toolchain` installs it) — when it has everything;
|
|
12
12
|
* 2. a TeX Live already on PATH — when IT has everything;
|
|
13
13
|
* 3. neither: on a terminal, ask once and install; without one (CI, an agent), refuse in one line
|
|
14
14
|
* that names `npx paperlint toolchain` and the missing packages. Never a silent install without a
|
package/dist/facts-file.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { type FontFact, type LastPage } from "./pdf-geometry.ts";
|
|
2
2
|
import { type PdfFacts, type PdfReader } from "./pdf-facts.ts";
|
|
3
|
-
import { type FactsGeometryFields, type Geometry } from "./domain/geometry.ts";
|
|
3
|
+
import { type FactsGeometryFields, type FlatGeometry, type Geometry } from "./domain/geometry.ts";
|
|
4
|
+
import { type Sha256 } from "./domain/sha256.ts";
|
|
4
5
|
import type { MeasureGeometry } from "./ports/measure-geometry.ts";
|
|
5
6
|
import type { Files } from "./ports/files.ts";
|
|
6
7
|
import { type Result } from "./domain/result.ts";
|
|
@@ -9,19 +10,19 @@ export declare const FACTS_DIR = "_build";
|
|
|
9
10
|
export declare const FACTS_FILE = "paper.facts.json";
|
|
10
11
|
/** Where a paper's facts live. */
|
|
11
12
|
export declare const factsPath: (paperDir: string) => string;
|
|
12
|
-
/**
|
|
13
|
+
/** What the facts need from a paper's `paperlint.json`: its venue's label, its kind, where its PDF is. */
|
|
13
14
|
export interface VenueDecl {
|
|
14
|
-
|
|
15
|
+
/** The venue preset's display label (`agenticdev`), or null when the paper extends none. */
|
|
16
|
+
readonly label: string | null;
|
|
15
17
|
readonly kind: string | null;
|
|
16
18
|
readonly pdf: string | null;
|
|
17
19
|
}
|
|
18
|
-
/** A parsed `venue.json`, or null when it names no venue. */
|
|
19
|
-
export declare function parseVenueDecl(json: unknown): VenueDecl | null;
|
|
20
20
|
/**
|
|
21
|
-
*
|
|
22
|
-
*
|
|
21
|
+
* What a paper's `paperlint.json` declares, or null when it has none. THROWS with a one-line reason
|
|
22
|
+
* when the file does not parse, its `extends` does not resolve, or only the pre-2.1.0 `venue.json`
|
|
23
|
+
* is there: the build reports that as its `facts` failure rather than building against no venue.
|
|
23
24
|
*/
|
|
24
|
-
export declare function declaredVenue(files: Files, paperDir: string): VenueDecl | null;
|
|
25
|
+
export declare function declaredVenue(files: Files, paperDir: string, venuesDir?: string): VenueDecl | null;
|
|
25
26
|
/** One font as the facts file spells it. `type` keeps poppler's spelling (`Type 3`). */
|
|
26
27
|
export interface FontEntry {
|
|
27
28
|
readonly name: string;
|
|
@@ -74,7 +75,7 @@ export interface MeasureOptions {
|
|
|
74
75
|
readonly kind?: string | null;
|
|
75
76
|
/** The page-geometry measurer (banal, as the composition root wired it). */
|
|
76
77
|
readonly measure: MeasureGeometry;
|
|
77
|
-
/** Where the PDF and `
|
|
78
|
+
/** Where the PDF and `paperlint.json` are read from. */
|
|
78
79
|
readonly files: Files;
|
|
79
80
|
}
|
|
80
81
|
/** The document, and the geometry it was projected from — a caller decides what "no geometry" means. */
|
|
@@ -93,4 +94,27 @@ export declare function measurePaper(paperDir: string, pdf: string, o: MeasureOp
|
|
|
93
94
|
* an earlier file as it was — its `pdf_sha256` no longer matches the PDF, so a rule refuses it.
|
|
94
95
|
*/
|
|
95
96
|
export declare function writeFactsFile(files: Files, paperDir: string, facts: FactsDocument): string;
|
|
97
|
+
/** What a rule judges, read back from the facts file and typed once. */
|
|
98
|
+
export interface ReadFacts {
|
|
99
|
+
/** As the file spells it: relative to the paper directory, or absolute. */
|
|
100
|
+
readonly pdf: string;
|
|
101
|
+
readonly sha: Sha256;
|
|
102
|
+
readonly fonts: readonly FontEntry[];
|
|
103
|
+
/** The geometry columns, or null when no measurer ran (`geometry_source` is null). */
|
|
104
|
+
readonly geometry: FlatGeometry | null;
|
|
105
|
+
}
|
|
106
|
+
/** Why a facts file cannot be judged. */
|
|
107
|
+
export type FactsProblem = {
|
|
108
|
+
readonly kind: "schema";
|
|
109
|
+
readonly got: string;
|
|
110
|
+
} | {
|
|
111
|
+
readonly kind: "broken";
|
|
112
|
+
readonly why: string;
|
|
113
|
+
};
|
|
114
|
+
/**
|
|
115
|
+
* The facts file's text → what a rule judges, or why it cannot be judged. The one reader of the
|
|
116
|
+
* file in `src/`, beside its one writer: a field renamed here and not there is a compile error in
|
|
117
|
+
* this module, not a rule that silently reads `undefined`. Pure.
|
|
118
|
+
*/
|
|
119
|
+
export declare function parseFactsText(text: string): Result<ReadFacts, FactsProblem>;
|
|
96
120
|
//# sourceMappingURL=facts-file.d.ts.map
|
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":"AAgCA,OAAO,EAGL,KAAK,QAAQ,EACb,KAAK,QAAQ,EACd,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAmB,KAAK,QAAQ,EAAE,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChF,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,QAAQ,EACd,MAAM,sBAAsB,CAAC;
|
|
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
|
@@ -33,8 +33,10 @@ import { join, relative, sep } from "node:path";
|
|
|
33
33
|
import { classifyLastPage, popplerType, } from "./pdf-geometry.js";
|
|
34
34
|
import { describeFailure } from "./pdf-facts.js";
|
|
35
35
|
import { flatGeometry, } from "./domain/geometry.js";
|
|
36
|
-
import { sha256Hex } from "./domain/sha256.js";
|
|
36
|
+
import { parseSha256, sha256Hex } from "./domain/sha256.js";
|
|
37
37
|
import { err, ok } from "./domain/result.js";
|
|
38
|
+
import { paperPreset, paperPresetProblem } from "./presets.js";
|
|
39
|
+
import { packageVenuesDir } from "../skills/paper-pipeline/scripts/consumer.mjs";
|
|
38
40
|
export const FACTS_SCHEMA = 2;
|
|
39
41
|
export const FACTS_DIR = "_build";
|
|
40
42
|
export const FACTS_FILE = "paper.facts.json";
|
|
@@ -45,23 +47,25 @@ export const factsPath = (paperDir) => join(paperDir, FACTS_DIR, FACTS_FILE);
|
|
|
45
47
|
* cwd, which is what these callers have always meant; the brand is not a claim this code checked it.
|
|
46
48
|
*/
|
|
47
49
|
const at = (p) => p;
|
|
48
|
-
const str = (v) => (typeof v === "string" ? v : null);
|
|
49
|
-
/** A parsed `venue.json`, or null when it names no venue. */
|
|
50
|
-
export function parseVenueDecl(json) {
|
|
51
|
-
const d = typeof json === "object" && json !== null ? json : {};
|
|
52
|
-
const field = (k) => str(d[k]);
|
|
53
|
-
const venue = field("venue");
|
|
54
|
-
return venue ? { venue, kind: field("kind"), pdf: field("pdf") } : null;
|
|
55
|
-
}
|
|
56
50
|
/**
|
|
57
|
-
*
|
|
58
|
-
*
|
|
51
|
+
* What a paper's `paperlint.json` declares, or null when it has none. THROWS with a one-line reason
|
|
52
|
+
* when the file does not parse, its `extends` does not resolve, or only the pre-2.1.0 `venue.json`
|
|
53
|
+
* is there: the build reports that as its `facts` failure rather than building against no venue.
|
|
59
54
|
*/
|
|
60
|
-
export function declaredVenue(files, paperDir) {
|
|
61
|
-
const
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
55
|
+
export function declaredVenue(files, paperDir, venuesDir = packageVenuesDir()) {
|
|
56
|
+
const p = paperPreset(paperDir, { files, venuesDir });
|
|
57
|
+
const problem = paperPresetProblem(paperDir, p);
|
|
58
|
+
if (problem !== null)
|
|
59
|
+
throw new Error(problem);
|
|
60
|
+
if (p.kind === "resolved")
|
|
61
|
+
return {
|
|
62
|
+
label: p.preset.label,
|
|
63
|
+
kind: p.settings.kind,
|
|
64
|
+
pdf: p.settings.pdf,
|
|
65
|
+
};
|
|
66
|
+
return p.kind === "none" && p.settings
|
|
67
|
+
? { label: null, kind: p.settings.kind, pdf: p.settings.pdf }
|
|
68
|
+
: null;
|
|
65
69
|
}
|
|
66
70
|
export function fontEntry(f) {
|
|
67
71
|
return {
|
|
@@ -115,7 +119,7 @@ export async function measurePaper(paperDir, pdf, o) {
|
|
|
115
119
|
const facts = factsDocument({
|
|
116
120
|
pdf: posix(relative(paperDir, pdf)),
|
|
117
121
|
sha: sha256Hex(bytes),
|
|
118
|
-
venue: o.venue ?? decl?.
|
|
122
|
+
venue: o.venue ?? decl?.label ?? null,
|
|
119
123
|
kind: o.kind ?? decl?.kind ?? null,
|
|
120
124
|
read: r.facts,
|
|
121
125
|
geometry,
|
|
@@ -131,4 +135,100 @@ export function writeFactsFile(files, paperDir, facts) {
|
|
|
131
135
|
files.writeAtomic(at(out), new TextEncoder().encode(`${JSON.stringify(facts, null, 2)}\n`));
|
|
132
136
|
return out;
|
|
133
137
|
}
|
|
138
|
+
const isRecord = (v) => typeof v === "object" && v !== null && !Array.isArray(v);
|
|
139
|
+
const isNum = (v) => typeof v === "number" && Number.isFinite(v);
|
|
140
|
+
const numOrNull = (v) => v === null || isNum(v);
|
|
141
|
+
function fontOf(v) {
|
|
142
|
+
if (!isRecord(v))
|
|
143
|
+
return null;
|
|
144
|
+
const { name, type, embedded, program } = v;
|
|
145
|
+
return typeof name === "string" &&
|
|
146
|
+
typeof type === "string" &&
|
|
147
|
+
typeof embedded === "boolean" &&
|
|
148
|
+
typeof program === "string"
|
|
149
|
+
? { name, type, embedded, program }
|
|
150
|
+
: null;
|
|
151
|
+
}
|
|
152
|
+
const MAYBE_NUMBERS = [
|
|
153
|
+
"page_w_in",
|
|
154
|
+
"page_h_in",
|
|
155
|
+
"columns",
|
|
156
|
+
"body_pt",
|
|
157
|
+
"ref_pt",
|
|
158
|
+
];
|
|
159
|
+
const NUMBERS = ["body_pages", "ref_pages", "appendix_pages"];
|
|
160
|
+
/** The geometry columns when a measurer ran; the shape error otherwise. */
|
|
161
|
+
function geometryOf(d) {
|
|
162
|
+
if (d["geometry_source"] === null)
|
|
163
|
+
return ok(null);
|
|
164
|
+
if (typeof d["geometry_source"] !== "string")
|
|
165
|
+
return err("`geometry_source` is neither a measurer's name nor null");
|
|
166
|
+
const bad = MAYBE_NUMBERS.find((k) => !numOrNull(d[k])) ??
|
|
167
|
+
NUMBERS.find((k) => !isNum(d[k]));
|
|
168
|
+
if (bad)
|
|
169
|
+
return err(`\`${bad}\` is not a number`);
|
|
170
|
+
const pagesByType = d["pages_by_type"];
|
|
171
|
+
if (!isRecord(pagesByType) || !Object.values(pagesByType).every(isNum))
|
|
172
|
+
return err("`pages_by_type` is not an object of page counts");
|
|
173
|
+
const n = (k) => d[k];
|
|
174
|
+
return ok({
|
|
175
|
+
page_w_in: n("page_w_in"),
|
|
176
|
+
page_h_in: n("page_h_in"),
|
|
177
|
+
columns: n("columns"),
|
|
178
|
+
body_pt: n("body_pt"),
|
|
179
|
+
ref_pt: n("ref_pt"),
|
|
180
|
+
body_pages: d["body_pages"],
|
|
181
|
+
ref_pages: d["ref_pages"],
|
|
182
|
+
appendix_pages: d["appendix_pages"],
|
|
183
|
+
pages_by_type: pagesByType,
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
/** The PDF the facts describe: its path and its sha256. */
|
|
187
|
+
function artifactOf(d) {
|
|
188
|
+
const pdf = d["pdf"];
|
|
189
|
+
if (typeof pdf !== "string" || pdf === "")
|
|
190
|
+
return err("no `pdf` path");
|
|
191
|
+
try {
|
|
192
|
+
return ok({ pdf, sha: parseSha256(String(d["pdf_sha256"])) });
|
|
193
|
+
}
|
|
194
|
+
catch {
|
|
195
|
+
return err("no `pdf_sha256` of 64 hex digits");
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* The facts file's text → what a rule judges, or why it cannot be judged. The one reader of the
|
|
200
|
+
* file in `src/`, beside its one writer: a field renamed here and not there is a compile error in
|
|
201
|
+
* this module, not a rule that silently reads `undefined`. Pure.
|
|
202
|
+
*/
|
|
203
|
+
export function parseFactsText(text) {
|
|
204
|
+
let d;
|
|
205
|
+
try {
|
|
206
|
+
d = JSON.parse(text);
|
|
207
|
+
}
|
|
208
|
+
catch (e) {
|
|
209
|
+
return err({ kind: "broken", why: `not JSON (${e.message})` });
|
|
210
|
+
}
|
|
211
|
+
if (!isRecord(d))
|
|
212
|
+
return err({ kind: "broken", why: "not a JSON object" });
|
|
213
|
+
if (d["schema"] !== FACTS_SCHEMA)
|
|
214
|
+
return err({ kind: "schema", got: JSON.stringify(d["schema"] ?? null) });
|
|
215
|
+
const artifact = artifactOf(d);
|
|
216
|
+
if (!artifact.ok)
|
|
217
|
+
return err({ kind: "broken", why: artifact.error });
|
|
218
|
+
const rawFonts = d["fonts"];
|
|
219
|
+
const fonts = Array.isArray(rawFonts) ? rawFonts.map(fontOf) : null;
|
|
220
|
+
if (fonts === null || fonts.some((f) => f === null))
|
|
221
|
+
return err({
|
|
222
|
+
kind: "broken",
|
|
223
|
+
why: "`fonts` is not a list of { name, type, embedded, program }",
|
|
224
|
+
});
|
|
225
|
+
const geometry = geometryOf(d);
|
|
226
|
+
if (!geometry.ok)
|
|
227
|
+
return err({ kind: "broken", why: geometry.error });
|
|
228
|
+
return ok({
|
|
229
|
+
...artifact.value,
|
|
230
|
+
fonts: fonts,
|
|
231
|
+
geometry: geometry.value,
|
|
232
|
+
});
|
|
233
|
+
}
|
|
134
234
|
//# 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":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EACL,gBAAgB,EAChB,WAAW,GAGZ,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,eAAe,EAAiC,MAAM,gBAAgB,CAAC;AAChF,OAAO,EACL,YAAY,
|
|
1
|
+
{"version":3,"file":"facts-file.js","sourceRoot":"","sources":["../src/facts-file.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EACL,gBAAgB,EAChB,WAAW,GAGZ,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,eAAe,EAAiC,MAAM,gBAAgB,CAAC;AAChF,OAAO,EACL,YAAY,GAIb,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,WAAW,EAAE,SAAS,EAAe,MAAM,oBAAoB,CAAC;AAIzE,OAAO,EAAE,GAAG,EAAE,EAAE,EAAe,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,+CAA+C,CAAC;AAEjF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC;AAC9B,MAAM,CAAC,MAAM,SAAS,GAAG,QAAQ,CAAC;AAClC,MAAM,CAAC,MAAM,UAAU,GAAG,kBAAkB,CAAC;AAE7C,kCAAkC;AAClC,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,QAAgB,EAAU,EAAE,CACpD,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;AAExC;;;GAGG;AACH,MAAM,EAAE,GAAG,CAAC,CAAS,EAAgB,EAAE,CAAC,CAAiB,CAAC;AAU1D;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAC3B,KAAY,EACZ,QAAgB,EAChB,YAAoB,gBAAgB,EAAE;IAEtC,MAAM,CAAC,GAAG,WAAW,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IACtD,MAAM,OAAO,GAAG,kBAAkB,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IAChD,IAAI,OAAO,KAAK,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;IAC/C,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU;QACvB,OAAO;YACL,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK;YACrB,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI;YACrB,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG;SACpB,CAAC;IACJ,OAAO,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,QAAQ;QACpC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE;QAC7D,CAAC,CAAC,IAAI,CAAC;AACX,CAAC;AAmCD,MAAM,UAAU,SAAS,CAAC,CAAW;IACnC,OAAO;QACL,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC;QACpB,yFAAyF;QACzF,0FAA0F;QAC1F,QAAQ,EAAE,CAAC,CAAC,IAAI,KAAK,cAAc;QACnC,OAAO,EAAE,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO;KAClD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,CAAW;IACvC,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU;QACvB,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACxE,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ;QACrB,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IACzD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;AAC1C,CAAC;AAaD,mCAAmC;AACnC,MAAM,UAAU,aAAa,CAAC,CAAa;IACzC,MAAM,IAAI,GAAG,aAAa,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1D,OAAO;QACL,MAAM,EAAE,YAAY;QACpB,GAAG,EAAE,CAAC,CAAC,GAAG;QACV,UAAU,EAAE,CAAC,CAAC,GAAG;QACjB,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK;QACpB,YAAY,EAAE,aAAa;QAC3B,KAAK,EACH,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE;QACvE,SAAS,EAAE,IAAI;QACf,iBAAiB,EAAE,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI;QACpE,GAAG,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC;KAC5B,CAAC;AACJ,CAAC;AAqBD,MAAM,KAAK,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAE5D;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,QAAgB,EAChB,GAAW,EACX,CAAiB;IAEjB,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAI,CAAC,CAAC,CAAC,EAAE;QAAE,OAAO,GAAG,CAAC,eAAe,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IAC/C,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACzC,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,GAAG,CAAC,GAAG,GAAG,6BAA6B,CAAC,CAAC;IACpE,MAAM,QAAQ,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACnD,MAAM,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAG,aAAa,CAAC;QAC1B,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QACnC,GAAG,EAAE,SAAS,CAAC,KAAK,CAAC;QACrB,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,IAAI;QACrC,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI;QAClC,IAAI,EAAE,CAAC,CAAC,KAAK;QACb,QAAQ;KACT,CAAC,CAAC;IACH,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;AACjC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAC5B,KAAY,EACZ,QAAgB,EAChB,KAAoB;IAEpB,MAAM,GAAG,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IAChC,KAAK,CAAC,WAAW,CACf,EAAE,CAAC,GAAG,CAAC,EACP,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAChE,CAAC;IACF,OAAO,GAAG,CAAC;AACb,CAAC;AAmBD,MAAM,QAAQ,GAAG,CAAC,CAAU,EAA0C,EAAE,CACtE,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC3D,MAAM,KAAK,GAAG,CAAC,CAAU,EAAe,EAAE,CACxC,OAAO,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC9C,MAAM,SAAS,GAAG,CAAC,CAAU,EAAsB,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;AAE7E,SAAS,MAAM,CAAC,CAAU;IACxB,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9B,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;IAC5C,OAAO,OAAO,IAAI,KAAK,QAAQ;QAC7B,OAAO,IAAI,KAAK,QAAQ;QACxB,OAAO,QAAQ,KAAK,SAAS;QAC7B,OAAO,OAAO,KAAK,QAAQ;QAC3B,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE;QACnC,CAAC,CAAC,IAAI,CAAC;AACX,CAAC;AAED,MAAM,aAAa,GAAG;IACpB,WAAW;IACX,WAAW;IACX,SAAS;IACT,SAAS;IACT,QAAQ;CACA,CAAC;AACX,MAAM,OAAO,GAAG,CAAC,YAAY,EAAE,WAAW,EAAE,gBAAgB,CAAU,CAAC;AAEvE,2EAA2E;AAC3E,SAAS,UAAU,CACjB,CAAoC;IAEpC,IAAI,CAAC,CAAC,iBAAiB,CAAC,KAAK,IAAI;QAAE,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;IACnD,IAAI,OAAO,CAAC,CAAC,iBAAiB,CAAC,KAAK,QAAQ;QAC1C,OAAO,GAAG,CAAC,yDAAyD,CAAC,CAAC;IACxE,MAAM,GAAG,GACP,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpC,IAAI,GAAG;QAAE,OAAO,GAAG,CAAC,KAAK,GAAG,oBAAoB,CAAC,CAAC;IAClD,MAAM,WAAW,GAAG,CAAC,CAAC,eAAe,CAAC,CAAC;IACvC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;QACpE,OAAO,GAAG,CAAC,iDAAiD,CAAC,CAAC;IAChE,MAAM,CAAC,GAAG,CAAC,CAAiC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAkB,CAAC;IACvE,OAAO,EAAE,CAAC;QACR,SAAS,EAAE,CAAC,CAAC,WAAW,CAAC;QACzB,SAAS,EAAE,CAAC,CAAC,WAAW,CAAC;QACzB,OAAO,EAAE,CAAC,CAAC,SAAS,CAAC;QACrB,OAAO,EAAE,CAAC,CAAC,SAAS,CAAC;QACrB,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC;QACnB,UAAU,EAAE,CAAC,CAAC,YAAY,CAAW;QACrC,SAAS,EAAE,CAAC,CAAC,WAAW,CAAW;QACnC,cAAc,EAAE,CAAC,CAAC,gBAAgB,CAAW;QAC7C,aAAa,EAAE,WAA+C;KAC/D,CAAC,CAAC;AACL,CAAC;AAED,2DAA2D;AAC3D,SAAS,UAAU,CACjB,CAAoC;IAEpC,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IACrB,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,EAAE;QAAE,OAAO,GAAG,CAAC,eAAe,CAAC,CAAC;IACvE,IAAI,CAAC;QACH,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAChE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,GAAG,CAAC,kCAAkC,CAAC,CAAC;IACjD,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,IAAI,CAAU,CAAC;IACf,IAAI,CAAC;QACH,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,GAAG,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,aAAc,CAAW,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;IAC5E,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QAAE,OAAO,GAAG,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,mBAAmB,EAAE,CAAC,CAAC;IAC3E,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,YAAY;QAC9B,OAAO,GAAG,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC;IAC3E,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;IAC/B,IAAI,CAAC,QAAQ,CAAC,EAAE;QAAE,OAAO,GAAG,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IACtE,MAAM,QAAQ,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;IAC5B,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACpE,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC;QACjD,OAAO,GAAG,CAAC;YACT,IAAI,EAAE,QAAQ;YACd,GAAG,EAAE,4DAA4D;SAClE,CAAC,CAAC;IACL,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;IAC/B,IAAI,CAAC,QAAQ,CAAC,EAAE;QAAE,OAAO,GAAG,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IACtE,OAAO,EAAE,CAAC;QACR,GAAG,QAAQ,CAAC,KAAK;QACjB,KAAK,EAAE,KAAoB;QAC3B,QAAQ,EAAE,QAAQ,CAAC,KAAK;KACzB,CAAC,CAAC;AACL,CAAC"}
|
package/dist/hooks-settings.d.ts
CHANGED
|
@@ -8,11 +8,6 @@ export declare const WIRING_FILE: string;
|
|
|
8
8
|
* `hooks.json`, and nothing machine-specific lands in a committed file.
|
|
9
9
|
*/
|
|
10
10
|
export declare const MANAGED_BY: string;
|
|
11
|
-
/**
|
|
12
|
-
* The same token as an install under the package's old name wrote it. A command spelled this way
|
|
13
|
-
* is ours from before the rename: `init` removes it and writes the current one, `doctor` names it.
|
|
14
|
-
*/
|
|
15
|
-
export declare const LEGACY_MANAGED_BY: string;
|
|
16
11
|
export interface HookCommand {
|
|
17
12
|
readonly type: string;
|
|
18
13
|
readonly command: string;
|
|
@@ -26,19 +21,6 @@ export type HooksMap = Readonly<Record<string, readonly HookEntry[]>>;
|
|
|
26
21
|
export type Settings = Record<string, unknown>;
|
|
27
22
|
/** vigiles' merge, as the one function this module needs from it. */
|
|
28
23
|
export type Merge = (existing: Settings, compiled: HooksMap, managedBy: string) => Settings;
|
|
29
|
-
/**
|
|
30
|
-
* Which paperlint hook a command runs, if any, and whether it is spelled the way `init` writes it.
|
|
31
|
-
*
|
|
32
|
-
* Recognised spellings — each is ONE lexeme of a shell command, which is what a command is:
|
|
33
|
-
* `node <…>/node_modules/paperlint/bin/rpp.mjs hook <name>` ours when the path is exactly
|
|
34
|
-
* MANAGED_BY
|
|
35
|
-
* the same under `node_modules/research-paper-pipeline/` `legacy`: ours before the rename
|
|
36
|
-
* `npx paperlint hook <name>`, `node_modules/.bin/paperlint hook <name>` (or the old bin names)
|
|
37
|
-
* another spelling
|
|
38
|
-
* `vigiles … run-program <…>/node_modules/<pkg>/hooks/<name>.hook.mjs`
|
|
39
|
-
* another spelling
|
|
40
|
-
* The last is how the one real consumer wired all three by hand before `init` could.
|
|
41
|
-
*/
|
|
42
24
|
export declare function hookRun(command: string): {
|
|
43
25
|
readonly name: string;
|
|
44
26
|
readonly ours: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks-settings.d.ts","sourceRoot":"","sources":["../src/hooks-settings.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"hooks-settings.d.ts","sourceRoot":"","sources":["../src/hooks-settings.ts"],"names":[],"mappings":"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"}
|