@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
package/dist/csl.js ADDED
@@ -0,0 +1,315 @@
1
+ import CSL from "citeproc";
2
+ import { locales } from "./locales.js";
3
+ import { toCslJson } from "./bibtex.js";
4
+ const NUMERIC_STYLE = `<?xml version="1.0"?>
5
+ <style class="in-text" version="1.0">
6
+ <info><title>Publisle numeric</title><category citation-format="numeric"/></info>
7
+ <citation collapse="citation-number">
8
+ <sort><key variable="citation-number"/></sort>
9
+ <layout prefix="[" suffix="]" delimiter=", ">
10
+ <text variable="citation-number"/><group prefix=", " delimiter=" "><label variable="locator" form="short"/><text variable="locator"/></group>
11
+ </layout>
12
+ </citation>
13
+ <bibliography>
14
+ <layout>
15
+ <text variable="citation-number" suffix=". "/>
16
+ <names variable="author"><name form="long" and="text" delimiter=", "/><et-al term="et-al"/></names>
17
+ <text variable="title" prefix=", "/>
18
+ <text variable="container-title" prefix=", "/>
19
+ <text variable="volume" prefix=" "/>
20
+ <text variable="issue" prefix="(" suffix=")"/>
21
+ <text variable="page" prefix=": "/>
22
+ <date variable="issued" prefix=" (" suffix=")"><date-part name="year"/></date>
23
+ <text variable="DOI" prefix=". https://doi.org/"/>
24
+ </layout>
25
+ </bibliography>
26
+ </style>`;
27
+ const AUTHOR_DATE_STYLE = `<?xml version="1.0"?>
28
+ <style class="in-text" version="1.0">
29
+ <info><title>Publisle author-date</title><category citation-format="author-date"/></info>
30
+ <macro name="author-short">
31
+ <names variable="author">
32
+ <name form="short" and="symbol" delimiter=", "/>
33
+ <et-al term="et-al"/>
34
+ </names>
35
+ </macro>
36
+ <citation et-al-min="3" et-al-use-first="1" disambiguate-add-year-suffix="true" disambiguate-add-givenname="true">
37
+ <layout prefix="(" suffix=")" delimiter="; ">
38
+ <group delimiter=", ">
39
+ <text macro="author-short"/>
40
+ <date variable="issued"><date-part name="year"/></date>
41
+ </group>
42
+ </layout>
43
+ </citation>
44
+ <bibliography>
45
+ <sort><key variable="author"/><key variable="issued"/></sort>
46
+ <layout suffix=".">
47
+ <names variable="author"><name and="text" name-as-sort-order="first" delimiter=", "/></names>
48
+ <date variable="issued" prefix=" (" suffix=")"><date-part name="year"/></date>
49
+ <text variable="title" prefix=". "/>
50
+ <text variable="container-title" prefix=". "/>
51
+ </layout>
52
+ </bibliography>
53
+ </style>`;
54
+ function decodeXml(value) {
55
+ return value.replace(/&(?:amp|lt|gt|quot|apos|#\d+|#x[a-f0-9]+);/giu, (entity) => {
56
+ const named = {
57
+ "&amp;": "&",
58
+ "&lt;": "<",
59
+ "&gt;": ">",
60
+ "&quot;": '"',
61
+ "&apos;": "'",
62
+ };
63
+ if (named[entity])
64
+ return named[entity];
65
+ return String.fromCodePoint(entity.startsWith("&#x")
66
+ ? parseInt(entity.slice(3, -1), 16)
67
+ : parseInt(entity.slice(2, -1), 10));
68
+ });
69
+ }
70
+ function parseXml(source) {
71
+ let index = 0;
72
+ const skip = () => {
73
+ while (index < source.length) {
74
+ if (source.startsWith("<!--", index)) {
75
+ const end = source.indexOf("-->", index);
76
+ if (end === -1)
77
+ throw new Error("CSL comment is not closed.");
78
+ index = end + 3;
79
+ continue;
80
+ }
81
+ if (source.startsWith("<?", index) || source.startsWith("<!", index)) {
82
+ const end = source.indexOf(">", index);
83
+ if (end === -1)
84
+ throw new Error("CSL declaration is not closed.");
85
+ index = end + 1;
86
+ continue;
87
+ }
88
+ if (/\s/u.test(source[index] ?? "")) {
89
+ index += 1;
90
+ continue;
91
+ }
92
+ break;
93
+ }
94
+ };
95
+ const readAttributes = () => {
96
+ const attributes = {};
97
+ while (index < source.length &&
98
+ source[index] !== ">" &&
99
+ source[index] !== "/") {
100
+ if (/\s/u.test(source[index] ?? "")) {
101
+ index += 1;
102
+ continue;
103
+ }
104
+ const nameEnd = source.slice(index).search(/[\s=/>]/u);
105
+ if (nameEnd <= 0)
106
+ throw new Error("CSL attribute name is missing.");
107
+ const name = source.slice(index, index + nameEnd);
108
+ index += nameEnd;
109
+ while (/\s/u.test(source[index] ?? ""))
110
+ index += 1;
111
+ if (source[index] !== "=")
112
+ throw new Error(`CSL attribute ${name} is missing a value.`);
113
+ index += 1;
114
+ while (/\s/u.test(source[index] ?? ""))
115
+ index += 1;
116
+ const quote = source[index];
117
+ if (quote !== '"' && quote !== "'")
118
+ throw new Error(`CSL attribute ${name} is not quoted.`);
119
+ const valueEnd = source.indexOf(quote, index + 1);
120
+ if (valueEnd === -1)
121
+ throw new Error(`CSL attribute ${name} is not closed.`);
122
+ attributes[name] = decodeXml(source.slice(index + 1, valueEnd));
123
+ index = valueEnd + 1;
124
+ }
125
+ return attributes;
126
+ };
127
+ const readNodes = (until) => {
128
+ const children = [];
129
+ while (index < source.length && !source.startsWith(until, index)) {
130
+ if (source.startsWith("<!--", index)) {
131
+ const end = source.indexOf("-->", index);
132
+ if (end < 0)
133
+ throw new Error("Unclosed CSL comment");
134
+ index = end + 3;
135
+ continue;
136
+ }
137
+ if (source[index] === "<")
138
+ children.push(readElement());
139
+ else {
140
+ const next = source.indexOf("<", index);
141
+ const value = source.slice(index, next === -1 ? source.length : next);
142
+ index = next === -1 ? source.length : next;
143
+ if (value.trim().length > 0)
144
+ children.push({ type: "text", value: decodeXml(value.trim()) });
145
+ }
146
+ }
147
+ return children;
148
+ };
149
+ const readElement = () => {
150
+ if (source[index] !== "<")
151
+ throw new Error("Expected a CSL element.");
152
+ index += 1;
153
+ const nameEnd = source.slice(index).search(/[\s/>]/u);
154
+ if (nameEnd <= 0)
155
+ throw new Error("CSL element name is missing.");
156
+ const name = source.slice(index, index + nameEnd);
157
+ index += nameEnd;
158
+ const attributes = readAttributes();
159
+ if (source.startsWith("/>", index)) {
160
+ index += 2;
161
+ return { type: "element", name, attributes, children: [] };
162
+ }
163
+ if (source[index] !== ">")
164
+ throw new Error(`CSL element ${name} is not closed.`);
165
+ index += 1;
166
+ const children = readNodes(`</${name}>`);
167
+ if (!source.startsWith(`</${name}>`, index))
168
+ throw new Error(`CSL element ${name} has no end tag.`);
169
+ index += name.length + 3;
170
+ return { type: "element", name, attributes, children };
171
+ };
172
+ skip();
173
+ const root = readElement();
174
+ skip();
175
+ if (index < source.length)
176
+ throw new Error("CSL style has trailing content.");
177
+ if (root.name !== "style")
178
+ throw new Error("CSL root element must be style.");
179
+ return root;
180
+ }
181
+ export function builtinCsl(name) {
182
+ return parseXml(name === "numeric" ? NUMERIC_STYLE : AUTHOR_DATE_STYLE);
183
+ }
184
+ export function parseCslStyle(xml) {
185
+ return parseXml(xml);
186
+ }
187
+ function descendants(node, name) {
188
+ const found = [];
189
+ for (const child of node.children) {
190
+ if (child.type !== "element")
191
+ continue;
192
+ if (child.name === name)
193
+ found.push(child);
194
+ found.push(...descendants(child, name));
195
+ }
196
+ return found;
197
+ }
198
+ function attr(node, name) {
199
+ return node.attributes[name];
200
+ }
201
+ export function citationForm(style) {
202
+ if (style.attributes["class"] === "note")
203
+ return "note";
204
+ const category = descendants(style, "category").find((item) => attr(item, "citation-format"));
205
+ const format = category ? attr(category, "citation-format") : undefined;
206
+ if (format === "numeric")
207
+ return "numeric";
208
+ if (format === "author-date")
209
+ return "author-date";
210
+ return style.attributes["class"] === "in-text"
211
+ ? descendants(style, "text").some((node) => node.attributes["variable"] === "citation-number")
212
+ ? "numeric"
213
+ : "author-date"
214
+ : "note";
215
+ }
216
+ function xml(node) {
217
+ const escape = (value) => value
218
+ .replace(/&/gu, "&amp;")
219
+ .replace(/"/gu, "&quot;")
220
+ .replace(/</gu, "&lt;");
221
+ if (node.type === "text")
222
+ return escape(node.value);
223
+ return `<${node.name}${Object.entries(node.attributes)
224
+ .map(([key, value]) => ` ${key}="${escape(value)}"`)
225
+ .join("")}>${node.children.map(xml).join("")}</${node.name}>`;
226
+ }
227
+ export function formatCitations(entries, clusters, style, options = {}) {
228
+ const records = JSON.parse(toCslJson(entries));
229
+ const byId = new Map(records.map((item) => [String(item["id"]), item]));
230
+ for (const item of options.items ?? [])
231
+ byId.set(String(item["id"]), structuredClone(item));
232
+ const losses = [];
233
+ for (const entry of entries)
234
+ if (entry.raw && !entry.title && !entry.authors.length && !entry.issued) {
235
+ byId.set(entry.id, { id: entry.id, type: "document", title: entry.raw });
236
+ losses.push({
237
+ code: "opaque-reference-literal",
238
+ message: `Reference ${entry.id} is preserved literally and cannot be restyled.`,
239
+ });
240
+ }
241
+ const unresolved = [
242
+ ...new Set(clusters.flatMap((cluster) => cluster.items
243
+ .filter((item) => !byId.has(item.id))
244
+ .map((item) => item.id))),
245
+ ];
246
+ for (const id of unresolved)
247
+ losses.push({
248
+ code: "unresolved-citation",
249
+ message: `Citation ${id} has no bibliography entry.`,
250
+ });
251
+ const localeMap = { ...locales, ...options.locales };
252
+ const processor = new CSL.Engine({
253
+ retrieveLocale: (language) => {
254
+ const exact = localeMap[language];
255
+ if (exact)
256
+ return exact;
257
+ const match = Object.keys(localeMap).find((key) => key.split("-")[0] === language.split("-")[0]);
258
+ if (match)
259
+ return localeMap[match] ?? "";
260
+ throw new Error(`No CSL locale resource for ${language}`);
261
+ },
262
+ retrieveItem: (id) => byId.get(id) ?? { id, type: "document", title: id },
263
+ }, xml(style), options.locale ?? "en-US", Boolean(options.locale));
264
+ processor.setOutputFormat("text");
265
+ const form = citationForm(style);
266
+ const citations = clusters.map(() => "");
267
+ const history = [];
268
+ const positions = [];
269
+ clusters.forEach((cluster, index) => {
270
+ const noteIndex = options.noteIndices?.[index] ?? (form === "note" ? index + 1 : 0);
271
+ const citation = {
272
+ citationID: `publisle-${String(index)}`,
273
+ citationItems: cluster.items
274
+ .filter((item) => byId.has(item.id))
275
+ .map((item) => ({
276
+ id: item.id,
277
+ ...(item.locator
278
+ ? {
279
+ locator: item.locator,
280
+ label: item.label === "p." ? "page" : (item.label ?? "page"),
281
+ }
282
+ : {}),
283
+ ...(item.suppressAuthor ? { "suppress-author": true } : {}),
284
+ })),
285
+ properties: { noteIndex },
286
+ };
287
+ if (citation.citationItems.length) {
288
+ const result = processor.processCitationCluster(citation, history, []);
289
+ positions.push(index);
290
+ for (const [position, value] of result[1]) {
291
+ const target = positions[position];
292
+ if (target !== undefined)
293
+ citations[target] = value;
294
+ }
295
+ history.push([citation.citationID, noteIndex]);
296
+ }
297
+ });
298
+ clusters.forEach((cluster, index) => {
299
+ const missing = cluster.items
300
+ .filter((item) => !byId.has(item.id))
301
+ .map((item) => item.id);
302
+ citations[index] =
303
+ `${cluster.prefix ?? ""}${citations[index] ?? ""}${missing.length ? `[${missing.join(", ")}]` : ""}${cluster.suffix ?? ""}`;
304
+ });
305
+ const bibliographyResult = processor.makeBibliography();
306
+ const bibliography = bibliographyResult
307
+ ? bibliographyResult[1].map((text, index) => ({
308
+ id: bibliographyResult[0].entry_ids[index]?.[0] ?? "",
309
+ label: String(index + 1),
310
+ text: text.trim(),
311
+ }))
312
+ : [];
313
+ return { form, citations, bibliography, unresolved, losses };
314
+ }
315
+ //# sourceMappingURL=csl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"csl.js","sourceRoot":"","sources":["../src/csl.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ export type { CitationEntry, ResearchLoss } from "./article.js";
2
+ export { parseBibtex, toBibtex, toCslJson } from "./bibtex.js";
3
+ export { parseCslStyle } from "./csl.js";
4
+ export { toJats, createJatsPackage, type JatsPackage } from "./jats.js";
5
+ export { toLatex } from "./latex.js";
6
+ export { researchPaperProfile, scholarlyProfile, type ResearchPaperProfileOptions, } from "./profiles.js";
7
+ export { toPdf } from "./pdf.js";
8
+ export { resolveDocument, type ResolvedDocument } from "./resolve.js";
9
+ export { resolvePortableCitations, PORTABLE_CITATION_CAPABILITIES, type PortableCitations, } from "./portable-citations.js";
10
+ export { createLatexPackage, type LatexPackage, type LatexPackageOptions, type LatexEngine, } from "./package.js";
11
+ export { createSubmissionPackage } from "./package.js";
12
+ export type { CslOptions } from "./csl.js";
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,qBAAqB;AAChE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,oBAAoB;AAC/D,OAAO,EAAE,aAAa,EAAE,iBAAiB;AACzC,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,KAAK,WAAW,EAAE,kBAAkB;AACxE,OAAO,EAAE,OAAO,EAAE,mBAAmB;AACrC,OAAO,EACL,oBAAoB,EACpB,gBAAgB,EAChB,KAAK,2BAA2B,GACjC,sBAAsB;AAEvB,OAAO,EAAE,KAAK,EAAE,iBAAiB;AACjC,OAAO,EAAE,eAAe,EAAE,KAAK,gBAAgB,EAAE,qBAAqB;AACtE,OAAO,EACL,wBAAwB,EACxB,8BAA8B,EAC9B,KAAK,iBAAiB,GACvB,gCAAgC;AAEjC,OAAO,EACL,kBAAkB,EAClB,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACxB,KAAK,WAAW,GACjB,qBAAqB;AAEtB,OAAO,EAAE,uBAAuB,EAAE,qBAAqB;AAEvD,YAAY,EAAE,UAAU,EAAE,iBAAiB"}
package/dist/index.js ADDED
@@ -0,0 +1,12 @@
1
+ export { parseBibtex, toBibtex, toCslJson } from "./bibtex.js";
2
+ export { parseCslStyle } from "./csl.js";
3
+ export { toJats, createJatsPackage } from "./jats.js";
4
+ export { toLatex } from "./latex.js";
5
+ export { researchPaperProfile, scholarlyProfile, } from "./profiles.js";
6
+ // eslint-disable-next-line @typescript-eslint/no-deprecated -- retained migration export
7
+ export { toPdf } from "./pdf.js";
8
+ export { resolveDocument } from "./resolve.js";
9
+ export { resolvePortableCitations, PORTABLE_CITATION_CAPABILITIES, } from "./portable-citations.js";
10
+ export { createLatexPackage, } from "./package.js";
11
+ export { createSubmissionPackage } from "./package.js";
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAoB,MAAM,WAAW,CAAC;AACxE,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EACL,oBAAoB,EACpB,gBAAgB,GAEjB,MAAM,eAAe,CAAC;AACvB,yFAAyF;AACzF,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,eAAe,EAAyB,MAAM,cAAc,CAAC;AACtE,OAAO,EACL,wBAAwB,EACxB,8BAA8B,GAE/B,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,kBAAkB,GAInB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC"}
package/dist/jats.d.ts ADDED
@@ -0,0 +1,14 @@
1
+ import type { ResolvedDocument } from "./resolve.js";
2
+ /** JATS Archiving 1.3 article XML. It is not a publisher submission bundle. */
3
+ export declare function toJats(resolved: ResolvedDocument): string;
4
+ export interface JatsPackage {
5
+ readonly files: Readonly<Record<string, string>>;
6
+ readonly assets: readonly {
7
+ readonly source: string;
8
+ readonly destination: string;
9
+ }[];
10
+ readonly diagnostics: ResolvedDocument["losses"];
11
+ }
12
+ /** Pure article-and-assets package. Node collection validates with the bundled offline DTD. */
13
+ export declare function createJatsPackage(resolved: ResolvedDocument): JatsPackage;
14
+ //# sourceMappingURL=jats.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jats.d.ts","sourceRoot":"","sources":["../src/jats.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,qBAAqB;AA+ErD,+EAA+E;AAC/E,wBAAgB,MAAM,CAAC,QAAQ,EAAE,gBAAgB,GAAG,MAAM,CA8HzD;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACjD,QAAQ,CAAC,MAAM,EAAE,SAAS;QACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;KAC9B,EAAE,CAAC;IACJ,QAAQ,CAAC,WAAW,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC;CAClD;AACD,+FAA+F;AAC/F,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,WAAW,CAuBzE"}
package/dist/jats.js ADDED
@@ -0,0 +1,197 @@
1
+ function xml(value) {
2
+ return value
3
+ .replaceAll("&", "&amp;")
4
+ .replaceAll("<", "&lt;")
5
+ .replaceAll(">", "&gt;")
6
+ .replaceAll('"', "&quot;");
7
+ }
8
+ function xmlId(value) {
9
+ return /^[A-Za-z_][A-Za-z0-9_.-]*$/u.test(value) &&
10
+ !value.startsWith("publisle-id-")
11
+ ? value
12
+ : "publisle-id-" +
13
+ Array.from(new TextEncoder().encode(value), (byte) => byte.toString(16).padStart(2, "0")).join("");
14
+ }
15
+ function inlineJats(inlines, resolved, cursor) {
16
+ return inlines
17
+ .map((inline) => {
18
+ if (inline.type === "break")
19
+ return "<break/>";
20
+ if (inline.type === "math")
21
+ return `<inline-formula><tex-math><![CDATA[${inline.value.replaceAll("]]>", "]]]]><![CDATA[>")}]]></tex-math></inline-formula>`;
22
+ if (inline.type === "link")
23
+ return `<ext-link ext-link-type="uri" xlink:href="${xml(inline.url)}">${xml(inline.value)}</ext-link>`;
24
+ if (inline.type === "citation") {
25
+ const text = resolved.citations[cursor.index] ?? "";
26
+ cursor.index += 1;
27
+ const rid = inline.cluster.items
28
+ .map((item) => xmlId(item.id))
29
+ .join(" ");
30
+ return `<xref ref-type="bibr" rid="${xml(rid)}">${xml(text)}</xref>`;
31
+ }
32
+ if (inline.reference) {
33
+ const target = resolved.article.blocks.find((block) => block.label === inline.reference?.target);
34
+ const kind = inline.reference.kind === "footnote"
35
+ ? "fn"
36
+ : target?.kind === "figure"
37
+ ? "fig"
38
+ : target?.kind === "table"
39
+ ? "table"
40
+ : target?.kind === "math"
41
+ ? "disp-formula"
42
+ : "sec";
43
+ return `<xref ref-type="${kind}" rid="${xmlId(inline.reference.target)}">${xml(inline.value)}</xref>`;
44
+ }
45
+ const value = xml(inline.value);
46
+ if (inline.mark === "emphasis")
47
+ return `<italic>${value}</italic>`;
48
+ if (inline.mark === "strong")
49
+ return `<bold>${value}</bold>`;
50
+ if (inline.mark === "code")
51
+ return `<monospace>${value}</monospace>`;
52
+ if (inline.mark === "strike")
53
+ return `<strike>${value}</strike>`;
54
+ return value;
55
+ })
56
+ .join("");
57
+ }
58
+ function publicationType(type) {
59
+ if (type === "article-journal")
60
+ return "journal";
61
+ if (type === "book")
62
+ return "book";
63
+ if (type === "paper-conference")
64
+ return "confproc";
65
+ return "other";
66
+ }
67
+ function name(author) {
68
+ const comma = author.indexOf(",");
69
+ const surname = xml((comma === -1 ? author : author.slice(0, comma)).trim());
70
+ const given = comma === -1 ? "" : author.slice(comma + 1).trim();
71
+ return `<name><surname>${surname}</surname>${given.length === 0 ? "" : `<given-names>${xml(given)}</given-names>`}</name>`;
72
+ }
73
+ /** JATS Archiving 1.3 article XML. It is not a publisher submission bundle. */
74
+ export function toJats(resolved) {
75
+ const cursor = { index: 0 };
76
+ const take = (inlines) => inlineJats(inlines, resolved, cursor);
77
+ const abstract = [];
78
+ const body = [];
79
+ const footnotes = [];
80
+ const sections = [];
81
+ const closeSections = (level = 0) => {
82
+ while (sections.length && (sections[sections.length - 1] ?? 0) >= level) {
83
+ body.push("</sec>");
84
+ sections.pop();
85
+ }
86
+ };
87
+ for (const block of resolved.article.blocks) {
88
+ const target = block.kind !== "footnote" &&
89
+ block.kind !== "bibliography" &&
90
+ block.abstract
91
+ ? abstract
92
+ : body;
93
+ if (block.kind === "heading") {
94
+ if (!block.abstract) {
95
+ closeSections(block.level);
96
+ sections.push(block.level);
97
+ target.push(`<sec${block.label ? ` id="${xmlId(block.label)}"` : ""}><title>${take(block.inlines)}</title>`);
98
+ }
99
+ else
100
+ abstract.push(`<title>${take(block.inlines)}</title>`);
101
+ }
102
+ else if (block.kind === "paragraph")
103
+ target.push(`<p>${take(block.inlines)}</p>`);
104
+ else if (block.kind === "list") {
105
+ target.push(`<list list-type="${block.ordered ? "order" : "bullet"}">${block.items
106
+ .map((item) => `<list-item><p>${take(item)}</p></list-item>`)
107
+ .join("")}</list>`);
108
+ }
109
+ else if (block.kind === "quote") {
110
+ target.push(`<disp-quote>${block.paragraphs.map((paragraph) => `<p>${take(paragraph)}</p>`).join("")}</disp-quote>`);
111
+ }
112
+ else if (block.kind === "code")
113
+ target.push(`<preformat>${xml(block.value)}</preformat>`);
114
+ else if (block.kind === "math")
115
+ target.push(`<disp-formula${block.label ? ` id="${xmlId(block.label)}"` : ""}><tex-math><![CDATA[${block.value.replaceAll("]]>", "]]]]><![CDATA[>")}]]></tex-math></disp-formula>`);
116
+ else if (block.kind === "figure")
117
+ target.push(`<fig${block.label ? ` id="${xmlId(block.label)}"` : ""}><caption><p>${take(block.caption)}</p></caption><alt-text>${xml(block.alt)}</alt-text><graphic xlink:href="${xml(block.src)}"/></fig>`);
118
+ else if (block.kind === "table") {
119
+ const caption = block.caption
120
+ ? `<caption><p>${take(block.caption)}</p></caption>`
121
+ : "";
122
+ const rows = block.rows
123
+ .map((row) => `<tr>${row.map((cell) => `<td>${take(cell)}</td>`).join("")}</tr>`)
124
+ .join("");
125
+ target.push(`<table-wrap${block.label ? ` id="${xmlId(block.label)}"` : ""}>${caption}<table>${rows}</table></table-wrap>`);
126
+ }
127
+ else if (block.kind === "footnote") {
128
+ footnotes.push(`<fn id="${xmlId(block.id)}"><p>${block.paragraphs.map((paragraph) => take(paragraph)).join(" ")}</p></fn>`);
129
+ }
130
+ }
131
+ closeSections();
132
+ const entryById = new Map(resolved.article.entries.map((entry) => [entry.id, entry]));
133
+ const refs = resolved.bibliography
134
+ .map((item) => {
135
+ const entry = entryById.get(item.id);
136
+ if (!entry ||
137
+ (entry.raw && !entry.title && !entry.authors.length && !entry.issued))
138
+ return `<ref id="${xmlId(item.id)}"><mixed-citation>${xml(entry?.raw ?? item.text)}</mixed-citation></ref>`;
139
+ const pages = (entry.page ?? "").split(/--|-|–/u);
140
+ const first = pages[0]?.trim() ?? "";
141
+ const last = pages[1]?.trim();
142
+ return `<ref id="${xmlId(item.id)}"><element-citation publication-type="${publicationType(entry.type)}">${entry.authors.length > 0
143
+ ? `<person-group person-group-type="author">${entry.authors.map(name).join("")}</person-group>`
144
+ : ""}${entry.title === undefined ? "" : `<article-title>${xml(entry.title)}</article-title>`}${entry.containerTitle === undefined
145
+ ? ""
146
+ : `<source>${xml(entry.containerTitle)}</source>`}${entry.issued === undefined ? "" : `<year>${xml(entry.issued.slice(0, 4))}</year>`}${entry.volume === undefined
147
+ ? ""
148
+ : `<volume>${xml(entry.volume)}</volume>`}${entry.issue === undefined ? "" : `<issue>${xml(entry.issue)}</issue>`}${first.length === 0 ? "" : `<fpage>${xml(first)}</fpage>`}${last === undefined || last.length === 0 ? "" : `<lpage>${xml(last)}</lpage>`}${entry.doi === undefined
149
+ ? ""
150
+ : `<pub-id pub-id-type="doi">${xml(entry.doi)}</pub-id>`}</element-citation></ref>`;
151
+ })
152
+ .join("");
153
+ const authors = resolved.article.authors
154
+ .map((author) => `<contrib contrib-type="author"><name><surname>${xml(author)}</surname></name></contrib>`)
155
+ .join("");
156
+ return `<?xml version="1.0" encoding="UTF-8"?>
157
+ <article xmlns:xlink="http://www.w3.org/1999/xlink" article-type="research-article" dtd-version="1.3"${resolved.article.language ? ` xml:lang="${xml(resolved.article.language)}"` : ""}>
158
+ <front><article-meta>
159
+ <title-group><article-title>${xml(resolved.article.title ?? "Untitled")}</article-title></title-group>
160
+ ${authors.length === 0 ? "" : `<contrib-group>${authors}</contrib-group>`}
161
+ ${abstract.length === 0 ? "" : `<abstract>${abstract.join("")}</abstract>`}
162
+ </article-meta></front>
163
+ <body>${body.join("")}</body>
164
+ <back>
165
+ ${footnotes.length === 0 ? "" : `<fn-group>${footnotes.join("")}</fn-group>`}
166
+ <ref-list>${refs}</ref-list>
167
+ </back>
168
+ </article>
169
+ `;
170
+ }
171
+ /** Pure article-and-assets package. Node collection validates with the bundled offline DTD. */
172
+ export function createJatsPackage(resolved) {
173
+ if (resolved.unresolved.length)
174
+ throw new Error(`Unresolved citations: ${resolved.unresolved.join(", ")}`);
175
+ const assets = [];
176
+ const blocks = resolved.article.blocks.map((block) => {
177
+ if (block.kind !== "figure")
178
+ return block;
179
+ if (/^(?:[a-z]+:|\/\/)/iu.test(block.src))
180
+ throw new Error("JATS package requires local figure assets.");
181
+ const extension = /\.([a-z0-9]+)$/iu.exec(block.src)?.[1] ?? "bin";
182
+ const destination = `assets/figure-${String(assets.length + 1)}.${extension}`;
183
+ assets.push({ source: block.src, destination });
184
+ return { ...block, src: destination };
185
+ });
186
+ return {
187
+ files: {
188
+ "article.xml": toJats({
189
+ ...resolved,
190
+ article: { ...resolved.article, blocks },
191
+ }),
192
+ },
193
+ assets,
194
+ diagnostics: resolved.losses,
195
+ };
196
+ }
197
+ //# sourceMappingURL=jats.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jats.js","sourceRoot":"","sources":["../src/jats.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { ResolvedDocument } from "./resolve.js";
2
+ export { latexText, latexKey } from "@publisle/template-sdk";
3
+ /** Unicode article source. Use a submission package to collect referenced figure assets. */
4
+ export declare function toLatex(resolved: ResolvedDocument): string;
5
+ //# sourceMappingURL=latex.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"latex.d.ts","sourceRoot":"","sources":["../src/latex.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,qBAAqB;AACrD,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAC7D,4FAA4F;AAC5F,wBAAgB,OAAO,CAAC,QAAQ,EAAE,gBAAgB,GAAG,MAAM,CAe1D"}
package/dist/latex.js ADDED
@@ -0,0 +1,19 @@
1
+ import { template } from "@publisle/template-article";
2
+ import { citationClusters } from "./article.js";
3
+ export { latexText, latexKey } from "@publisle/template-sdk";
4
+ /** Unicode article source. Use a submission package to collect referenced figure assets. */
5
+ export function toLatex(resolved) {
6
+ const citations = new Map(citationClusters(resolved.article).map((cluster, index) => [
7
+ cluster,
8
+ resolved.citations[index] ?? "",
9
+ ]));
10
+ const source = template.render(resolved.article, {
11
+ style: resolved.form,
12
+ citationForm: resolved.form,
13
+ citations: resolved.citations,
14
+ citationText: (cluster) => citations.get(cluster) ?? "",
15
+ bibliography: resolved.bibliography,
16
+ });
17
+ return source.files["manuscript.tex"] ?? "";
18
+ }
19
+ //# sourceMappingURL=latex.js.map