jats-cli 1.0.11 → 1.0.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/jats.cjs CHANGED
@@ -6561,7 +6561,7 @@ var require_xml2js = __commonJS({
6561
6561
  var require_xml2json = __commonJS({
6562
6562
  "../../node_modules/xml-js/lib/xml2json.js"(exports, module2) {
6563
6563
  var helper = require_options_helper();
6564
- var xml2js2 = require_xml2js();
6564
+ var xml2js3 = require_xml2js();
6565
6565
  function validateOptions2(userOptions) {
6566
6566
  var options = helper.copyOptions(userOptions);
6567
6567
  helper.ensureSpacesExists(options);
@@ -6570,7 +6570,7 @@ var require_xml2json = __commonJS({
6570
6570
  module2.exports = function(xml, userOptions) {
6571
6571
  var options, js, json2, parentKey;
6572
6572
  options = validateOptions2(userOptions);
6573
- js = xml2js2(xml, options);
6573
+ js = xml2js3(xml, options);
6574
6574
  parentKey = "compact" in options && options.compact ? "_parent" : "parent";
6575
6575
  if ("addParent" in options && options.addParent) {
6576
6576
  json2 = JSON.stringify(js, function(k, v) {
@@ -6942,12 +6942,12 @@ var require_json2xml = __commonJS({
6942
6942
  // ../../node_modules/xml-js/lib/index.js
6943
6943
  var require_lib2 = __commonJS({
6944
6944
  "../../node_modules/xml-js/lib/index.js"(exports, module2) {
6945
- var xml2js2 = require_xml2js();
6945
+ var xml2js3 = require_xml2js();
6946
6946
  var xml2json = require_xml2json();
6947
6947
  var js2xml3 = require_js2xml();
6948
6948
  var json2xml = require_json2xml();
6949
6949
  module2.exports = {
6950
- xml2js: xml2js2,
6950
+ xml2js: xml2js3,
6951
6951
  xml2json,
6952
6952
  js2xml: js2xml3,
6953
6953
  json2xml
@@ -48999,7 +48999,7 @@ var {
48999
48999
  } = import_index.default;
49000
49000
 
49001
49001
  // src/version.ts
49002
- var version = "1.0.11";
49002
+ var version = "1.0.13";
49003
49003
  var version_default = version;
49004
49004
 
49005
49005
  // src/parse.ts
@@ -56436,6 +56436,7 @@ var import_node_fs4 = __toESM(require("node:fs"), 1);
56436
56436
  var import_node_path3 = __toESM(require("node:path"), 1);
56437
56437
  var import_node_readline = __toESM(require("node:readline"), 1);
56438
56438
  var import_client_s32 = __toESM(require_dist_cjs71(), 1);
56439
+ var import_xml_js2 = __toESM(require_lib2(), 1);
56439
56440
 
56440
56441
  // ../jats-fetch/dist/utils.js
56441
56442
  var import_node_fs3 = __toESM(require("node:fs"), 1);
@@ -57789,6 +57790,7 @@ async function streamToFile(url, dest, fetcher) {
57789
57790
  // ../jats-fetch/dist/pubmed.js
57790
57791
  var EFETCH_URL = "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi";
57791
57792
  var ESUMMARY_URL = "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi";
57793
+ var OA_URL = "https://www.ncbi.nlm.nih.gov/pmc/utils/oa/oa.fcgi";
57792
57794
  var IDCONV_URL = "https://www.ncbi.nlm.nih.gov/pmc/utils/idconv/v1.0/";
57793
57795
  var LISTING_BASE_URL = "https://ftp.ncbi.nlm.nih.gov/pub/pmc/";
57794
57796
  var LISTING_URL = `${LISTING_BASE_URL}oa_file_list.csv`;
@@ -57811,42 +57813,52 @@ function normalizePMID(session, pmid) {
57811
57813
  }
57812
57814
  return pmid;
57813
57815
  }
57814
- async function convertPMID2PMCID(session, pmid, opts) {
57816
+ async function convertId(session, id, from, to, opts) {
57815
57817
  var _a, _b, _c;
57816
- pmid = normalizePMID(session, pmid);
57817
57818
  const toc = tic();
57818
- const resp = await ((_a = opts === null || opts === void 0 ? void 0 : opts.fetcher) !== null && _a !== void 0 ? _a : defaultFetcher)(`${IDCONV_URL}?tool=jats-xml&format=json&ids=${pmid}`, "json");
57819
+ const resp = await ((_a = opts === null || opts === void 0 ? void 0 : opts.fetcher) !== null && _a !== void 0 ? _a : defaultFetcher)(`${IDCONV_URL}?tool=jats-xml&format=json&ids=${id}`, "json");
57819
57820
  if (!resp.ok) {
57820
- session.log.debug(`Failed to convert PubMedID: ${pmid}`);
57821
+ session.log.debug(`Failed to convert ${from} ID: ${id}`);
57821
57822
  return;
57822
57823
  }
57823
57824
  const data = await resp.json();
57824
- const pmcid = (_c = (_b = data === null || data === void 0 ? void 0 : data.records) === null || _b === void 0 ? void 0 : _b[0]) === null || _c === void 0 ? void 0 : _c.pmcid;
57825
- session.log.debug(toc(`Used nih.gov to transform ${pmid} to ${pmcid} in %s.`));
57825
+ const newId = (_c = (_b = data === null || data === void 0 ? void 0 : data.records) === null || _b === void 0 ? void 0 : _b[0]) === null || _c === void 0 ? void 0 : _c[to];
57826
+ if (newId) {
57827
+ session.log.debug(toc(`Used nih.gov to transform ${id} to ${newId} in %s.`));
57828
+ }
57829
+ return newId;
57830
+ }
57831
+ async function convertIds(session, ids, from, to, opts) {
57832
+ var _a, _b, _c;
57833
+ const toc = tic();
57834
+ const resp = await ((_a = opts === null || opts === void 0 ? void 0 : opts.fetcher) !== null && _a !== void 0 ? _a : defaultFetcher)(`${IDCONV_URL}?tool=jats-xml&format=json&ids=${ids.join(",")}`, "json");
57835
+ if (!resp.ok) {
57836
+ session.log.debug(`Failed to convert ${from} ${ids.length} IDs`);
57837
+ return;
57838
+ }
57839
+ const data = await resp.json();
57840
+ const entries = (_b = data === null || data === void 0 ? void 0 : data.records) === null || _b === void 0 ? void 0 : _b.filter((record) => !!record[from] && !!record[to]).map((record) => [record[from], record[to]]);
57841
+ const newIds = entries ? Object.fromEntries(entries) : {};
57842
+ session.log.debug(toc(`Used nih.gov to transform ${(_c = entries === null || entries === void 0 ? void 0 : entries.length) !== null && _c !== void 0 ? _c : 0}/${ids.length} ${from} to ${to} in %s.`));
57843
+ return newIds;
57844
+ }
57845
+ async function convertPMID2PMCID(session, pmid, opts) {
57846
+ pmid = normalizePMID(session, pmid);
57847
+ const pmcid = await convertId(session, pmid, "pmid", "pmcid", opts);
57826
57848
  return pmcid;
57827
57849
  }
57828
57850
  async function convertPMIDs2DOIs(session, pmids, opts) {
57829
- var _a, _b, _c, _d;
57851
+ var _a, _b, _c;
57830
57852
  pmids = [...new Set(pmids.map((pmid) => normalizePMID(session, pmid)))];
57831
- const pmDois = {};
57832
57853
  const toc = tic();
57833
- const idconvResp = await ((_a = opts === null || opts === void 0 ? void 0 : opts.fetcher) !== null && _a !== void 0 ? _a : defaultFetcher)(`${IDCONV_URL}?tool=jats-xml&format=json&ids=${pmids.join(",")}`, "json");
57834
- if (idconvResp.ok) {
57835
- const data = await idconvResp.json();
57836
- (_b = data === null || data === void 0 ? void 0 : data.records) === null || _b === void 0 ? void 0 : _b.forEach((record) => {
57837
- if (record.doi)
57838
- pmDois[record.pmid] = record.doi;
57839
- });
57840
- const pmDoiCount = Object.keys(pmDois).length;
57841
- if (pmDoiCount === pmids.length) {
57842
- session.log.debug(toc(`Used nih.gov to convert ${pmDoiCount} PMIDs to DOIs in %s.`));
57843
- return pmDois;
57844
- }
57854
+ const pmDois = (_a = await convertIds(session, pmids, "pmid", "doi", opts)) !== null && _a !== void 0 ? _a : {};
57855
+ if (Object.keys(pmDois).length === pmids.length) {
57856
+ return pmDois;
57845
57857
  }
57846
- const esummaryResp = await ((_c = opts === null || opts === void 0 ? void 0 : opts.fetcher) !== null && _c !== void 0 ? _c : defaultFetcher)(`${ESUMMARY_URL}?db=pubmed&format=json&id=${pmids.filter((pmid) => !pmDois[pmid]).join(",")}`, "json");
57858
+ const esummaryResp = await ((_b = opts === null || opts === void 0 ? void 0 : opts.fetcher) !== null && _b !== void 0 ? _b : defaultFetcher)(`${ESUMMARY_URL}?db=pubmed&format=json&id=${pmids.filter((pmid) => !pmDois[pmid]).join(",")}`, "json");
57847
57859
  if (esummaryResp.ok) {
57848
57860
  const data = await esummaryResp.json();
57849
- Object.entries((_d = data === null || data === void 0 ? void 0 : data.result) !== null && _d !== void 0 ? _d : {}).filter(([pmid]) => pmid !== "uids").forEach(([pmid, record]) => {
57861
+ Object.entries((_c = data === null || data === void 0 ? void 0 : data.result) !== null && _c !== void 0 ? _c : {}).filter(([pmid]) => pmid !== "uids").forEach(([pmid, record]) => {
57850
57862
  var _a2, _b2;
57851
57863
  const pmDoi = (_b2 = (_a2 = record.articleids) === null || _a2 === void 0 ? void 0 : _a2.find((articleid) => {
57852
57864
  return articleid.idtype === "doi";
@@ -57911,13 +57923,12 @@ async function getPubMedJatsFromS3(session, pmcid) {
57911
57923
  session.log.debug(`Not available from open-access S3 bucket: ${pmcid}`);
57912
57924
  return { success: false, source: pmcid };
57913
57925
  } else {
57926
+ session.log.debug(`Fetching PMC JATS from S3 bucket: ${pmcid}`);
57914
57927
  const result = await downloadFileFromS3(client, found.path, OA_CONFIG);
57915
57928
  return result;
57916
57929
  }
57917
57930
  }
57918
57931
  async function getListingsFile(session, dest, fetcher) {
57919
- if (!dest)
57920
- dest = __dirname;
57921
57932
  if (!import_node_path3.default.extname(dest))
57922
57933
  dest = import_node_path3.default.join(dest, LISTING_FILENAME);
57923
57934
  if (import_node_path3.default.extname(dest) !== ".csv") {
@@ -57962,19 +57973,37 @@ async function searchListingForPMC(listingFile, pmcid) {
57962
57973
  }
57963
57974
  throw new Error(`Article ${pmcid} not found in ${listingFile}`);
57964
57975
  }
57965
- async function downloadAndUnzipPMC(session, entry, outputDir, fetcher) {
57966
- const urlParts = entry.url.split("/");
57976
+ async function getDownloadMetadata(pmcid, fetcher) {
57977
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
57978
+ const resp = await (fetcher !== null && fetcher !== void 0 ? fetcher : defaultFetcher)(`${OA_URL}?format=tgz&id=${pmcid}`, "xml");
57979
+ if (!resp.ok) {
57980
+ throw new Error(`Bad response from ${OA_URL}`);
57981
+ }
57982
+ const oaMeta = (0, import_xml_js2.xml2js)(await resp.text(), { compact: true });
57983
+ if (((_c = (_b = (_a = oaMeta.OA) === null || _a === void 0 ? void 0 : _a.records) === null || _b === void 0 ? void 0 : _b._attributes) === null || _c === void 0 ? void 0 : _c["returned-count"]) !== "1") {
57984
+ throw new Error(`Bad response from ${OA_URL} - returned count is not 1`);
57985
+ }
57986
+ const url = (_h = (_g = (_f = (_e = (_d = oaMeta === null || oaMeta === void 0 ? void 0 : oaMeta.OA) === null || _d === void 0 ? void 0 : _d.records) === null || _e === void 0 ? void 0 : _e.record) === null || _f === void 0 ? void 0 : _f.link) === null || _g === void 0 ? void 0 : _g._attributes) === null || _h === void 0 ? void 0 : _h.href;
57987
+ if (!url) {
57988
+ throw new Error(`Bad response from ${OA_URL} - href is not available`);
57989
+ }
57990
+ const { citation, license } = (_m = (_l = (_k = (_j = oaMeta.OA) === null || _j === void 0 ? void 0 : _j.records) === null || _k === void 0 ? void 0 : _k.record) === null || _l === void 0 ? void 0 : _l._attributes) !== null && _m !== void 0 ? _m : {};
57991
+ return { url, citation, license };
57992
+ }
57993
+ async function downloadAndUnzipPMC(session, url, outputDir, fetcher) {
57994
+ url = url.replace(/^ftp:/, "https:");
57995
+ const urlParts = url.split("/");
57967
57996
  const filename = urlParts[urlParts.length - 1];
57968
57997
  const dest = import_node_path3.default.join(outputDir, filename);
57969
57998
  if (!import_node_fs4.default.existsSync(outputDir)) {
57970
57999
  import_node_fs4.default.mkdirSync(outputDir, { recursive: true });
57971
58000
  }
57972
58001
  if (!import_node_fs4.default.existsSync(dest)) {
57973
- session.log.info(`Downloading PMC data from ${entry.url}`);
57974
- await streamToFile(`${LISTING_BASE_URL}${entry.url}`, dest, fetcher);
58002
+ session.log.info(`Downloading PMC data from ${url}`);
58003
+ await streamToFile(url, dest, fetcher);
57975
58004
  }
57976
58005
  if (!import_node_fs4.default.existsSync(dest)) {
57977
- throw new Error(`Unable to download ${entry.url}`);
58006
+ throw new Error(`Unable to download ${url}`);
57978
58007
  }
57979
58008
  session.log.info(`Extracting PMC data from ${dest} to ${outputDir}`);
57980
58009
  const unzip = makeExecutable(`tar -xf ${dest} -C ${outputDir}`, session.log);
@@ -57994,9 +58023,28 @@ async function downloadAndUnzipPMC(session, entry, outputDir, fetcher) {
57994
58023
  import_node_fs4.default.rmdirSync(zipDir);
57995
58024
  }
57996
58025
  async function getDataFromPMC(session, pmcid, outputDir, listing, fetcher) {
57997
- const listingFile = await getListingsFile(session, listing, fetcher);
57998
- const entry = await searchListingForPMC(listingFile, pmcid);
57999
- await downloadAndUnzipPMC(session, entry, outputDir, fetcher);
58026
+ let url;
58027
+ if (pmcid.endsWith(".tar.gz")) {
58028
+ url = pmcid;
58029
+ } else {
58030
+ if (!pmcid.startsWith("PMC")) {
58031
+ throw new Error("Data may only be downloaded for PMC articles");
58032
+ }
58033
+ try {
58034
+ const metadata = await getDownloadMetadata(pmcid);
58035
+ url = metadata.url;
58036
+ } catch {
58037
+ if (listing) {
58038
+ const listingFile = await getListingsFile(session, listing, fetcher);
58039
+ const entry = await searchListingForPMC(listingFile, pmcid);
58040
+ url = `${LISTING_BASE_URL}${entry.url}`;
58041
+ }
58042
+ }
58043
+ }
58044
+ if (!url) {
58045
+ throw new Error(`Unable to find PMC data download url for: ${pmcid}`);
58046
+ }
58047
+ await downloadAndUnzipPMC(session, url, outputDir, fetcher);
58000
58048
  }
58001
58049
  async function getPubMedJatsFromData(session, pmcid, outputDir, listing, fetcher) {
58002
58050
  await getDataFromPMC(session, pmcid, outputDir, listing, fetcher);
@@ -58071,6 +58119,9 @@ async function downloadFromUrl(session, jatsUrl, opts) {
58071
58119
  session.log.warn(`Expected content-type "application/xml" instead we got "${contentType}" for ${jatsUrl}`);
58072
58120
  }
58073
58121
  const data = await resp.text();
58122
+ if (!data.match(/<article/)) {
58123
+ throw new Error(`XML downloaded from ${jatsUrl} does not look like a JATS article`);
58124
+ }
58074
58125
  session.log.debug(toc(`Fetched document with content-type "${contentType}" in %s`));
58075
58126
  return data;
58076
58127
  }
@@ -58126,43 +58177,66 @@ async function downloadJatsFromUrl(session, urlOrDoi, opts = {}) {
58126
58177
  }
58127
58178
  return { success: false, source: expectedUrls[0] };
58128
58179
  }
58129
- if (doi.validate(urlOrDoi)) {
58130
- const jatsUrl = await customResolveJatsUrlFromDoi(session, urlOrDoi, opts);
58131
- const data = await downloadFromUrl(session, jatsUrl, opts);
58132
- return { success: true, source: jatsUrl, data };
58133
- }
58134
- if (isUrl(urlOrDoi)) {
58135
- session.log.debug("No resolver matched, and the URL doesn't look like a DOI. We will attempt to download it directly.");
58136
- const data = await downloadFromUrl(session, urlOrDoi, opts);
58137
- return { success: true, source: urlOrDoi, data };
58180
+ try {
58181
+ if (doi.validate(urlOrDoi)) {
58182
+ const jatsUrl = await customResolveJatsUrlFromDoi(session, urlOrDoi, opts);
58183
+ const data = await downloadFromUrl(session, jatsUrl, opts);
58184
+ return { success: true, source: jatsUrl, data };
58185
+ }
58186
+ if (isUrl(urlOrDoi)) {
58187
+ session.log.debug("No resolver matched, and the URL doesn't look like a DOI. We will attempt to download it directly.");
58188
+ const data = await downloadFromUrl(session, urlOrDoi, opts);
58189
+ return { success: true, source: urlOrDoi, data };
58190
+ }
58191
+ } catch (error) {
58192
+ session.log.debug(error.message);
58193
+ return { success: false, source: urlOrDoi };
58138
58194
  }
58139
- throw new Error(`Could not find ${urlOrDoi} locally, and it doesn't look like a URL or DOI`);
58195
+ session.log.debug(`Could not find ${urlOrDoi} locally, and it doesn't look like a URL or DOI`);
58196
+ return { success: false, source: urlOrDoi };
58140
58197
  }
58141
58198
  async function jatsFetch(session, input, opts) {
58142
- var _a, _b;
58199
+ var _a;
58143
58200
  if (input === "listing" && !opts.data && !(opts.output && opts.listing)) {
58144
- const dest = await getListingsFile(session, (_a = opts.output) !== null && _a !== void 0 ? _a : opts.listing);
58201
+ const inputDest = (_a = opts.output) !== null && _a !== void 0 ? _a : opts.listing;
58202
+ if (!inputDest) {
58203
+ throw new Error("Destination for listing file must be specified");
58204
+ }
58205
+ const dest = await getListingsFile(session, inputDest);
58145
58206
  session.log.info(`PMC Open Access listing saved to ${dest}`);
58146
58207
  return;
58147
58208
  }
58148
- let output = (_b = opts.output) !== null && _b !== void 0 ? _b : opts.data ? `${input}` : ".";
58209
+ let output = opts.output;
58210
+ let filename;
58211
+ if (input.endsWith(".tar.gz")) {
58212
+ opts.data = true;
58213
+ const foldername = input.split("/").slice(-1)[0].slice(0, -".tar.gz".length);
58214
+ filename = `${foldername}.xml`;
58215
+ if (!output) {
58216
+ output = foldername;
58217
+ }
58218
+ }
58219
+ if (!output)
58220
+ output = opts.data ? `${input}` : ".";
58149
58221
  if (!import_node_path4.default.extname(output)) {
58150
- const filename = input.startsWith("PMC") ? `${input}.xml` : "jats.xml";
58222
+ filename = filename !== null && filename !== void 0 ? filename : input.startsWith("PMC") ? `${input}.xml` : "jats.xml";
58151
58223
  output = import_node_path4.default.join(output, filename);
58152
58224
  }
58153
58225
  if (import_node_path4.default.extname(output) && ![".xml", ".jats"].includes(import_node_path4.default.extname(output).toLowerCase())) {
58154
58226
  throw new Error(`Output must be an XML file or a directory`);
58155
58227
  }
58156
58228
  let result;
58157
- try {
58158
- result = await downloadJatsFromUrl(session, input);
58159
- } catch {
58229
+ if (opts.data) {
58230
+ result = await getPubMedJatsFromData(session, input, import_node_path4.default.dirname(output), opts.listing);
58160
58231
  }
58161
58232
  if (!(result === null || result === void 0 ? void 0 : result.data) && input.startsWith("PMC")) {
58162
58233
  result = await getPubMedJatsFromS3(session, input);
58163
- if (!(result === null || result === void 0 ? void 0 : result.data)) {
58164
- result = await getPubMedJatsFromData(session, input, import_node_path4.default.dirname(output), opts.listing);
58165
- }
58234
+ }
58235
+ if (!(result === null || result === void 0 ? void 0 : result.data)) {
58236
+ result = await downloadJatsFromUrl(session, input);
58237
+ }
58238
+ if (!(result === null || result === void 0 ? void 0 : result.data) && input.startsWith("PMC")) {
58239
+ result = await getPubMedJatsFromData(session, input, import_node_path4.default.dirname(output), opts.listing);
58166
58240
  }
58167
58241
  if (!(result === null || result === void 0 ? void 0 : result.data)) {
58168
58242
  throw new Error(`Unable to resolve JATS XML content from ${input}`);
@@ -58174,17 +58248,10 @@ async function jatsFetch(session, input, opts) {
58174
58248
  }
58175
58249
  import_node_fs5.default.writeFileSync(output, result.data);
58176
58250
  session.log.info(`JATS written to ${output}`);
58177
- if (!opts.data)
58178
- return;
58179
- if (input.startsWith("PMC")) {
58180
- await getDataFromPMC(session, input, import_node_path4.default.dirname(output), opts.listing);
58181
- } else {
58182
- session.log.error("Data may only be downloaded for PMC articles");
58183
- }
58184
58251
  }
58185
58252
 
58186
58253
  // ../jats-xml/dist/jats.js
58187
- var import_xml_js2 = __toESM(require_lib2(), 1);
58254
+ var import_xml_js3 = __toESM(require_lib2(), 1);
58188
58255
 
58189
58256
  // ../jats-xml/node_modules/unist-util-is/lib/index.js
58190
58257
  var convert2 = (
@@ -58516,7 +58583,7 @@ var Jats = class {
58516
58583
  if (opts === null || opts === void 0 ? void 0 : opts.source)
58517
58584
  this.source = opts.source;
58518
58585
  try {
58519
- this.raw = (0, import_xml_js2.xml2js)(data, { compact: false });
58586
+ this.raw = (0, import_xml_js3.xml2js)(data, { compact: false });
58520
58587
  } catch (error) {
58521
58588
  throw new Error("Problem parsing the JATS document, please ensure it is XML");
58522
58589
  }
@@ -64759,7 +64826,7 @@ var u = (
64759
64826
 
64760
64827
  // ../jats-convert/dist/index.js
64761
64828
  var import_mathml_to_latex = __toESM(require_bundle_min(), 1);
64762
- var import_xml_js3 = __toESM(require_lib2(), 1);
64829
+ var import_xml_js4 = __toESM(require_lib2(), 1);
64763
64830
 
64764
64831
  // ../jats-convert/dist/transforms/admonitions.js
64765
64832
  function admonitionTransform(tree, file) {
@@ -64977,7 +65044,9 @@ function recurseSections(tree, depth = 1, titleType) {
64977
65044
  firstChild3 = (_b = sec.children) === null || _b === void 0 ? void 0 : _b[1];
64978
65045
  }
64979
65046
  if ((firstChild3 === null || firstChild3 === void 0 ? void 0 : firstChild3.type) === "title") {
64980
- if (titleType === "strong") {
65047
+ if (sec.type === "ack" && toText(firstChild3).toLowerCase().startsWith("ack")) {
65048
+ firstChild3.type = "__delete__";
65049
+ } else if (titleType === "strong") {
64981
65050
  firstChild3.type = "p";
64982
65051
  firstChild3.children = [{ type: "bold", children: firstChild3.children }];
64983
65052
  } else {
@@ -64986,6 +65055,8 @@ function recurseSections(tree, depth = 1, titleType) {
64986
65055
  firstChild3.depth = depth;
64987
65056
  }
64988
65057
  }
65058
+ if (sec.type === "ack")
65059
+ sec.part = "acknowledgments";
64989
65060
  recurseSections(sec, depth + 1, titleType);
64990
65061
  });
64991
65062
  }
@@ -64995,8 +65066,6 @@ function sectionTransform(tree, titleType) {
64995
65066
  remove(tree, "__delete__");
64996
65067
  const topSections = (_a = tree.children) === null || _a === void 0 ? void 0 : _a.filter((n) => isSection(n));
64997
65068
  topSections.forEach((sec) => {
64998
- if (sec.type === "ack")
64999
- sec.part = "acknowledgments";
65000
65069
  sec.type = "block";
65001
65070
  });
65002
65071
  while (select3("sec", tree))
@@ -65462,7 +65531,7 @@ function journalTransforms(tree) {
65462
65531
  }
65463
65532
 
65464
65533
  // ../jats-convert/dist/version.js
65465
- var version3 = "1.0.11";
65534
+ var version3 = "1.0.13";
65466
65535
  var version_default3 = version3;
65467
65536
 
65468
65537
  // ../jats-convert/dist/myst/inlineCitations.js
@@ -65683,7 +65752,7 @@ function texMathFromNode(node) {
65683
65752
  });
65684
65753
  }
65685
65754
  });
65686
- return import_mathml_to_latex.MathMLToLaTeX.convert((0, import_xml_js3.js2xml)({ type: "element", name: "root", elements: [math] }));
65755
+ return import_mathml_to_latex.MathMLToLaTeX.convert((0, import_xml_js4.js2xml)({ type: "element", name: "root", elements: [math] }));
65687
65756
  }
65688
65757
  var handlers = {
65689
65758
  body(node, state2) {
@@ -65980,7 +66049,7 @@ var handlers = {
65980
66049
  }
65981
66050
  case RefType.fn:
65982
66051
  case RefType.tableFn: {
65983
- state2.renderInline(node, "footnoteReference", { label, identifier });
66052
+ state2.addLeaf("footnoteReference", { label, identifier });
65984
66053
  return;
65985
66054
  }
65986
66055
  default: {
package/dist/version.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- declare const version = "1.0.11";
1
+ declare const version = "1.0.13";
2
2
  export default version;
3
3
  //# sourceMappingURL=version.d.ts.map
package/dist/version.js CHANGED
@@ -1,2 +1,2 @@
1
- const version = '1.0.11';
1
+ const version = '1.0.13';
2
2
  export default version;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jats-cli",
3
- "version": "1.0.11",
3
+ "version": "1.0.13",
4
4
  "description": "Typescript CLI for with JATS",
5
5
  "author": "Rowan Cockett <rowan@curvenote.com>",
6
6
  "homepage": "https://github.com/curvenote/jats",
@@ -45,11 +45,11 @@
45
45
  "dependencies": {
46
46
  "doi-utils": "^2.0.0",
47
47
  "fair-principles": "^2.0.0",
48
- "jats-convert": "^1.0.11",
49
- "jats-fetch": "^1.0.11",
50
- "jats-tags": "^1.0.11",
51
- "jats-utils": "^1.0.11",
52
- "jats-xml": "^1.0.11",
48
+ "jats-convert": "^1.0.13",
49
+ "jats-fetch": "^1.0.13",
50
+ "jats-tags": "^1.0.13",
51
+ "jats-utils": "^1.0.13",
52
+ "jats-xml": "^1.0.13",
53
53
  "js-yaml": "^4.1.0",
54
54
  "unist-util-is": "^5.2.1",
55
55
  "unist-util-select": "^4.0.0"