@publisle/research 0.0.0-stage → 0.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 (147) hide show
  1. package/LICENSE +21 -0
  2. package/NOTICE.md +31 -0
  3. package/README.md +14 -2
  4. package/compiler/Dockerfile +18 -0
  5. package/compiler/README.md +80 -0
  6. package/compiler/cacert.pem +2950 -0
  7. package/compiler/install-texlive.sh +38 -0
  8. package/compiler/release.json +13 -0
  9. package/dist/article.d.ts +10 -0
  10. package/dist/article.d.ts.map +1 -0
  11. package/dist/article.js +425 -0
  12. package/dist/article.js.map +1 -0
  13. package/dist/bibtex.d.ts +2 -0
  14. package/dist/bibtex.d.ts.map +1 -0
  15. package/dist/bibtex.js +2 -0
  16. package/dist/bibtex.js.map +1 -0
  17. package/dist/citeproc.d.ts +28 -0
  18. package/dist/csl.d.ts +35 -0
  19. package/dist/csl.d.ts.map +1 -0
  20. package/dist/csl.js +315 -0
  21. package/dist/csl.js.map +1 -0
  22. package/dist/index.d.ts +13 -0
  23. package/dist/index.d.ts.map +1 -0
  24. package/dist/index.js +12 -0
  25. package/dist/index.js.map +1 -0
  26. package/dist/jats.d.ts +14 -0
  27. package/dist/jats.d.ts.map +1 -0
  28. package/dist/jats.js +197 -0
  29. package/dist/jats.js.map +1 -0
  30. package/dist/latex.d.ts +5 -0
  31. package/dist/latex.d.ts.map +1 -0
  32. package/dist/latex.js +19 -0
  33. package/dist/latex.js.map +1 -0
  34. package/dist/locales.d.ts +2 -0
  35. package/dist/locales.d.ts.map +1 -0
  36. package/dist/locales.js +67 -0
  37. package/dist/locales.js.map +1 -0
  38. package/dist/node.d.ts +66 -0
  39. package/dist/node.d.ts.map +1 -0
  40. package/dist/node.js +542 -0
  41. package/dist/node.js.map +1 -0
  42. package/dist/package.d.ts +19 -0
  43. package/dist/package.d.ts.map +1 -0
  44. package/dist/package.js +48 -0
  45. package/dist/package.js.map +1 -0
  46. package/dist/pdf.d.ts +10 -0
  47. package/dist/pdf.d.ts.map +1 -0
  48. package/dist/pdf.js +207 -0
  49. package/dist/pdf.js.map +1 -0
  50. package/dist/portable-citations.d.ts +27 -0
  51. package/dist/portable-citations.d.ts.map +1 -0
  52. package/dist/portable-citations.js +185 -0
  53. package/dist/portable-citations.js.map +1 -0
  54. package/dist/profiles.d.ts +10 -0
  55. package/dist/profiles.d.ts.map +1 -0
  56. package/dist/profiles.js +166 -0
  57. package/dist/profiles.js.map +1 -0
  58. package/dist/remote.d.ts +24 -0
  59. package/dist/remote.d.ts.map +1 -0
  60. package/dist/remote.js +139 -0
  61. package/dist/remote.js.map +1 -0
  62. package/dist/resolve.d.ts +10 -0
  63. package/dist/resolve.d.ts.map +1 -0
  64. package/dist/resolve.js +62 -0
  65. package/dist/resolve.js.map +1 -0
  66. package/package.json +53 -3
  67. package/src/article.ts +478 -0
  68. package/src/bibtex.ts +1 -0
  69. package/src/citeproc.d.ts +28 -0
  70. package/src/csl.ts +367 -0
  71. package/src/index.ts +29 -0
  72. package/src/jats.ts +242 -0
  73. package/src/latex.ts +21 -0
  74. package/src/locales.ts +126 -0
  75. package/src/node.ts +752 -0
  76. package/src/package.ts +83 -0
  77. package/src/pdf.ts +225 -0
  78. package/src/portable-citations.ts +250 -0
  79. package/src/profiles.ts +188 -0
  80. package/src/remote.ts +163 -0
  81. package/src/resolve.ts +91 -0
  82. package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/BITS-embedded-index2.ent +308 -0
  83. package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/BITS-question-answer2.ent +531 -0
  84. package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/JATS-XHTMLtablesetup1-3.ent +629 -0
  85. package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/JATS-ali-namespace1-3.ent +293 -0
  86. package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/JATS-archivearticle1-3.dtd +1085 -0
  87. package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/JATS-archivecustom-classes1-3.ent +409 -0
  88. package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/JATS-archivecustom-mixes1-3.ent +601 -0
  89. package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/JATS-archivecustom-models1-3.ent +1613 -0
  90. package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/JATS-archivecustom-modules1-3.ent +404 -0
  91. package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/JATS-articlemeta1-3.ent +2552 -0
  92. package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/JATS-backmatter1-3.ent +540 -0
  93. package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/JATS-chars1-3.ent +664 -0
  94. package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/JATS-common-atts1-3.ent +360 -0
  95. package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/JATS-common1-3.ent +4659 -0
  96. package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/JATS-default-classes1-3.ent +1595 -0
  97. package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/JATS-default-mixes1-3.ent +630 -0
  98. package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/JATS-display1-3.ent +1299 -0
  99. package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/JATS-format1-3.ent +997 -0
  100. package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/JATS-funding1-3.ent +1100 -0
  101. package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/JATS-journalmeta1-3.ent +593 -0
  102. package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/JATS-link1-3.ent +604 -0
  103. package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/JATS-list1-3.ent +663 -0
  104. package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/JATS-math1-3.ent +563 -0
  105. package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/JATS-mathmlsetup1-3.ent +491 -0
  106. package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/JATS-modules1-3.ent +769 -0
  107. package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/JATS-nlmcitation1-3.ent +428 -0
  108. package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/JATS-notat1-3.ent +412 -0
  109. package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/JATS-para1-3.ent +648 -0
  110. package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/JATS-phrase1-3.ent +664 -0
  111. package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/JATS-references1-3.ent +1428 -0
  112. package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/JATS-related-object1-3.ent +435 -0
  113. package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/JATS-section1-3.ent +463 -0
  114. package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/JATS-xmlspecchars1-3.ent +528 -0
  115. package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/catalog-jats-v1-3-no-base.xml +999 -0
  116. package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/catalog-jats-v1-3-with-base.xml +986 -0
  117. package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/iso8879/isobox.ent +61 -0
  118. package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/iso8879/isocyr1.ent +88 -0
  119. package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/iso8879/isocyr2.ent +47 -0
  120. package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/iso8879/isodia.ent +35 -0
  121. package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/iso8879/isolat1.ent +83 -0
  122. package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/iso8879/isolat2.ent +142 -0
  123. package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/iso8879/isonum.ent +97 -0
  124. package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/iso8879/isopub.ent +105 -0
  125. package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/iso9573-13/isoamsa.ent +167 -0
  126. package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/iso9573-13/isoamsb.ent +143 -0
  127. package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/iso9573-13/isoamsc.ent +43 -0
  128. package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/iso9573-13/isoamsn.ent +114 -0
  129. package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/iso9573-13/isoamso.ent +73 -0
  130. package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/iso9573-13/isoamsr.ent +204 -0
  131. package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/iso9573-13/isogrk3.ent +64 -0
  132. package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/iso9573-13/isomfrk.ent +75 -0
  133. package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/iso9573-13/isomopf.ent +49 -0
  134. package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/iso9573-13/isomscr.ent +75 -0
  135. package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/iso9573-13/isotech.ent +182 -0
  136. package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/mathml/mmlalias.ent +564 -0
  137. package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/mathml/mmlextra.ent +122 -0
  138. package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/mathml2-qname-1.mod +286 -0
  139. package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/mathml2.dtd +2206 -0
  140. package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/xhtml-inlstyle-1.mod +34 -0
  141. package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/xhtml-table-1.mod +333 -0
  142. package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/xmlchars/isogrk1.ent +70 -0
  143. package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/xmlchars/isogrk2.ent +41 -0
  144. package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/xmlchars/isogrk4.ent +66 -0
  145. package/vendor/jats/PROVENANCE.json +6 -0
  146. package/vendor/locales/PROVENANCE.json +5 -0
  147. package/vendor/locales/README.md +23 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"locales.js","sourceRoot":"","sources":["../src/locales.ts"],"names":[],"mappings":"AAAA,sFAAsF;AACtF,MAAM,CAAC,MAAM,OAAO,GAAqC;IACvD,OAAO,EACL,818BAA818B;IACh28B,EAAE,EAAE,u+xBAAu+xB;IAC3+xB,QAAQ,EACN,mzhBAAmzhB;IACrzhB,OAAO,EACL,q41BAAq41B;IACv41B,QAAQ,EACN,k9hBAAk9hB;IACp9hB,OAAO,EACL,y01BAAy01B;IAC301B,OAAO,EACL,8kyBAA8kyB;IAChlyB,OAAO,EACL,gqyBAAgqyB;IAClqyB,OAAO,EACL,kjyBAAkjyB;IACpjyB,OAAO,EACL,0xzBAA0xzB;IAC5xzB,OAAO,EACL,6kzBAA6kzB;IAC/kzB,OAAO,EACL,svzBAAsvzB;IACxvzB,OAAO,EACL,y6yBAAy6yB;IAC36yB,OAAO,EACL,4shCAA4shC;IAC9shC,OAAO,EACL,4thCAA4thC;IAC9thC,OAAO,EACL,g8xBAAg8xB;IACl8xB,OAAO,EACL,y3xBAAy3xB;IAC33xB,OAAO,EACL,in0BAAin0B;IACnn0B,OAAO,EACL,q1xBAAq1xB;IACv1xB,EAAE,EAAE,s8yBAAs8yB;IAC18yB,OAAO,EACL,84xBAA84xB;IACh5xB,OAAO,EACL,w0yBAAw0yB;IAC10yB,OAAO,EACL,ss/BAAss/B;IACxs/B,OAAO,EACL,m+9BAAm+9B;IACr+9B,OAAO,EACL,yt0BAAyt0B;IAC3t0B,OAAO,EACL,o9xBAAo9xB;IACt9xB,OAAO,EACL,+n1BAA+n1B;IACjo1B,OAAO,EACL,s7xBAAs7xB;IACx7xB,OAAO,EACL,mqyBAAmqyB;IACrqyB,OAAO,EACL,+p2BAA+p2B;IACjq2B,OAAO,EACL,u2yBAAu2yB;IACz2yB,OAAO,EACL,+iyBAA+iyB;IACjjyB,OAAO,EACL,4y2BAA4y2B;IAC9y2B,OAAO,EACL,4ktBAA4ktB;IAC9ktB,OAAO,EACL,w/xBAAw/xB;IAC1/xB,OAAO,EACL,o0xBAAo0xB;IACt0xB,EAAE,EAAE,0jyBAA0jyB;IAC9jyB,QAAQ,EACN,us2BAAus2B;IACzs2B,OAAO,EACL,2t0BAA2t0B;IAC7t0B,OAAO,EACL,4n2BAA4n2B;IAC9n2B,OAAO,EACL,g7xBAAg7xB;IACl7xB,OAAO,EACL,03XAA03X;IAC53X,OAAO,EACL,qpsBAAqpsB;IACvpsB,OAAO,EACL,uh1BAAuh1B;IACzh1B,OAAO,EACL,yosBAAyosB;IAC3osB,OAAO,EACL,82mBAA82mB;IACh3mB,OAAO,EACL,o4yBAAo4yB;IACt4yB,OAAO,EACL,iz2BAAiz2B;IACnz2B,OAAO,EACL,y00BAAy00B;IAC300B,OAAO,EACL,8hzBAA8hzB;IAChizB,OAAO,EACL,uv2BAAuv2B;IACzv2B,OAAO,EACL,+yyBAA+yyB;IACjzyB,OAAO,EACL,29xBAA29xB;IAC79xB,YAAY,EACV,ylyBAAylyB;IAC3lyB,YAAY,EACV,kysBAAkysB;IACpysB,OAAO,EACL,gptBAAgptB;IAClptB,OAAO,EACL,w/xBAAw/xB;IAC1/xB,OAAO,EACL,spiCAAspiC;IACxpiC,OAAO,EACL,i1yBAAi1yB;IACn1yB,OAAO,EACL,4ozBAA4ozB;IAC9ozB,OAAO,EACL,4rzBAA4rzB;IAC9rzB,OAAO,EACL,oziBAAoziB;IACtziB,OAAO,EACL,izrBAAizrB;CACpzrB,CAAC"}
package/dist/node.d.ts ADDED
@@ -0,0 +1,66 @@
1
+ import type { ResearchLoss } from "./article.js";
2
+ import type { Block, BlockType, Document } from "@publisle/schema";
3
+ import { type LatexPackageOptions } from "./package.js";
4
+ import type { LatexPackage } from "./package.js";
5
+ export interface CompileLatexOptions {
6
+ /** Base directory for local manuscript assets. */
7
+ readonly sourceDirectory: string;
8
+ /** Total latexmk process timeout, default 120 seconds. */
9
+ readonly timeoutMs?: number;
10
+ readonly compiler?: "auto" | "native" | "container";
11
+ readonly containerImage?: string;
12
+ }
13
+ export interface CompiledLatexPackage {
14
+ readonly pdf: Uint8Array;
15
+ readonly files: Readonly<Record<string, string | Uint8Array>>;
16
+ readonly diagnostics: readonly ResearchLoss[];
17
+ }
18
+ /** Node-only local TeX compilation. Does not publish or overwrite output paths. */
19
+ export declare function compileLatexPackage(source: LatexPackage, options: CompileLatexOptions): Promise<CompiledLatexPackage>;
20
+ /** Atomically claims a new output directory; compilation must already have succeeded. */
21
+ export declare function writeLatexPackage(compiled: {
22
+ readonly files: CompiledLatexPackage["files"];
23
+ readonly pdf?: Uint8Array;
24
+ readonly diagnostics?: readonly ResearchLoss[];
25
+ }, outputDirectory: string): Promise<void>;
26
+ export interface CompilerStatus {
27
+ readonly available: boolean;
28
+ readonly missing: readonly string[];
29
+ readonly latexFormat?: string;
30
+ }
31
+ export declare function doctorCompiler(source: LatexPackage): Promise<CompilerStatus>;
32
+ export interface SetupCompilerOptions {
33
+ /** Published immutable registry reference, including @sha256: digest. */
34
+ readonly image?: string;
35
+ /** Build the bundled frozen recipe instead of pulling a published image. */
36
+ readonly localBuild?: boolean;
37
+ }
38
+ /** Explicit setup is the only operation that downloads or builds a compiler. */
39
+ export declare function setupCompiler(options?: SetupCompilerOptions): Promise<string>;
40
+ /** Unicode-safe default PDF API. Never falls back to the legacy text exporter. */
41
+ export declare function exportPdf(document: Document<Block<BlockType, unknown>>, options: LatexPackageOptions & CompileLatexOptions): Promise<CompiledLatexPackage>;
42
+ export { lookupDoi, fetchBibliography, importCslJson } from "./remote.js";
43
+ /** In-memory ZIP construction, followed by exclusive creation of the destination. */
44
+ export declare function writePackageArchive(compiled: Pick<CompiledLatexPackage, "files">, outputFile: string): Promise<void>;
45
+ /** Collect and validate an article/assets JATS package without network access. */
46
+ export declare function collectJatsPackage(source: import("./jats.js").JatsPackage, sourceDirectory: string): Promise<{
47
+ files: Readonly<Record<string, string | Uint8Array>>;
48
+ diagnostics: readonly ResearchLoss[];
49
+ }>;
50
+ export declare function doctorCompilers(source: LatexPackage, options?: {
51
+ readonly veraPdf?: boolean;
52
+ }): Promise<{
53
+ native: CompilerStatus;
54
+ container: {
55
+ available: boolean;
56
+ runtimeAvailable: boolean;
57
+ image?: string;
58
+ publishedImage?: string;
59
+ platform?: string;
60
+ };
61
+ veraPdf?: {
62
+ available: boolean;
63
+ version?: string;
64
+ };
65
+ }>;
66
+ //# sourceMappingURL=node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"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"}
package/dist/node.js ADDED
@@ -0,0 +1,542 @@
1
+ import { createHash } from "node:crypto";
2
+ import { randomUUID } from "node:crypto";
3
+ import { execFile, spawn } from "node:child_process";
4
+ import { constants } from "node:fs";
5
+ import { copyFile, mkdir, mkdtemp, readFile, realpath, readdir, rm, writeFile, } from "node:fs/promises";
6
+ import { homedir, tmpdir } from "node:os";
7
+ import { dirname, isAbsolute, join, relative, resolve } from "node:path";
8
+ import { promisify } from "node:util";
9
+ import { createLatexPackage } from "./package.js";
10
+ const execute = promisify(execFile);
11
+ function packagePath(directory, name) {
12
+ if (isAbsolute(name) || name.split(/[\\/]/u).includes(".."))
13
+ throw new Error(`Unsafe package path: ${name}`);
14
+ return join(directory, name);
15
+ }
16
+ // Killing the process group also terminates TeX/BibTeX children on POSIX.
17
+ function runLatexmk(args, directory, timeout, backend) {
18
+ return new Promise((resolveRun, rejectRun) => {
19
+ const child = spawn(backend.command, [...backend.prefix, ...args], {
20
+ cwd: directory,
21
+ detached: process.platform !== "win32",
22
+ stdio: ["ignore", "pipe", "pipe"],
23
+ env: {
24
+ ...process.env,
25
+ TEXMFOUTPUT: directory,
26
+ openin_any: "p",
27
+ openout_any: "p",
28
+ },
29
+ });
30
+ const chunks = [];
31
+ let bytes = 0;
32
+ let failure;
33
+ const stop = (error) => {
34
+ failure ??= error;
35
+ try {
36
+ if (process.platform !== "win32" && child.pid !== undefined)
37
+ process.kill(-child.pid, "SIGKILL");
38
+ else
39
+ child.kill("SIGKILL");
40
+ }
41
+ catch {
42
+ child.kill("SIGKILL");
43
+ }
44
+ };
45
+ const timer = setTimeout(() => {
46
+ stop(new Error(`LaTeX compilation timed out after ${String(timeout)} ms.`));
47
+ }, timeout);
48
+ const collect = (chunk) => {
49
+ bytes += chunk.length;
50
+ if (bytes > 4 * 1024 * 1024)
51
+ stop(new Error("LaTeX compilation exceeded the 4 MiB output limit."));
52
+ else
53
+ chunks.push(chunk);
54
+ };
55
+ child.stdout.on("data", collect);
56
+ child.stderr.on("data", collect);
57
+ child.on("error", (error) => {
58
+ failure ??= error;
59
+ });
60
+ child.on("close", (code) => {
61
+ clearTimeout(timer);
62
+ const output = Buffer.concat(chunks).toString("utf8");
63
+ if (failure)
64
+ rejectRun(failure);
65
+ else if (code !== 0)
66
+ rejectRun(new Error(`latexmk exited with code ${String(code)}.\n${output.slice(-6000)}`));
67
+ else
68
+ resolveRun(output);
69
+ });
70
+ });
71
+ }
72
+ /** Node-only local TeX compilation. Does not publish or overwrite output paths. */
73
+ export async function compileLatexPackage(source, options) {
74
+ const timeout = options.timeoutMs ?? 120_000;
75
+ if (!Number.isSafeInteger(timeout) || timeout <= 0)
76
+ throw new Error("Compilation timeout must be a positive integer.");
77
+ const backend = await selectCompiler(source, options);
78
+ const directory = await mkdtemp(join(tmpdir(), "publisle-tex-"));
79
+ const files = {
80
+ ...source.files,
81
+ ...source.resources,
82
+ };
83
+ try {
84
+ for (const [name, value] of Object.entries({
85
+ ...source.files,
86
+ ...source.resources,
87
+ })) {
88
+ const path = packagePath(directory, name);
89
+ await mkdir(dirname(path), { recursive: true });
90
+ await writeFile(path, value, { flag: "wx" });
91
+ }
92
+ const base = await realpath(options.sourceDirectory);
93
+ for (const asset of source.assets) {
94
+ const path = await realpath(resolve(base, asset.source));
95
+ const local = relative(base, path);
96
+ if (isAbsolute(local) ||
97
+ local === ".." ||
98
+ local.startsWith(`..${process.platform === "win32" ? "\\" : "/"}`))
99
+ throw new Error(`Figure asset escapes manuscript directory: ${asset.source}`);
100
+ const destination = packagePath(directory, asset.destination);
101
+ await mkdir(dirname(destination), { recursive: true });
102
+ await copyFile(path, destination, constants.COPYFILE_EXCL);
103
+ files[asset.destination] = new Uint8Array(await readFile(destination));
104
+ }
105
+ let stdout = "";
106
+ const containerName = `publisle-${randomUUID()}`;
107
+ try {
108
+ stdout = await runLatexmk([
109
+ source.engine === "pdflatex" ? "-pdf" : "-lualatex",
110
+ "-norc",
111
+ "-interaction=nonstopmode",
112
+ "-halt-on-error",
113
+ "-file-line-error",
114
+ "-no-shell-escape",
115
+ "manuscript.tex",
116
+ ], directory, timeout, backend.kind === "native"
117
+ ? { command: "latexmk", prefix: [] }
118
+ : {
119
+ command: "docker",
120
+ prefix: [
121
+ "run",
122
+ "--rm",
123
+ "--pull=never",
124
+ "--name",
125
+ containerName,
126
+ "--read-only",
127
+ "--tmpfs",
128
+ "/tmp:rw,nosuid,size=512m",
129
+ "--network=none",
130
+ "--cap-drop=ALL",
131
+ "--security-opt=no-new-privileges",
132
+ "--user",
133
+ backend.user ?? "1000:1000",
134
+ "--mount",
135
+ `type=bind,source=${directory},target=/work`,
136
+ "--workdir",
137
+ "/work",
138
+ "--env",
139
+ "HOME=/tmp",
140
+ "--env",
141
+ "TEXMFVAR=/tmp/texmf-var",
142
+ "--env",
143
+ // LuaTeX 2025 reads Unicode data via absolute paths. The
144
+ // container exposes only the compiler and the package mount.
145
+ "openin_any=r",
146
+ "--env",
147
+ "openout_any=p",
148
+ backend.image ?? "",
149
+ "latexmk",
150
+ ],
151
+ });
152
+ }
153
+ catch (error) {
154
+ const log = await readFile(join(directory, "manuscript.log"), "utf8").catch(() => "");
155
+ throw new Error(`Local LaTeX compilation failed (requires latexmk, ${source.engine}, template dependencies): ${error instanceof Error ? error.message : String(error)}\n${log.slice(-6000)}`, { cause: error });
156
+ }
157
+ finally {
158
+ if (backend.kind === "container")
159
+ await execute("docker", ["rm", "--force", containerName], {
160
+ timeout: 10_000,
161
+ }).catch(() => undefined);
162
+ }
163
+ const log = await readFile(join(directory, "manuscript.log"), "utf8");
164
+ if (/Missing character:|undefined references|Citation .* undefined|Reference .* undefined/iu.test(log))
165
+ throw new Error(`LaTeX output has missing glyphs or unresolved references:\n${log
166
+ .split("\n")
167
+ .filter((line) => /Missing character:|undefined/iu.test(line))
168
+ .join("\n")}`);
169
+ const diagnostics = [...source.diagnostics];
170
+ for (const line of log.split("\n"))
171
+ if (/Overfull \\[hv]box/u.test(line))
172
+ diagnostics.push({ code: "latex-layout-overflow", message: line });
173
+ const pdf = new Uint8Array(await readFile(join(directory, "manuscript.pdf")));
174
+ files["manuscript.pdf"] = pdf;
175
+ files["manuscript.bbl"] = await readFile(join(directory, "manuscript.bbl"), "utf8").catch(() => "");
176
+ files["manuscript.log"] = log;
177
+ files["build.log"] = stdout;
178
+ const engineVersion = backend.kind === "native"
179
+ ? (await execute(source.engine, ["--version"], { timeout: 5000 })).stdout.split("\n")[0]
180
+ : backend.image;
181
+ const fontVersions = {};
182
+ if (backend.kind === "native")
183
+ for (const [script, font] of Object.entries(source.fonts))
184
+ fontVersions[script] = (await execute("fc-match", ["-f", "%{family}: %{fontversion}\n", font], { timeout: 5000 })).stdout.trim();
185
+ const dependencyDigests = {};
186
+ const dependencyVersions = {};
187
+ if (backend.kind === "native")
188
+ for (const name of source.requirements) {
189
+ const provided = source.resources?.[name] ?? source.files[name];
190
+ const bytes = provided === undefined
191
+ ? await readFile((await execute("kpsewhich", [name], { timeout: 5000 })).stdout.trim())
192
+ : typeof provided === "string"
193
+ ? Buffer.from(provided)
194
+ : provided;
195
+ dependencyDigests[name] =
196
+ "sha256:" + createHash("sha256").update(bytes).digest("hex");
197
+ const version = /\\Provides(?:Package|Class)\{[^}]+\}\s*\[([^\]]+)\]/u.exec(new TextDecoder().decode(bytes))?.[1];
198
+ if (version)
199
+ dependencyVersions[name] = version;
200
+ }
201
+ files["manifest.json"] =
202
+ JSON.stringify({
203
+ template: source.template,
204
+ pdfStandard: source.pdfStandard,
205
+ pdfUaValidation: source.pdfStandard ? "not-run" : "unavailable",
206
+ engine: source.engine,
207
+ engineVersion,
208
+ compiler: backend.kind,
209
+ containerImage: backend.image,
210
+ templateVersion: source.templateVersion,
211
+ requirements: source.requirements,
212
+ dependencyDigests,
213
+ dependencyVersions,
214
+ fonts: source.fonts,
215
+ fontVersions,
216
+ diagnostics,
217
+ files: [...Object.keys(files), "manifest.json"].sort(),
218
+ }, null, 2) + "\n";
219
+ return { pdf, files, diagnostics };
220
+ }
221
+ finally {
222
+ await rm(directory, { recursive: true, force: true });
223
+ }
224
+ }
225
+ /** Atomically claims a new output directory; compilation must already have succeeded. */
226
+ export async function writeLatexPackage(compiled, outputDirectory) {
227
+ await mkdir(outputDirectory);
228
+ try {
229
+ for (const [name, value] of Object.entries(compiled.files)) {
230
+ const path = packagePath(outputDirectory, name);
231
+ await mkdir(dirname(path), { recursive: true });
232
+ await writeFile(path, value, { flag: "wx" });
233
+ }
234
+ }
235
+ catch (error) {
236
+ await rm(outputDirectory, { recursive: true, force: true });
237
+ throw error;
238
+ }
239
+ }
240
+ const compilerLock = join(homedir(), ".cache", "publisle", "compiler.json");
241
+ async function taggingFormat(image) {
242
+ const directory = await mkdtemp(join(tmpdir(), "publisle-format-"));
243
+ const containerName = `publisle-format-${randomUUID()}`;
244
+ try {
245
+ const args = [
246
+ "-interaction=nonstopmode",
247
+ "-no-shell-escape",
248
+ "-draftmode",
249
+ "\\typeout{PUBLISLE-FORMAT:\\fmtversion}\\stop",
250
+ ];
251
+ const output = await execute(image ? "docker" : "lualatex", image
252
+ ? [
253
+ "run",
254
+ "--rm",
255
+ "--pull=never",
256
+ "--name",
257
+ containerName,
258
+ "--network=none",
259
+ "--cap-drop=ALL",
260
+ "--security-opt=no-new-privileges",
261
+ "--read-only",
262
+ "--tmpfs",
263
+ "/tmp:rw,nosuid,size=128m",
264
+ "--workdir",
265
+ "/tmp",
266
+ "--env",
267
+ "HOME=/tmp",
268
+ "--env",
269
+ "TEXMFVAR=/tmp/texmf-var",
270
+ "--env",
271
+ "openin_any=r",
272
+ image,
273
+ "lualatex",
274
+ ...args,
275
+ ]
276
+ : args, {
277
+ cwd: directory,
278
+ env: {
279
+ ...process.env,
280
+ TEXMFVAR: directory,
281
+ TEXMFOUTPUT: directory,
282
+ openin_any: "p",
283
+ openout_any: "p",
284
+ },
285
+ timeout: 15_000,
286
+ maxBuffer: 1024 * 1024,
287
+ });
288
+ return /PUBLISLE-FORMAT:(\d{4}-\d{2}-\d{2})/u.exec(output.stdout)?.[1];
289
+ }
290
+ finally {
291
+ if (image)
292
+ await execute("docker", ["rm", "--force", containerName], {
293
+ timeout: 10_000,
294
+ }).catch(() => undefined);
295
+ await rm(directory, { recursive: true, force: true });
296
+ }
297
+ }
298
+ export async function doctorCompiler(source) {
299
+ const missing = [];
300
+ let latexFormat;
301
+ if (source.engine === "lualatex") {
302
+ latexFormat = await taggingFormat().catch(() => undefined);
303
+ if (!latexFormat)
304
+ missing.push("LuaLaTeX initialization under restricted native input");
305
+ else if (source.pdfStandard && latexFormat < "2025-11-01")
306
+ missing.push("LaTeX format >= 2025-11-01 (PDF/UA tagging)");
307
+ }
308
+ for (const command of ["latexmk", source.engine, "bibtex", "kpsewhich"])
309
+ try {
310
+ await execute(command, ["--version"], { timeout: 5000 });
311
+ }
312
+ catch {
313
+ missing.push(command);
314
+ }
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 {
324
+ missing.push(dependency);
325
+ }
326
+ }
327
+ for (const font of Object.values(source.fonts))
328
+ try {
329
+ const matched = (await execute("fc-match", ["-f", "%{family}", font], { timeout: 5000 })).stdout;
330
+ if (!matched.toLowerCase().includes(font.toLowerCase()))
331
+ missing.push(`font:${font}`);
332
+ }
333
+ catch {
334
+ missing.push(`font:${font}`);
335
+ }
336
+ return {
337
+ available: missing.length === 0,
338
+ missing,
339
+ ...(latexFormat ? { latexFormat } : {}),
340
+ };
341
+ }
342
+ async function selectCompiler(source, options) {
343
+ const mode = options.compiler ?? "auto";
344
+ const native = mode === "container" ? undefined : await doctorCompiler(source);
345
+ if (native?.available)
346
+ return { kind: "native" };
347
+ if (mode === "native")
348
+ throw new Error(`Native compiler is incomplete: ${native?.missing.join(", ") ?? "unknown"}`);
349
+ let image = options.containerImage;
350
+ if (!image)
351
+ try {
352
+ const lock = JSON.parse(await readFile(compilerLock, "utf8"));
353
+ image = lock.image;
354
+ }
355
+ catch {
356
+ /* No installed compiler. */
357
+ }
358
+ if (image && /^sha256:[a-f0-9]{64}$/u.test(image))
359
+ try {
360
+ await execute("docker", ["image", "inspect", image], { timeout: 5000 });
361
+ if (source.pdfStandard) {
362
+ const format = await taggingFormat(image);
363
+ if (!format || format < "2025-11-01")
364
+ throw new Error("Installed compiler predates PDF/UA tagging; run publisle setup compiler.");
365
+ }
366
+ const security = (await execute("docker", ["info", "--format", "{{json .SecurityOptions}}"], { timeout: 5000 })).stdout;
367
+ return {
368
+ kind: "container",
369
+ image,
370
+ user: security.includes("rootless")
371
+ ? "0:0"
372
+ : `${String(process.getuid?.() ?? 1000)}:${String(process.getgid?.() ?? 1000)}`,
373
+ };
374
+ }
375
+ catch {
376
+ /* Never pull implicitly. */
377
+ }
378
+ throw new Error(`No complete compiler is installed${native ? ` (missing: ${native.missing.join(", ")})` : ""}. Run publisle setup compiler explicitly, or install the native dependencies.`);
379
+ }
380
+ /** Explicit setup is the only operation that downloads or builds a compiler. */
381
+ export async function setupCompiler(options = {}) {
382
+ if (options.localBuild && options.image)
383
+ throw new Error("Choose a published compiler image or a local build.");
384
+ const release = JSON.parse(await readFile(new URL("../compiler/release.json", import.meta.url), "utf8"));
385
+ const publishedImage = options.localBuild
386
+ ? undefined
387
+ : (options.image ?? release.publishedImage ?? undefined);
388
+ if (publishedImage &&
389
+ !/^[a-z0-9][a-z0-9.:/-]*@sha256:[a-f0-9]{64}$/u.test(publishedImage))
390
+ throw new Error("Compiler image must be an immutable registry@sha256: reference.");
391
+ const tag = `publisle-compiler:${String(release.recipeVersion)}`;
392
+ if (publishedImage) {
393
+ try {
394
+ await execute("docker", ["pull", publishedImage], {
395
+ timeout: 1_800_000,
396
+ maxBuffer: 8 * 1024 * 1024,
397
+ });
398
+ }
399
+ catch (error) {
400
+ throw new Error("Could not pull the pinned compiler. Retry setup, or use publisle setup compiler --build for the bundled local recipe.", { cause: error });
401
+ }
402
+ }
403
+ else {
404
+ await execute("docker", [
405
+ "build",
406
+ "--tag",
407
+ tag,
408
+ "--file",
409
+ new URL("../compiler/Dockerfile", import.meta.url).pathname,
410
+ new URL("../compiler/", import.meta.url).pathname,
411
+ ], { timeout: 1_800_000, maxBuffer: 8 * 1024 * 1024 });
412
+ }
413
+ const inspected = JSON.parse((await execute("docker", ["image", "inspect", publishedImage ?? tag], {
414
+ timeout: 5000,
415
+ })).stdout);
416
+ const details = inspected[0];
417
+ if (!details || !/^sha256:[a-f0-9]{64}$/u.test(details.Id))
418
+ throw new Error("Compiler did not return a pinned image digest.");
419
+ if (publishedImage && !details.RepoDigests?.includes(publishedImage))
420
+ throw new Error("Pulled compiler does not match the requested registry digest.");
421
+ if (details.Os !== "linux" ||
422
+ !["amd64", "arm64"].includes(details.Architecture))
423
+ throw new Error("Compiler must be a linux/amd64 or linux/arm64 image.");
424
+ await mkdir(dirname(compilerLock), { recursive: true });
425
+ await writeFile(compilerLock, JSON.stringify({
426
+ image: details.Id,
427
+ recipeVersion: release.recipeVersion,
428
+ platform: `${details.Os}/${details.Architecture}`,
429
+ ...(publishedImage ? { publishedImage } : {}),
430
+ }) + "\n");
431
+ return details.Id;
432
+ }
433
+ /** Unicode-safe default PDF API. Never falls back to the legacy text exporter. */
434
+ export async function exportPdf(document, options) {
435
+ return compileLatexPackage(createLatexPackage(document, options), options);
436
+ }
437
+ export { lookupDoi, fetchBibliography, importCslJson } from "./remote.js";
438
+ /** In-memory ZIP construction, followed by exclusive creation of the destination. */
439
+ export async function writePackageArchive(compiled, outputFile) {
440
+ const { zipSync, strToU8 } = await import("fflate");
441
+ const entries = {};
442
+ for (const [name, value] of Object.entries(compiled.files)) {
443
+ packagePath("/", name);
444
+ entries[name] = typeof value === "string" ? strToU8(value) : value;
445
+ }
446
+ await writeFile(outputFile, zipSync(entries), { flag: "wx" });
447
+ }
448
+ /** Collect and validate an article/assets JATS package without network access. */
449
+ export async function collectJatsPackage(source, sourceDirectory) {
450
+ const directory = await mkdtemp(join(tmpdir(), "publisle-jats-"));
451
+ const files = { ...source.files };
452
+ try {
453
+ const base = await realpath(sourceDirectory);
454
+ for (const asset of source.assets) {
455
+ const path = await realpath(resolve(base, asset.source));
456
+ const local = relative(base, path);
457
+ if (isAbsolute(local) ||
458
+ local === ".." ||
459
+ local.startsWith("../") ||
460
+ local.startsWith("..\\"))
461
+ throw new Error("JATS asset escapes manuscript directory.");
462
+ files[asset.destination] = new Uint8Array(await readFile(path));
463
+ }
464
+ for (const [name, value] of Object.entries(files)) {
465
+ const path = packagePath(directory, name);
466
+ await mkdir(dirname(path), { recursive: true });
467
+ await writeFile(path, value, { flag: "wx" });
468
+ }
469
+ const dtd = new URL("../vendor/jats/JATS-Archiving-1-3-MathML2-DTD/JATS-archivearticle1-3.dtd", import.meta.url).pathname;
470
+ await execute("xmllint", ["--nonet", "--noout", "--dtdvalid", dtd, join(directory, "article.xml")], { timeout: 10_000, maxBuffer: 1024 * 1024 });
471
+ const schemaDirectory = dirname(dtd);
472
+ for (const name of await readdir(schemaDirectory)) {
473
+ const path = join(schemaDirectory, name);
474
+ if (/\.(?:dtd|ent|mod)$/u.test(name))
475
+ files[`schema/${name}`] = new Uint8Array(await readFile(path));
476
+ }
477
+ files["BUILD.md"] =
478
+ "# Validate offline\n\nxmllint --nonet --noout --dtdvalid schema/JATS-archivearticle1-3.dtd article.xml\n";
479
+ files["manifest.json"] =
480
+ JSON.stringify({
481
+ format: "jats",
482
+ version: "1.3",
483
+ validation: "offline-dtd",
484
+ files: Object.keys(files).sort(),
485
+ diagnostics: source.diagnostics,
486
+ }, null, 2) + "\n";
487
+ return { files, diagnostics: source.diagnostics };
488
+ }
489
+ finally {
490
+ await rm(directory, { recursive: true, force: true });
491
+ }
492
+ }
493
+ export async function doctorCompilers(source, options = {}) {
494
+ const native = await doctorCompiler(source);
495
+ const runtimeAvailable = await execute("docker", ["info"], { timeout: 5000 })
496
+ .then(() => true)
497
+ .catch(() => false);
498
+ const installed = await readFile(compilerLock, "utf8")
499
+ .then((value) => JSON.parse(value))
500
+ .catch(() => ({}));
501
+ const imageStatus = {
502
+ runtimeAvailable,
503
+ ...(installed.image ? { image: installed.image } : {}),
504
+ ...(installed.publishedImage
505
+ ? { publishedImage: installed.publishedImage }
506
+ : {}),
507
+ ...(installed.platform ? { platform: installed.platform } : {}),
508
+ };
509
+ const validator = options.veraPdf
510
+ ? {
511
+ veraPdf: await execute("verapdf", ["--version"], { timeout: 10_000 })
512
+ .then(({ stdout }) => ({
513
+ available: true,
514
+ version: stdout.split("\n")[0] ?? "",
515
+ }))
516
+ .catch(() => ({ available: false })),
517
+ }
518
+ : {};
519
+ try {
520
+ const backend = await selectCompiler(source, {
521
+ sourceDirectory: ".",
522
+ compiler: "container",
523
+ });
524
+ return {
525
+ native,
526
+ ...validator,
527
+ container: {
528
+ ...imageStatus,
529
+ available: true,
530
+ ...(backend.image ? { image: backend.image } : {}),
531
+ },
532
+ };
533
+ }
534
+ catch {
535
+ return {
536
+ native,
537
+ container: { ...imageStatus, available: false },
538
+ ...validator,
539
+ };
540
+ }
541
+ }
542
+ //# sourceMappingURL=node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.js","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"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"}