@publisle/research 0.1.1 → 0.2.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/dist/node.js CHANGED
@@ -4,10 +4,42 @@ import { execFile, spawn } from "node:child_process";
4
4
  import { constants } from "node:fs";
5
5
  import { copyFile, mkdir, mkdtemp, readFile, realpath, readdir, rm, writeFile, } from "node:fs/promises";
6
6
  import { homedir, tmpdir } from "node:os";
7
- import { dirname, isAbsolute, join, relative, resolve } from "node:path";
7
+ import { basename, dirname, isAbsolute, join, relative, resolve, } from "node:path";
8
8
  import { promisify } from "node:util";
9
+ import { compileNativePdf, } from "./native-node.js";
10
+ export { compileNativePdf, };
11
+ import { parseDocument, } from "@publisle/schema";
9
12
  import { createLatexPackage } from "./package.js";
10
13
  const execute = promisify(execFile);
14
+ /** One kpsewhich invocation resolves every requirement at once. kpsewhich
15
+ * exits non-zero when a file is missing but still lists the found paths on
16
+ * stdout, so partial results survive; output basenames match the arguments. */
17
+ async function kpsewhichAll(names) {
18
+ const paths = new Map();
19
+ if (!names.length)
20
+ return paths;
21
+ let stdout;
22
+ try {
23
+ stdout = (await execute("kpsewhich", [...names], { timeout: 10_000 }))
24
+ .stdout;
25
+ }
26
+ catch (error) {
27
+ stdout = error.stdout ?? "";
28
+ }
29
+ for (const line of stdout.split("\n")) {
30
+ const path = line.trim();
31
+ if (path)
32
+ paths.set(basename(path), path);
33
+ }
34
+ return paths;
35
+ }
36
+ /** In-process probe caches. Native TeX installations do not change while the
37
+ * process runs, so successful probes are reused across compilations. Failed
38
+ * probes are retried so an installation completed mid-process is picked up. */
39
+ const taggingFormatCache = new Map();
40
+ const doctorCache = new Map();
41
+ const engineVersionCache = new Map();
42
+ const dependencyDigestCache = new Map();
11
43
  function packagePath(directory, name) {
12
44
  if (isAbsolute(name) || name.split(/[\\/]/u).includes(".."))
13
45
  throw new Error(`Unsafe package path: ${name}`);
@@ -81,16 +113,16 @@ export async function compileLatexPackage(source, options) {
81
113
  ...source.resources,
82
114
  };
83
115
  try {
84
- for (const [name, value] of Object.entries({
116
+ await Promise.all(Object.entries({
85
117
  ...source.files,
86
118
  ...source.resources,
87
- })) {
119
+ }).map(async ([name, value]) => {
88
120
  const path = packagePath(directory, name);
89
121
  await mkdir(dirname(path), { recursive: true });
90
122
  await writeFile(path, value, { flag: "wx" });
91
- }
123
+ }));
92
124
  const base = await realpath(options.sourceDirectory);
93
- for (const asset of source.assets) {
125
+ await Promise.all(source.assets.map(async (asset) => {
94
126
  const path = await realpath(resolve(base, asset.source));
95
127
  const local = relative(base, path);
96
128
  if (isAbsolute(local) ||
@@ -101,7 +133,7 @@ export async function compileLatexPackage(source, options) {
101
133
  await mkdir(dirname(destination), { recursive: true });
102
134
  await copyFile(path, destination, constants.COPYFILE_EXCL);
103
135
  files[asset.destination] = new Uint8Array(await readFile(destination));
104
- }
136
+ }));
105
137
  let stdout = "";
106
138
  const containerName = `publisle-${randomUUID()}`;
107
139
  try {
@@ -176,28 +208,47 @@ export async function compileLatexPackage(source, options) {
176
208
  files["manuscript.log"] = log;
177
209
  files["build.log"] = stdout;
178
210
  const engineVersion = backend.kind === "native"
179
- ? (await execute(source.engine, ["--version"], { timeout: 5000 })).stdout.split("\n")[0]
211
+ ? await (async () => {
212
+ const cached = engineVersionCache.get(source.engine);
213
+ if (cached)
214
+ return cached;
215
+ const version = (await execute(source.engine, ["--version"], { timeout: 5000 })).stdout.split("\n")[0];
216
+ engineVersionCache.set(source.engine, version ?? "");
217
+ return version;
218
+ })()
180
219
  : backend.image;
181
220
  const fontVersions = {};
182
221
  if (backend.kind === "native")
183
- for (const [script, font] of Object.entries(source.fonts))
222
+ await Promise.all(Object.entries(source.fonts).map(async ([script, font]) => {
184
223
  fontVersions[script] = (await execute("fc-match", ["-f", "%{family}: %{fontversion}\n", font], { timeout: 5000 })).stdout.trim();
224
+ }));
185
225
  const dependencyDigests = {};
186
226
  const dependencyVersions = {};
187
- if (backend.kind === "native")
188
- for (const name of source.requirements) {
227
+ if (backend.kind === "native") {
228
+ const resolvedPaths = await kpsewhichAll(source.requirements.filter((name) => source.resources?.[name] === undefined &&
229
+ source.files[name] === undefined));
230
+ await Promise.all(source.requirements.map(async (name) => {
189
231
  const provided = source.resources?.[name] ?? source.files[name];
232
+ const path = resolvedPaths.get(name);
190
233
  const bytes = provided === undefined
191
- ? await readFile((await execute("kpsewhich", [name], { timeout: 5000 })).stdout.trim())
234
+ ? await readFile(path ?? "")
192
235
  : typeof provided === "string"
193
236
  ? Buffer.from(provided)
194
237
  : provided;
195
- dependencyDigests[name] =
196
- "sha256:" + createHash("sha256").update(bytes).digest("hex");
238
+ const digest = dependencyDigestCache.get(path ?? name);
239
+ if (digest) {
240
+ dependencyDigests[name] = digest;
241
+ }
242
+ else {
243
+ dependencyDigests[name] =
244
+ "sha256:" + createHash("sha256").update(bytes).digest("hex");
245
+ dependencyDigestCache.set(path ?? name, dependencyDigests[name]);
246
+ }
197
247
  const version = /\\Provides(?:Package|Class)\{[^}]+\}\s*\[([^\]]+)\]/u.exec(new TextDecoder().decode(bytes))?.[1];
198
248
  if (version)
199
249
  dependencyVersions[name] = version;
200
- }
250
+ }));
251
+ }
201
252
  files["manifest.json"] =
202
253
  JSON.stringify({
203
254
  template: source.template,
@@ -239,6 +290,9 @@ export async function writeLatexPackage(compiled, outputDirectory) {
239
290
  }
240
291
  const compilerLock = join(homedir(), ".cache", "publisle", "compiler.json");
241
292
  async function taggingFormat(image) {
293
+ const key = image ?? "native";
294
+ if (taggingFormatCache.has(key))
295
+ return taggingFormatCache.get(key);
242
296
  const directory = await mkdtemp(join(tmpdir(), "publisle-format-"));
243
297
  const containerName = `publisle-format-${randomUUID()}`;
244
298
  try {
@@ -285,7 +339,9 @@ async function taggingFormat(image) {
285
339
  timeout: 15_000,
286
340
  maxBuffer: 1024 * 1024,
287
341
  });
288
- return /PUBLISLE-FORMAT:(\d{4}-\d{2}-\d{2})/u.exec(output.stdout)?.[1];
342
+ const detected = /PUBLISLE-FORMAT:(\d{4}-\d{2}-\d{2})/u.exec(output.stdout)?.[1];
343
+ taggingFormatCache.set(key, detected);
344
+ return detected;
289
345
  }
290
346
  finally {
291
347
  if (image)
@@ -296,6 +352,17 @@ async function taggingFormat(image) {
296
352
  }
297
353
  }
298
354
  export async function doctorCompiler(source) {
355
+ const cacheKey = [
356
+ source.engine,
357
+ source.pdfStandard ?? "",
358
+ Object.values(source.fonts).join(","),
359
+ ...source.requirements.map((name) => source.files[name] === undefined && source.resources?.[name] === undefined
360
+ ? name
361
+ : `${name}:bundled`),
362
+ ].join("|");
363
+ const cached = doctorCache.get(cacheKey);
364
+ if (cached)
365
+ return cached;
299
366
  const missing = [];
300
367
  let latexFormat;
301
368
  if (source.engine === "lualatex") {
@@ -305,39 +372,40 @@ export async function doctorCompiler(source) {
305
372
  else if (source.pdfStandard && latexFormat < "2025-11-01")
306
373
  missing.push("LaTeX format >= 2025-11-01 (PDF/UA tagging)");
307
374
  }
308
- for (const command of ["latexmk", source.engine, "bibtex", "kpsewhich"])
375
+ await Promise.all(["latexmk", source.engine, "bibtex", "kpsewhich"].map(async (command) => {
309
376
  try {
310
377
  await execute(command, ["--version"], { timeout: 5000 });
311
378
  }
312
379
  catch {
313
380
  missing.push(command);
314
381
  }
315
- for (const dependency of source.requirements) {
316
- if (source.files[dependency] !== undefined ||
317
- source.resources?.[dependency] !== undefined)
318
- continue;
319
- try {
320
- if (!(await execute("kpsewhich", [dependency], { timeout: 5000 })).stdout.trim())
321
- missing.push(dependency);
322
- }
323
- catch {
382
+ }));
383
+ const external = source.requirements.filter((dependency) => source.files[dependency] === undefined &&
384
+ source.resources?.[dependency] === undefined);
385
+ const resolved = await kpsewhichAll(external);
386
+ for (const dependency of external)
387
+ if (!resolved.has(dependency))
324
388
  missing.push(dependency);
325
- }
326
- }
327
- for (const font of Object.values(source.fonts))
389
+ await Promise.all(Object.values(source.fonts).map(async (font) => {
328
390
  try {
329
- const matched = (await execute("fc-match", ["-f", "%{family}", font], { timeout: 5000 })).stdout;
391
+ const matched = (await execute("fc-match", ["-f", "%{family}", font], {
392
+ timeout: 5000,
393
+ })).stdout;
330
394
  if (!matched.toLowerCase().includes(font.toLowerCase()))
331
395
  missing.push(`font:${font}`);
332
396
  }
333
397
  catch {
334
398
  missing.push(`font:${font}`);
335
399
  }
336
- return {
400
+ }));
401
+ const status = {
337
402
  available: missing.length === 0,
338
403
  missing,
339
404
  ...(latexFormat ? { latexFormat } : {}),
340
405
  };
406
+ if (status.available)
407
+ doctorCache.set(cacheKey, status);
408
+ return status;
341
409
  }
342
410
  async function selectCompiler(source, options) {
343
411
  const mode = options.compiler ?? "auto";
@@ -430,8 +498,9 @@ export async function setupCompiler(options = {}) {
430
498
  }) + "\n");
431
499
  return details.Id;
432
500
  }
433
- /** Unicode-safe default PDF API. Never falls back to the legacy text exporter. */
434
501
  export async function exportPdf(document, options) {
502
+ if (options.engine === "rust")
503
+ return compileNativePdf(parseDocument(document), options);
435
504
  return compileLatexPackage(createLatexPackage(document, options), options);
436
505
  }
437
506
  export { lookupDoi, fetchBibliography, importCslJson } from "./remote.js";
package/dist/node.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"node.js","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"node.js","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,8 +1,17 @@
1
1
  {
2
2
  "name": "@publisle/research",
3
- "version": "0.1.1",
3
+ "version": "0.2.0",
4
4
  "description": "Citation resolution and BibTeX, CSL, LaTeX, JATS, and PDF export. Tooling only; readers must not import it.",
5
5
  "license": "MIT",
6
+ "keywords": [
7
+ "publisle",
8
+ "latex",
9
+ "pdf",
10
+ "citations",
11
+ "csl",
12
+ "jats",
13
+ "scholarly"
14
+ ],
6
15
  "type": "module",
7
16
  "sideEffects": false,
8
17
  "exports": {
@@ -25,11 +34,11 @@
25
34
  "dependencies": {
26
35
  "citeproc": "2.4.63",
27
36
  "fflate": "0.8.3",
28
- "@publisle/contracts": "^0.1.1",
29
- "@publisle/schema": "^0.1.0",
30
- "@publisle/template-sdk": "^0.1.1",
31
- "@publisle/template-article": "^0.1.1",
32
- "@publisle/profiles": "^0.1.1"
37
+ "@publisle/contracts": "^0.1.2",
38
+ "@publisle/profiles": "^0.1.2",
39
+ "@publisle/schema": "^0.1.1",
40
+ "@publisle/template-article": "^0.1.2",
41
+ "@publisle/template-sdk": "^0.1.3"
33
42
  },
34
43
  "publishConfig": {
35
44
  "access": "public"
package/src/article.ts CHANGED
@@ -264,6 +264,9 @@ export function projectArticle(
264
264
  const read = readEntries(document);
265
265
  losses.push(...read.losses);
266
266
  const blocks: ArticleBlock[] = [];
267
+ // An abstract is prose-only. The first non-paragraph block ends it, so a
268
+ // figure or table after the abstract heading can never join the abstract
269
+ // and float above it on the first page.
267
270
  let abstract = false;
268
271
  const authors = (document.metadata?.authors ?? []).map(
269
272
  (author) => author.name,
@@ -285,6 +288,7 @@ export function projectArticle(
285
288
  });
286
289
  continue;
287
290
  }
291
+ if (block.type !== "publisle:paragraph") abstract = false;
288
292
  if (block.type === "publisle:paragraph") {
289
293
  blocks.push({
290
294
  kind: "paragraph",
@@ -386,18 +390,19 @@ export function projectArticle(
386
390
  const fallback = flowParagraphs(data["fallback"], losses).flat();
387
391
  const alt = textOf(data["alt"]) ?? textOf(data["title"]);
388
392
  const source = textOf(data["value"]);
389
- const inlines: ArticleInline[] = [];
390
- if (alt) inlines.push({ type: "text", value: alt });
391
- if (fallback.length && inlines.length)
392
- inlines.push({ type: "text", value: " " });
393
- inlines.push(...fallback);
394
- if (source) {
395
- if (inlines.length) inlines.push({ type: "text", value: " " });
393
+ // One readable reduction: the authored fallback already describes the
394
+ // block, so appending the alternative text would repeat it. Strip tags
395
+ // from raw HTML only when nothing authored describes it.
396
+ const inlines: ArticleInline[] = fallback.length
397
+ ? [...fallback]
398
+ : alt
399
+ ? [{ type: "text", value: alt }]
400
+ : [];
401
+ if (source && !inlines.length)
396
402
  inlines.push({
397
403
  type: "text",
398
404
  value: source.replace(/<[^>]*>/gu, ""),
399
405
  });
400
- }
401
406
  blocks.push({
402
407
  kind: "paragraph",
403
408
  inlines,
package/src/index.ts CHANGED
@@ -1,4 +1,15 @@
1
1
  export type { CitationEntry, ResearchLoss } from "./article.ts";
2
+ export { citationClusters } from "./article.ts";
3
+ export {
4
+ createNativePdfPackage,
5
+ NATIVE_PDF_INPUT_VERSION,
6
+ NATIVE_PDF_TEMPLATES,
7
+ type NativeFont,
8
+ type NativePdfInput,
9
+ type NativePdfOptions,
10
+ type NativePdfPackage,
11
+ type NativePdfTemplate,
12
+ } from "./native.ts";
2
13
  export { parseBibtex, toBibtex, toCslJson } from "./bibtex.ts";
3
14
  export { parseCslStyle } from "./csl.ts";
4
15
  export { toJats, createJatsPackage, type JatsPackage } from "./jats.ts";
@@ -0,0 +1,189 @@
1
+ import { execFile } from "node:child_process";
2
+ import { promisify } from "node:util";
3
+ import {
4
+ mkdtemp,
5
+ readFile,
6
+ realpath,
7
+ rm,
8
+ stat,
9
+ writeFile,
10
+ } from "node:fs/promises";
11
+ import { tmpdir } from "node:os";
12
+ import { dirname, isAbsolute, join, relative, resolve, sep } from "node:path";
13
+ import { parseJson, isPlainObject, type Document } from "@publisle/schema";
14
+ import {
15
+ createNativePdfPackage,
16
+ type NativeFont,
17
+ type NativePdfOptions,
18
+ } from "./native.ts";
19
+ import { projectArticle, type ResearchLoss } from "./article.ts";
20
+
21
+ const execute = promisify(execFile);
22
+ export interface NativeCompileOptions extends Omit<
23
+ NativePdfOptions,
24
+ "fonts" | "assets"
25
+ > {
26
+ readonly sourceDirectory: string;
27
+ readonly fonts?: readonly NativeFont[];
28
+ readonly executable?: string;
29
+ readonly fontManifest?: string;
30
+ readonly timeoutMs?: number;
31
+ readonly signal?: AbortSignal;
32
+ }
33
+ export interface NativeCompilerDiagnostic extends ResearchLoss {
34
+ readonly blockId?: string;
35
+ }
36
+ export interface NativeCompileResult {
37
+ readonly pdf: Uint8Array;
38
+ readonly diagnostics: readonly NativeCompilerDiagnostic[];
39
+ readonly timings: Readonly<Record<string, number>>;
40
+ readonly pages: number;
41
+ readonly compilerVersion: string;
42
+ }
43
+
44
+ /** Explicit native compiler invocation. Automatic selection remains gated on parity. */
45
+ export async function compileNativePdf(
46
+ document: Document,
47
+ options: NativeCompileOptions,
48
+ ): Promise<NativeCompileResult> {
49
+ const timeout = options.timeoutMs ?? 180_000;
50
+ if (!Number.isSafeInteger(timeout) || timeout <= 0)
51
+ throw new Error("Compilation timeout must be a positive integer.");
52
+ const executable =
53
+ options.executable ?? process.env["PUBLISLE_NATIVE_COMPILER"];
54
+ if (!executable)
55
+ throw new Error(
56
+ "Set PUBLISLE_NATIVE_COMPILER to the pinned publisle-pdf executable.",
57
+ );
58
+ let fonts = options.fonts;
59
+ if (!fonts) {
60
+ const manifest =
61
+ options.fontManifest ?? process.env["PUBLISLE_NATIVE_FONTS"];
62
+ if (!manifest)
63
+ throw new Error(
64
+ "Set PUBLISLE_NATIVE_FONTS to the pinned font manifest JSON file.",
65
+ );
66
+ const bytes = await readFile(manifest);
67
+ const raw = parseJson(bytes, {
68
+ maxBytes: 65536,
69
+ maxDepth: 8,
70
+ maxNodes: 256,
71
+ });
72
+ if (!Array.isArray(raw))
73
+ throw new Error("Native font manifest must be an array.");
74
+ fonts = raw.map((entry: unknown) => {
75
+ if (
76
+ !isPlainObject(entry) ||
77
+ typeof entry["path"] !== "string" ||
78
+ !["regular", "bold", "italic", "mono", "fallback"].includes(
79
+ String(entry["role"]),
80
+ ) ||
81
+ (entry["index"] !== undefined &&
82
+ (!Number.isSafeInteger(entry["index"]) || Number(entry["index"]) < 0))
83
+ )
84
+ throw new Error("Invalid native font manifest entry.");
85
+ return {
86
+ path: resolve(dirname(manifest), entry["path"]),
87
+ role: entry["role"] as NativeFont["role"],
88
+ ...(entry["index"] === undefined
89
+ ? {}
90
+ : { index: Number(entry["index"]) }),
91
+ };
92
+ });
93
+ }
94
+ const base = await realpath(options.sourceDirectory);
95
+ const assets = await Promise.all(
96
+ [
97
+ ...new Set(
98
+ projectArticle(document).blocks.flatMap((block) =>
99
+ block.kind === "figure" ? [block.src] : [],
100
+ ),
101
+ ),
102
+ ].map(async (source) => {
103
+ if (/^[a-z][a-z0-9+.-]*:/iu.test(source))
104
+ throw new Error("Native CLI figures must be validated local files.");
105
+ const path = await realpath(resolve(base, source));
106
+ const local = relative(base, path);
107
+ if (isAbsolute(local) || local === ".." || local.startsWith(`..${sep}`))
108
+ throw new Error(`Figure asset escapes manuscript directory: ${source}`);
109
+ if ((await stat(path)).size > 16 * 1024 * 1024)
110
+ throw new Error(`Figure asset exceeds 16 MiB: ${source}`);
111
+ return { source, path };
112
+ }),
113
+ );
114
+ const source = createNativePdfPackage(document, {
115
+ ...options,
116
+ fonts,
117
+ assets,
118
+ });
119
+ const directory = await mkdtemp(join(tmpdir(), "publisle-native-"));
120
+ try {
121
+ const input = join(directory, "input.json");
122
+ const output = join(directory, "manuscript.pdf");
123
+ await writeFile(input, JSON.stringify(source.input), { flag: "wx" });
124
+ let stdout: string;
125
+ try {
126
+ stdout = (
127
+ await execute(executable, [input, output], {
128
+ timeout,
129
+ signal: options.signal,
130
+ maxBuffer: 65536,
131
+ })
132
+ ).stdout;
133
+ } catch (cause) {
134
+ const stdout =
135
+ cause && typeof cause === "object" && "stdout" in cause
136
+ ? String(cause.stdout)
137
+ : "";
138
+ let message = "Native PDF compilation failed.";
139
+ try {
140
+ const error = JSON.parse(stdout) as {
141
+ diagnostics?: {
142
+ code: string;
143
+ message: string;
144
+ blockIndex?: number;
145
+ }[];
146
+ };
147
+ const detail = error.diagnostics
148
+ ?.map(
149
+ (entry) =>
150
+ `${entry.code}${entry.blockIndex === undefined ? "" : ` (${source.blockIds[entry.blockIndex] ?? "unknown block"})`}: ${entry.message}`,
151
+ )
152
+ .join("\n");
153
+ if (detail) message = detail;
154
+ } catch {
155
+ /* Preserve the bounded process failure when no structured result exists. */
156
+ }
157
+ throw new Error(message, { cause });
158
+ }
159
+ const report = JSON.parse(stdout) as {
160
+ ok?: boolean;
161
+ compilerVersion?: string;
162
+ pages?: number;
163
+ diagnostics?: ResearchLoss[];
164
+ timings?: Record<string, number>;
165
+ };
166
+ if (
167
+ report.ok !== true ||
168
+ typeof report.pages !== "number" ||
169
+ !Number.isSafeInteger(report.pages) ||
170
+ typeof report.compilerVersion !== "string"
171
+ )
172
+ throw new Error("Invalid native compiler report.");
173
+ const outputInfo = await stat(output);
174
+ if (outputInfo.size > 16 * 1024 * 1024)
175
+ throw new Error("Native PDF exceeds 16 MiB.");
176
+ const pdf = new Uint8Array(await readFile(output));
177
+ if (new TextDecoder().decode(pdf.subarray(0, 5)) !== "%PDF-")
178
+ throw new Error("Native compiler returned an invalid PDF.");
179
+ return {
180
+ pdf,
181
+ diagnostics: [...source.diagnostics, ...(report.diagnostics ?? [])],
182
+ timings: report.timings ?? {},
183
+ pages: report.pages,
184
+ compilerVersion: report.compilerVersion,
185
+ };
186
+ } finally {
187
+ await rm(directory, { recursive: true, force: true });
188
+ }
189
+ }