@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/README.md +1 -1
- package/dist/article.d.ts.map +1 -1
- package/dist/article.js +14 -10
- package/dist/article.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/native-node.d.ts +24 -0
- package/dist/native-node.d.ts.map +1 -0
- package/dist/native-node.js +121 -0
- package/dist/native-node.js.map +1 -0
- package/dist/native.d.ts +48 -0
- package/dist/native.d.ts.map +1 -0
- package/dist/native.js +121 -0
- package/dist/native.js.map +1 -0
- package/dist/node.d.ts +6 -1
- package/dist/node.d.ts.map +1 -1
- package/dist/node.js +100 -31
- package/dist/node.js.map +1 -1
- package/package.json +15 -6
- package/src/article.ts +13 -8
- package/src/index.ts +11 -0
- package/src/native-node.ts +189 -0
- package/src/native.ts +179 -0
- package/src/node.ts +204 -94
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
|
-
|
|
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
|
-
|
|
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
|
-
?
|
|
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
|
-
|
|
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
|
-
|
|
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(
|
|
234
|
+
? await readFile(path ?? "")
|
|
192
235
|
: typeof provided === "string"
|
|
193
236
|
? Buffer.from(provided)
|
|
194
237
|
: provided;
|
|
195
|
-
|
|
196
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
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], {
|
|
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
|
-
|
|
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.
|
|
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.
|
|
29
|
-
"@publisle/
|
|
30
|
-
"@publisle/
|
|
31
|
-
"@publisle/template-article": "^0.1.
|
|
32
|
-
"@publisle/
|
|
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
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
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
|
+
}
|