@manuscripts/transform 1.0.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 (315) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +193 -0
  3. package/dist/cjs/errors.js +17 -0
  4. package/dist/cjs/index.js +27 -0
  5. package/dist/cjs/jats/importer/index.js +24 -0
  6. package/dist/cjs/jats/importer/jats-body-dom-parser.js +650 -0
  7. package/dist/cjs/jats/importer/jats-body-transformations.js +269 -0
  8. package/dist/cjs/jats/importer/jats-comments.js +131 -0
  9. package/dist/cjs/jats/importer/jats-front-parser.js +341 -0
  10. package/dist/cjs/jats/importer/jats-journal-meta-parser.js +77 -0
  11. package/dist/cjs/jats/importer/jats-parser-utils.js +145 -0
  12. package/dist/cjs/jats/importer/jats-reference-parser.js +180 -0
  13. package/dist/cjs/jats/importer/parse-jats-article.js +237 -0
  14. package/dist/cjs/jats/index.js +40 -0
  15. package/dist/cjs/jats/jats-exporter.js +1569 -0
  16. package/dist/cjs/jats/jats-versions.js +41 -0
  17. package/dist/cjs/lib/attributes.js +26 -0
  18. package/dist/cjs/lib/html.js +48 -0
  19. package/dist/cjs/lib/styled-content.js +28 -0
  20. package/dist/cjs/lib/table-cell-styles.js +52 -0
  21. package/dist/cjs/lib/utils.js +66 -0
  22. package/dist/cjs/mathjax/index.js +41 -0
  23. package/dist/cjs/mathjax/mathjax-packages.js +20 -0
  24. package/dist/cjs/mathjax/mathml-to-svg.js +56 -0
  25. package/dist/cjs/mathjax/tex-to-mathml.js +49 -0
  26. package/dist/cjs/mathjax/tex-to-svg.js +59 -0
  27. package/dist/cjs/schema/groups.js +31 -0
  28. package/dist/cjs/schema/index.js +195 -0
  29. package/dist/cjs/schema/marks.js +159 -0
  30. package/dist/cjs/schema/nodes/attribution.js +32 -0
  31. package/dist/cjs/schema/nodes/bibliography_element.js +44 -0
  32. package/dist/cjs/schema/nodes/bibliography_item.js +101 -0
  33. package/dist/cjs/schema/nodes/bibliography_section.js +46 -0
  34. package/dist/cjs/schema/nodes/blockquote_element.js +62 -0
  35. package/dist/cjs/schema/nodes/caption.js +52 -0
  36. package/dist/cjs/schema/nodes/caption_title.js +51 -0
  37. package/dist/cjs/schema/nodes/citation.js +52 -0
  38. package/dist/cjs/schema/nodes/comment.js +26 -0
  39. package/dist/cjs/schema/nodes/cross_reference.js +58 -0
  40. package/dist/cjs/schema/nodes/doc.js +21 -0
  41. package/dist/cjs/schema/nodes/equation.js +55 -0
  42. package/dist/cjs/schema/nodes/equation_element.js +52 -0
  43. package/dist/cjs/schema/nodes/figcaption.js +31 -0
  44. package/dist/cjs/schema/nodes/figure.js +52 -0
  45. package/dist/cjs/schema/nodes/figure_element.js +78 -0
  46. package/dist/cjs/schema/nodes/footnote.js +67 -0
  47. package/dist/cjs/schema/nodes/footnotes_element.js +54 -0
  48. package/dist/cjs/schema/nodes/footnotes_section.js +45 -0
  49. package/dist/cjs/schema/nodes/graphical_abstract_section.js +46 -0
  50. package/dist/cjs/schema/nodes/hard_break.js +30 -0
  51. package/dist/cjs/schema/nodes/highlight_marker.js +53 -0
  52. package/dist/cjs/schema/nodes/inline_equation.js +58 -0
  53. package/dist/cjs/schema/nodes/inline_footnote.js +51 -0
  54. package/dist/cjs/schema/nodes/keywords_element.js +52 -0
  55. package/dist/cjs/schema/nodes/keywords_section.js +46 -0
  56. package/dist/cjs/schema/nodes/link.js +61 -0
  57. package/dist/cjs/schema/nodes/list.js +121 -0
  58. package/dist/cjs/schema/nodes/listing.js +73 -0
  59. package/dist/cjs/schema/nodes/listing_element.js +52 -0
  60. package/dist/cjs/schema/nodes/manuscript.js +46 -0
  61. package/dist/cjs/schema/nodes/missing_figure.js +50 -0
  62. package/dist/cjs/schema/nodes/paragraph.js +63 -0
  63. package/dist/cjs/schema/nodes/placeholder.js +49 -0
  64. package/dist/cjs/schema/nodes/placeholder_element.js +48 -0
  65. package/dist/cjs/schema/nodes/pullquote_element.js +65 -0
  66. package/dist/cjs/schema/nodes/section.js +94 -0
  67. package/dist/cjs/schema/nodes/section_label.js +30 -0
  68. package/dist/cjs/schema/nodes/section_title.js +48 -0
  69. package/dist/cjs/schema/nodes/table.js +70 -0
  70. package/dist/cjs/schema/nodes/table_col.js +57 -0
  71. package/dist/cjs/schema/nodes/table_element.js +62 -0
  72. package/dist/cjs/schema/nodes/table_row.js +123 -0
  73. package/dist/cjs/schema/nodes/text.js +21 -0
  74. package/dist/cjs/schema/nodes/toc_element.js +52 -0
  75. package/dist/cjs/schema/nodes/toc_section.js +46 -0
  76. package/dist/cjs/schema/types.js +17 -0
  77. package/dist/cjs/tests.js +30 -0
  78. package/dist/cjs/transformer/builders.js +305 -0
  79. package/dist/cjs/transformer/bundles-data.js +36 -0
  80. package/dist/cjs/transformer/bundles.js +32 -0
  81. package/dist/cjs/transformer/decode.js +619 -0
  82. package/dist/cjs/transformer/document-object-types.js +31 -0
  83. package/dist/cjs/transformer/encode.js +545 -0
  84. package/dist/cjs/transformer/filename.js +27 -0
  85. package/dist/cjs/transformer/footnote-category.js +20 -0
  86. package/dist/cjs/transformer/footnotes-order.js +59 -0
  87. package/dist/cjs/transformer/highlight-markers.js +126 -0
  88. package/dist/cjs/transformer/html.js +414 -0
  89. package/dist/cjs/transformer/id.js +28 -0
  90. package/dist/cjs/transformer/index.js +54 -0
  91. package/dist/cjs/transformer/labels.js +85 -0
  92. package/dist/cjs/transformer/manuscript-dependencies.js +74 -0
  93. package/dist/cjs/transformer/model-map.js +26 -0
  94. package/dist/cjs/transformer/models.js +17 -0
  95. package/dist/cjs/transformer/node-names.js +42 -0
  96. package/dist/cjs/transformer/node-title.js +87 -0
  97. package/dist/cjs/transformer/node-types.js +62 -0
  98. package/dist/cjs/transformer/object-types.js +57 -0
  99. package/dist/cjs/transformer/project-bundle.js +86 -0
  100. package/dist/cjs/transformer/section-category.js +222 -0
  101. package/dist/cjs/transformer/serializer.js +23 -0
  102. package/dist/cjs/transformer/shared-data.js +31 -0
  103. package/dist/cjs/transformer/tei-grobid-importer.js +121 -0
  104. package/dist/cjs/transformer/timestamp.js +20 -0
  105. package/dist/cjs/transformer/update-identifiers.js +93 -0
  106. package/dist/cjs/types.js +2 -0
  107. package/dist/es/errors.js +12 -0
  108. package/dist/es/index.js +9 -0
  109. package/dist/es/jats/importer/index.js +16 -0
  110. package/dist/es/jats/importer/jats-body-dom-parser.js +644 -0
  111. package/dist/es/jats/importer/jats-body-transformations.js +266 -0
  112. package/dist/es/jats/importer/jats-comments.js +124 -0
  113. package/dist/es/jats/importer/jats-front-parser.js +335 -0
  114. package/dist/es/jats/importer/jats-journal-meta-parser.js +70 -0
  115. package/dist/es/jats/importer/jats-parser-utils.js +139 -0
  116. package/dist/es/jats/importer/jats-reference-parser.js +177 -0
  117. package/dist/es/jats/importer/parse-jats-article.js +229 -0
  118. package/dist/es/jats/index.js +18 -0
  119. package/dist/es/jats/jats-exporter.js +1561 -0
  120. package/dist/es/jats/jats-versions.js +36 -0
  121. package/dist/es/lib/attributes.js +22 -0
  122. package/dist/es/lib/html.js +43 -0
  123. package/dist/es/lib/styled-content.js +23 -0
  124. package/dist/es/lib/table-cell-styles.js +47 -0
  125. package/dist/es/lib/utils.js +59 -0
  126. package/dist/es/mathjax/index.js +12 -0
  127. package/dist/es/mathjax/mathjax-packages.js +17 -0
  128. package/dist/es/mathjax/mathml-to-svg.js +52 -0
  129. package/dist/es/mathjax/tex-to-mathml.js +45 -0
  130. package/dist/es/mathjax/tex-to-svg.js +55 -0
  131. package/dist/es/schema/groups.js +27 -0
  132. package/dist/es/schema/index.js +178 -0
  133. package/dist/es/schema/marks.js +156 -0
  134. package/dist/es/schema/nodes/attribution.js +29 -0
  135. package/dist/es/schema/nodes/bibliography_element.js +41 -0
  136. package/dist/es/schema/nodes/bibliography_item.js +98 -0
  137. package/dist/es/schema/nodes/bibliography_section.js +42 -0
  138. package/dist/es/schema/nodes/blockquote_element.js +58 -0
  139. package/dist/es/schema/nodes/caption.js +49 -0
  140. package/dist/es/schema/nodes/caption_title.js +48 -0
  141. package/dist/es/schema/nodes/citation.js +48 -0
  142. package/dist/es/schema/nodes/comment.js +23 -0
  143. package/dist/es/schema/nodes/cross_reference.js +55 -0
  144. package/dist/es/schema/nodes/doc.js +18 -0
  145. package/dist/es/schema/nodes/equation.js +52 -0
  146. package/dist/es/schema/nodes/equation_element.js +49 -0
  147. package/dist/es/schema/nodes/figcaption.js +28 -0
  148. package/dist/es/schema/nodes/figure.js +49 -0
  149. package/dist/es/schema/nodes/figure_element.js +74 -0
  150. package/dist/es/schema/nodes/footnote.js +63 -0
  151. package/dist/es/schema/nodes/footnotes_element.js +50 -0
  152. package/dist/es/schema/nodes/footnotes_section.js +41 -0
  153. package/dist/es/schema/nodes/graphical_abstract_section.js +42 -0
  154. package/dist/es/schema/nodes/hard_break.js +27 -0
  155. package/dist/es/schema/nodes/highlight_marker.js +49 -0
  156. package/dist/es/schema/nodes/inline_equation.js +55 -0
  157. package/dist/es/schema/nodes/inline_footnote.js +47 -0
  158. package/dist/es/schema/nodes/keywords_element.js +49 -0
  159. package/dist/es/schema/nodes/keywords_section.js +42 -0
  160. package/dist/es/schema/nodes/link.js +58 -0
  161. package/dist/es/schema/nodes/list.js +117 -0
  162. package/dist/es/schema/nodes/listing.js +69 -0
  163. package/dist/es/schema/nodes/listing_element.js +49 -0
  164. package/dist/es/schema/nodes/manuscript.js +43 -0
  165. package/dist/es/schema/nodes/missing_figure.js +47 -0
  166. package/dist/es/schema/nodes/paragraph.js +59 -0
  167. package/dist/es/schema/nodes/placeholder.js +46 -0
  168. package/dist/es/schema/nodes/placeholder_element.js +45 -0
  169. package/dist/es/schema/nodes/pullquote_element.js +61 -0
  170. package/dist/es/schema/nodes/section.js +90 -0
  171. package/dist/es/schema/nodes/section_label.js +26 -0
  172. package/dist/es/schema/nodes/section_title.js +44 -0
  173. package/dist/es/schema/nodes/table.js +67 -0
  174. package/dist/es/schema/nodes/table_col.js +54 -0
  175. package/dist/es/schema/nodes/table_element.js +59 -0
  176. package/dist/es/schema/nodes/table_row.js +120 -0
  177. package/dist/es/schema/nodes/text.js +18 -0
  178. package/dist/es/schema/nodes/toc_element.js +49 -0
  179. package/dist/es/schema/nodes/toc_section.js +42 -0
  180. package/dist/es/schema/types.js +16 -0
  181. package/dist/es/tests.js +28 -0
  182. package/dist/es/transformer/builders.js +261 -0
  183. package/dist/es/transformer/bundles-data.js +8 -0
  184. package/dist/es/transformer/bundles.js +27 -0
  185. package/dist/es/transformer/decode.js +608 -0
  186. package/dist/es/transformer/document-object-types.js +28 -0
  187. package/dist/es/transformer/encode.js +535 -0
  188. package/dist/es/transformer/filename.js +23 -0
  189. package/dist/es/transformer/footnote-category.js +16 -0
  190. package/dist/es/transformer/footnotes-order.js +53 -0
  191. package/dist/es/transformer/highlight-markers.js +120 -0
  192. package/dist/es/transformer/html.js +407 -0
  193. package/dist/es/transformer/id.js +23 -0
  194. package/dist/es/transformer/index.js +38 -0
  195. package/dist/es/transformer/labels.js +81 -0
  196. package/dist/es/transformer/manuscript-dependencies.js +64 -0
  197. package/dist/es/transformer/model-map.js +22 -0
  198. package/dist/es/transformer/models.js +16 -0
  199. package/dist/es/transformer/node-names.js +39 -0
  200. package/dist/es/transformer/node-title.js +82 -0
  201. package/dist/es/transformer/node-types.js +55 -0
  202. package/dist/es/transformer/object-types.js +52 -0
  203. package/dist/es/transformer/project-bundle.js +77 -0
  204. package/dist/es/transformer/section-category.js +210 -0
  205. package/dist/es/transformer/serializer.js +17 -0
  206. package/dist/es/transformer/shared-data.js +1 -0
  207. package/dist/es/transformer/tei-grobid-importer.js +115 -0
  208. package/dist/es/transformer/timestamp.js +16 -0
  209. package/dist/es/transformer/update-identifiers.js +87 -0
  210. package/dist/es/types.js +1 -0
  211. package/dist/types/errors.d.ts +6 -0
  212. package/dist/types/index.d.ts +9 -0
  213. package/dist/types/jats/importer/index.d.ts +16 -0
  214. package/dist/types/jats/importer/jats-body-dom-parser.d.ts +24 -0
  215. package/dist/types/jats/importer/jats-body-transformations.d.ts +31 -0
  216. package/dist/types/jats/importer/jats-comments.d.ts +26 -0
  217. package/dist/types/jats/importer/jats-front-parser.d.ts +62 -0
  218. package/dist/types/jats/importer/jats-journal-meta-parser.d.ts +37 -0
  219. package/dist/types/jats/importer/jats-parser-utils.d.ts +23 -0
  220. package/dist/types/jats/importer/jats-reference-parser.d.ts +23 -0
  221. package/dist/types/jats/importer/parse-jats-article.d.ts +30 -0
  222. package/dist/types/jats/index.d.ts +18 -0
  223. package/dist/types/jats/jats-exporter.d.ts +72 -0
  224. package/dist/types/jats/jats-versions.d.ts +23 -0
  225. package/dist/types/lib/attributes.d.ts +20 -0
  226. package/dist/types/lib/html.d.ts +17 -0
  227. package/dist/types/lib/styled-content.d.ts +22 -0
  228. package/dist/types/lib/table-cell-styles.d.ts +27 -0
  229. package/dist/types/lib/utils.d.ts +26 -0
  230. package/dist/types/mathjax/index.d.ts +3 -0
  231. package/dist/types/mathjax/mathjax-packages.d.ts +16 -0
  232. package/dist/types/mathjax/mathml-to-svg.d.ts +17 -0
  233. package/dist/types/mathjax/tex-to-mathml.d.ts +17 -0
  234. package/dist/types/mathjax/tex-to-svg.d.ts +17 -0
  235. package/dist/types/schema/groups.d.ts +22 -0
  236. package/dist/types/schema/index.d.ts +65 -0
  237. package/dist/types/schema/marks.d.ts +27 -0
  238. package/dist/types/schema/nodes/attribution.d.ts +21 -0
  239. package/dist/types/schema/nodes/bibliography_element.d.ts +26 -0
  240. package/dist/types/schema/nodes/bibliography_item.d.ts +36 -0
  241. package/dist/types/schema/nodes/bibliography_section.d.ts +26 -0
  242. package/dist/types/schema/nodes/blockquote_element.d.ts +28 -0
  243. package/dist/types/schema/nodes/caption.d.ts +25 -0
  244. package/dist/types/schema/nodes/caption_title.d.ts +25 -0
  245. package/dist/types/schema/nodes/citation.d.ts +27 -0
  246. package/dist/types/schema/nodes/comment.d.ts +31 -0
  247. package/dist/types/schema/nodes/cross_reference.d.ts +26 -0
  248. package/dist/types/schema/nodes/doc.d.ts +17 -0
  249. package/dist/types/schema/nodes/equation.d.ts +28 -0
  250. package/dist/types/schema/nodes/equation_element.d.ts +29 -0
  251. package/dist/types/schema/nodes/figcaption.d.ts +21 -0
  252. package/dist/types/schema/nodes/figure.d.ts +25 -0
  253. package/dist/types/schema/nodes/figure_element.d.ts +44 -0
  254. package/dist/types/schema/nodes/footnote.d.ts +32 -0
  255. package/dist/types/schema/nodes/footnotes_element.d.ts +28 -0
  256. package/dist/types/schema/nodes/footnotes_section.d.ts +26 -0
  257. package/dist/types/schema/nodes/graphical_abstract_section.d.ts +26 -0
  258. package/dist/types/schema/nodes/hard_break.d.ts +21 -0
  259. package/dist/types/schema/nodes/highlight_marker.d.ts +29 -0
  260. package/dist/types/schema/nodes/inline_equation.d.ts +28 -0
  261. package/dist/types/schema/nodes/inline_footnote.d.ts +27 -0
  262. package/dist/types/schema/nodes/keywords_element.d.ts +27 -0
  263. package/dist/types/schema/nodes/keywords_section.d.ts +26 -0
  264. package/dist/types/schema/nodes/link.d.ts +26 -0
  265. package/dist/types/schema/nodes/list.d.ts +39 -0
  266. package/dist/types/schema/nodes/listing.d.ts +33 -0
  267. package/dist/types/schema/nodes/listing_element.d.ts +29 -0
  268. package/dist/types/schema/nodes/manuscript.d.ts +23 -0
  269. package/dist/types/schema/nodes/missing_figure.d.ts +23 -0
  270. package/dist/types/schema/nodes/paragraph.d.ts +30 -0
  271. package/dist/types/schema/nodes/placeholder.d.ts +26 -0
  272. package/dist/types/schema/nodes/placeholder_element.d.ts +25 -0
  273. package/dist/types/schema/nodes/pullquote_element.d.ts +28 -0
  274. package/dist/types/schema/nodes/section.d.ts +36 -0
  275. package/dist/types/schema/nodes/section_label.d.ts +22 -0
  276. package/dist/types/schema/nodes/section_title.d.ts +22 -0
  277. package/dist/types/schema/nodes/table.d.ts +27 -0
  278. package/dist/types/schema/nodes/table_col.d.ts +24 -0
  279. package/dist/types/schema/nodes/table_element.d.ts +35 -0
  280. package/dist/types/schema/nodes/table_row.d.ts +41 -0
  281. package/dist/types/schema/nodes/text.d.ts +17 -0
  282. package/dist/types/schema/nodes/toc_element.d.ts +27 -0
  283. package/dist/types/schema/nodes/toc_section.d.ts +26 -0
  284. package/dist/types/schema/types.d.ts +45 -0
  285. package/dist/types/tests.d.ts +16 -0
  286. package/dist/types/transformer/builders.d.ts +74 -0
  287. package/dist/types/transformer/bundles-data.d.ts +3 -0
  288. package/dist/types/transformer/bundles.d.ts +3 -0
  289. package/dist/types/transformer/decode.d.ts +38 -0
  290. package/dist/types/transformer/document-object-types.d.ts +17 -0
  291. package/dist/types/transformer/encode.d.ts +29 -0
  292. package/dist/types/transformer/filename.d.ts +16 -0
  293. package/dist/types/transformer/footnote-category.d.ts +17 -0
  294. package/dist/types/transformer/footnotes-order.d.ts +23 -0
  295. package/dist/types/transformer/highlight-markers.d.ts +26 -0
  296. package/dist/types/transformer/html.d.ts +36 -0
  297. package/dist/types/transformer/id.d.ts +20 -0
  298. package/dist/types/transformer/index.d.ts +38 -0
  299. package/dist/types/transformer/labels.d.ts +24 -0
  300. package/dist/types/transformer/manuscript-dependencies.d.ts +12 -0
  301. package/dist/types/transformer/model-map.d.ts +19 -0
  302. package/dist/types/transformer/models.d.ts +48 -0
  303. package/dist/types/transformer/node-names.d.ts +17 -0
  304. package/dist/types/transformer/node-title.d.ts +19 -0
  305. package/dist/types/transformer/node-types.d.ts +22 -0
  306. package/dist/types/transformer/object-types.d.ts +29 -0
  307. package/dist/types/transformer/project-bundle.d.ts +30 -0
  308. package/dist/types/transformer/section-category.d.ts +28 -0
  309. package/dist/types/transformer/serializer.d.ts +19 -0
  310. package/dist/types/transformer/shared-data.d.ts +2 -0
  311. package/dist/types/transformer/tei-grobid-importer.d.ts +20 -0
  312. package/dist/types/transformer/timestamp.d.ts +16 -0
  313. package/dist/types/transformer/update-identifiers.d.ts +23 -0
  314. package/dist/types/types.d.ts +2 -0
  315. package/package.json +89 -0
@@ -0,0 +1,180 @@
1
+ "use strict";
2
+ /*!
3
+ * © 2020 Atypon Systems LLC
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.jatsReferenceParser = void 0;
19
+ const builders_1 = require("../../transformer/builders");
20
+ const jats_comments_1 = require("./jats-comments");
21
+ const jats_parser_utils_1 = require("./jats-parser-utils");
22
+ const chooseBibliographyItemType = (publicationType) => {
23
+ switch (publicationType) {
24
+ case 'book':
25
+ case 'thesis':
26
+ return publicationType;
27
+ case 'journal':
28
+ default:
29
+ return 'article-journal';
30
+ }
31
+ };
32
+ exports.jatsReferenceParser = {
33
+ parseReferences(referenceNodes, createElement) {
34
+ const referenceIDs = new Map();
35
+ const referenceQueries = new Map();
36
+ const references = referenceNodes.map((referenceNode) => {
37
+ var _a, _b, _c, _d, _e, _f, _g, _h;
38
+ const publicationType = referenceNode.getAttribute('publication-type');
39
+ const authorNodes = [
40
+ ...referenceNode.querySelectorAll('person-group[person-group-type="author"] > *'),
41
+ ];
42
+ const bibliographyItem = (0, builders_1.buildBibliographyItem)({
43
+ type: chooseBibliographyItemType(publicationType),
44
+ });
45
+ const titleNode = referenceNode.querySelector('article-title');
46
+ if (titleNode) {
47
+ bibliographyItem.title = (0, jats_parser_utils_1.htmlFromJatsNode)(titleNode, createElement);
48
+ }
49
+ const queriesText = [];
50
+ const mixedCitation = referenceNode.querySelector('mixed-citation');
51
+ mixedCitation === null || mixedCitation === void 0 ? void 0 : mixedCitation.childNodes.forEach((item) => {
52
+ if (item.nodeType === item.PROCESSING_INSTRUCTION_NODE &&
53
+ item.nodeName === 'AuthorQuery') {
54
+ const instruction = (0, jats_comments_1.parseProcessingInstruction)(item);
55
+ if (instruction) {
56
+ const { queryText } = instruction;
57
+ queriesText.push(queryText);
58
+ }
59
+ }
60
+ });
61
+ if (queriesText.length) {
62
+ referenceQueries.set(bibliographyItem._id, queriesText);
63
+ }
64
+ if (authorNodes.length <= 0) {
65
+ mixedCitation === null || mixedCitation === void 0 ? void 0 : mixedCitation.childNodes.forEach((item) => {
66
+ var _a, _b;
67
+ if (item.nodeType === Node.TEXT_NODE &&
68
+ ((_a = item.textContent) === null || _a === void 0 ? void 0 : _a.match(/[A-Za-z]+/g))) {
69
+ bibliographyItem.literal = (_b = mixedCitation.textContent) !== null && _b !== void 0 ? _b : '';
70
+ return bibliographyItem;
71
+ }
72
+ });
73
+ }
74
+ const source = (_a = referenceNode.querySelector('source')) === null || _a === void 0 ? void 0 : _a.textContent;
75
+ if (source) {
76
+ bibliographyItem['container-title'] = source;
77
+ }
78
+ const volume = (_b = referenceNode.querySelector('volume')) === null || _b === void 0 ? void 0 : _b.textContent;
79
+ if (volume) {
80
+ bibliographyItem.volume = volume;
81
+ }
82
+ const issue = (_c = referenceNode.querySelector('issue')) === null || _c === void 0 ? void 0 : _c.textContent;
83
+ if (issue) {
84
+ bibliographyItem.issue = issue;
85
+ }
86
+ const supplement = (_d = referenceNode.querySelector('supplement')) === null || _d === void 0 ? void 0 : _d.textContent;
87
+ if (supplement) {
88
+ bibliographyItem.supplement = supplement;
89
+ }
90
+ const fpage = (_e = referenceNode.querySelector('fpage')) === null || _e === void 0 ? void 0 : _e.textContent;
91
+ const lpage = (_f = referenceNode.querySelector('lpage')) === null || _f === void 0 ? void 0 : _f.textContent;
92
+ if (fpage) {
93
+ bibliographyItem.page = lpage ? `${fpage}-${lpage}` : fpage;
94
+ }
95
+ const year = (_g = referenceNode.querySelector('year')) === null || _g === void 0 ? void 0 : _g.textContent;
96
+ if (year) {
97
+ bibliographyItem.issued = (0, builders_1.buildBibliographicDate)({
98
+ 'date-parts': [[year]],
99
+ });
100
+ }
101
+ const doi = (_h = referenceNode.querySelector('pub-id[pub-id-type="doi"]')) === null || _h === void 0 ? void 0 : _h.textContent;
102
+ if (doi) {
103
+ bibliographyItem.DOI = doi;
104
+ }
105
+ const authors = [];
106
+ authorNodes.forEach((authorNode) => {
107
+ var _a, _b, _c;
108
+ const name = (0, builders_1.buildBibliographicName)({});
109
+ const given = (_a = authorNode.querySelector('given-names')) === null || _a === void 0 ? void 0 : _a.textContent;
110
+ if (given) {
111
+ name.given = given;
112
+ }
113
+ const family = (_b = authorNode.querySelector('surname')) === null || _b === void 0 ? void 0 : _b.textContent;
114
+ if (family) {
115
+ name.family = family;
116
+ }
117
+ const suffix = (_c = authorNode.querySelector('suffix')) === null || _c === void 0 ? void 0 : _c.textContent;
118
+ if (suffix) {
119
+ name.suffix = suffix;
120
+ }
121
+ if (authorNode.nodeName === 'collab') {
122
+ name.literal = authorNode.textContent;
123
+ }
124
+ authors.push(name);
125
+ });
126
+ if (authors.length) {
127
+ bibliographyItem.author = authors;
128
+ }
129
+ const id = referenceNode.getAttribute('id');
130
+ if (id) {
131
+ referenceIDs.set(id, bibliographyItem._id);
132
+ }
133
+ return bibliographyItem;
134
+ });
135
+ return {
136
+ references,
137
+ referenceIDs,
138
+ referenceQueries,
139
+ };
140
+ },
141
+ parseCrossReferences(crossReferenceNodes, referenceIDs) {
142
+ return (0, jats_parser_utils_1.flatten)(crossReferenceNodes.map((crossReferenceNode) => {
143
+ const rid = crossReferenceNode.getAttribute('rid');
144
+ if (!rid) {
145
+ return [];
146
+ }
147
+ const modelNodes = [];
148
+ const refType = crossReferenceNode.getAttribute('ref-type');
149
+ switch (refType) {
150
+ case 'bibr':
151
+ {
152
+ const rids = rid
153
+ .split(/\s+/)
154
+ .filter((id) => referenceIDs.has(id))
155
+ .map((id) => referenceIDs.get(id));
156
+ if (rids.length) {
157
+ const citation = (0, builders_1.buildCitation)('', rids);
158
+ modelNodes.push(citation);
159
+ crossReferenceNode.setAttribute('rid', citation._id);
160
+ }
161
+ else {
162
+ crossReferenceNode.removeAttribute('rid');
163
+ }
164
+ }
165
+ break;
166
+ case 'fn':
167
+ break;
168
+ default:
169
+ {
170
+ const rids = rid.trim().split(/\s+/);
171
+ const auxiliaryObjectReference = (0, builders_1.buildAuxiliaryObjectReference)('', rids);
172
+ modelNodes.push(auxiliaryObjectReference);
173
+ crossReferenceNode.setAttribute('rid', auxiliaryObjectReference._id);
174
+ }
175
+ break;
176
+ }
177
+ return modelNodes;
178
+ }));
179
+ },
180
+ };
@@ -0,0 +1,237 @@
1
+ "use strict";
2
+ /*!
3
+ * © 2020 Atypon Systems LLC
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.getElementsOrder = exports.parseJATSArticle = exports.parseJATSBody = exports.parseJATSReferences = exports.parseJATSFront = void 0;
19
+ const prosemirror_model_1 = require("prosemirror-model");
20
+ const errors_1 = require("../../errors");
21
+ const html_1 = require("../../lib/html");
22
+ const schema_1 = require("../../schema");
23
+ const transformer_1 = require("../../transformer");
24
+ const builders_1 = require("../../transformer/builders");
25
+ const encode_1 = require("../../transformer/encode");
26
+ const footnotes_order_1 = require("../../transformer/footnotes-order");
27
+ const id_1 = require("../../transformer/id");
28
+ const project_bundle_1 = require("../../transformer/project-bundle");
29
+ const jats_body_dom_parser_1 = require("./jats-body-dom-parser");
30
+ const jats_body_transformations_1 = require("./jats-body-transformations");
31
+ const jats_comments_1 = require("./jats-comments");
32
+ const jats_front_parser_1 = require("./jats-front-parser");
33
+ const jats_parser_utils_1 = require("./jats-parser-utils");
34
+ const jats_reference_parser_1 = require("./jats-reference-parser");
35
+ const parser = prosemirror_model_1.DOMParser.fromSchema(schema_1.schema);
36
+ const inlineContentsFromJATSTitle = (htmlTitle) => {
37
+ const node = (0, html_1.nodeFromHTML)(`<h1>${htmlTitle}</h1>`);
38
+ if (node) {
39
+ const titleNode = parser.parse(node, {
40
+ topNode: schema_1.schema.nodes.section_title.create(),
41
+ });
42
+ return (0, encode_1.inlineContents)(titleNode);
43
+ }
44
+ throw new errors_1.InvalidInput('Invalid title content for: ' + htmlTitle);
45
+ };
46
+ const parseJATSFront = async (front) => {
47
+ var _a, _b, _c;
48
+ const journalMeta = jats_front_parser_1.jatsFrontParser.parseJournal(front.querySelector('journal-meta'));
49
+ const journal = Object.assign(Object.assign({}, (0, builders_1.buildJournal)()), journalMeta);
50
+ const { manuscript_bundle, bundleNodes } = await jats_front_parser_1.jatsFrontParser.loadJournalBundles(journal.ISSNs);
51
+ const articleMeta = front.querySelector('article-meta');
52
+ const title = (_a = articleMeta === null || articleMeta === void 0 ? void 0 : articleMeta.querySelector('title-group > article-title')) === null || _a === void 0 ? void 0 : _a.innerHTML;
53
+ const subtitle = (_b = articleMeta === null || articleMeta === void 0 ? void 0 : articleMeta.querySelector('title-group > subtitle')) === null || _b === void 0 ? void 0 : _b.innerHTML;
54
+ const runningTitle = (_c = articleMeta === null || articleMeta === void 0 ? void 0 : articleMeta.querySelector('title-group > alt-title[alt-title-type="right-running"]')) === null || _c === void 0 ? void 0 : _c.innerHTML;
55
+ const manuscriptMeta = Object.assign({ title: title ? inlineContentsFromJATSTitle(title) : undefined, subtitle: subtitle ? inlineContentsFromJATSTitle(subtitle) : undefined, runningTitle: runningTitle
56
+ ? inlineContentsFromJATSTitle(runningTitle)
57
+ : undefined }, jats_front_parser_1.jatsFrontParser.parseCounts(articleMeta === null || articleMeta === void 0 ? void 0 : articleMeta.querySelector('counts')));
58
+ const keywordGroupNodes = articleMeta === null || articleMeta === void 0 ? void 0 : articleMeta.querySelectorAll('kwd-group');
59
+ const { keywords, groups: keywordGroups } = jats_front_parser_1.jatsFrontParser.parseKeywords(keywordGroupNodes);
60
+ const manuscript_keywordIDs = keywords.length > 0 ? keywords.map((k) => k._id) : undefined;
61
+ const { affiliations, affiliationIDs } = jats_front_parser_1.jatsFrontParser.parseAffiliationNodes([
62
+ ...front.querySelectorAll('article-meta > contrib-group > aff'),
63
+ ]);
64
+ const { footnotes, footnoteIDs } = jats_front_parser_1.jatsFrontParser.parseFootnoteNodes([
65
+ ...front.querySelectorAll('article-meta > author-notes > fn:not([fn-type])'),
66
+ ]);
67
+ const { correspondingList, correspondingIDs } = jats_front_parser_1.jatsFrontParser.parseCorrespNodes([
68
+ ...front.querySelectorAll('article-meta > author-notes > corresp'),
69
+ ]);
70
+ const authors = jats_front_parser_1.jatsFrontParser.parseAuthorNodes([
71
+ ...front.querySelectorAll('article-meta > contrib-group > contrib[contrib-type="author"]'),
72
+ ], affiliationIDs, footnoteIDs, correspondingIDs);
73
+ const history = jats_front_parser_1.jatsFrontParser.parseDates(front.querySelector('article-meta > history'));
74
+ const supplements = jats_front_parser_1.jatsFrontParser.parseSupplements([
75
+ ...front.querySelectorAll('article-meta > supplementary-material'),
76
+ ]);
77
+ const manuscript = Object.assign(Object.assign(Object.assign(Object.assign({}, (0, builders_1.buildManuscript)()), manuscriptMeta), { bundle: manuscript_bundle, keywordIDs: manuscript_keywordIDs }), history);
78
+ return {
79
+ models: generateModelIDs([
80
+ manuscript,
81
+ ...bundleNodes,
82
+ ...keywords,
83
+ ...affiliations,
84
+ ...authors,
85
+ ...keywordGroups,
86
+ ...footnotes,
87
+ ...correspondingList,
88
+ journal,
89
+ ...supplements,
90
+ ]),
91
+ bundles: bundleNodes,
92
+ };
93
+ };
94
+ exports.parseJATSFront = parseJATSFront;
95
+ const parseJATSReferences = (back, body, createElement) => {
96
+ const bibliographyItems = [];
97
+ const crossReferences = [];
98
+ let referenceQueriesMap;
99
+ let referenceIdsMap;
100
+ if (back) {
101
+ const { references, referenceIDs, referenceQueries } = jats_reference_parser_1.jatsReferenceParser.parseReferences([...back.querySelectorAll('ref-list > ref')], createElement);
102
+ bibliographyItems.push(...references);
103
+ referenceQueriesMap = new Map([...referenceQueries]);
104
+ referenceIdsMap = new Map([...referenceIDs]);
105
+ if (body) {
106
+ crossReferences.push(...jats_reference_parser_1.jatsReferenceParser.parseCrossReferences([...body.querySelectorAll('xref')], referenceIDs));
107
+ }
108
+ }
109
+ return {
110
+ references: generateModelIDs(bibliographyItems),
111
+ crossReferences: generateModelIDs(crossReferences),
112
+ referenceQueriesMap,
113
+ referenceIdsMap,
114
+ };
115
+ };
116
+ exports.parseJATSReferences = parseJATSReferences;
117
+ const parseJATSBody = (document, body, bibliographyItems, refModels, referenceIdsMap, footnotesOrder) => {
118
+ const createElement = createElementFn(document);
119
+ const orderedFootnotesIDs = (0, footnotes_order_1.createOrderedFootnotesIDs)(document);
120
+ jats_body_transformations_1.jatsBodyTransformations.moveFloatsGroupToBody(document, body, createElement);
121
+ jats_body_transformations_1.jatsBodyTransformations.ensureSection(body, createElement);
122
+ jats_body_transformations_1.jatsBodyTransformations.mapFootnotesToSections(document, body, createElement);
123
+ jats_body_transformations_1.jatsBodyTransformations.moveSectionsToBody(document, body, bibliographyItems, createElement);
124
+ jats_body_transformations_1.jatsBodyTransformations.moveCaptionsToEnd(body);
125
+ jats_body_transformations_1.jatsBodyTransformations.moveTableFooterToEnd(body);
126
+ jats_body_transformations_1.jatsBodyTransformations.moveBlockNodesFromParagraph(document, body, createElement);
127
+ const node = jats_body_dom_parser_1.jatsBodyDOMParser.parse(body);
128
+ if (!node.firstChild) {
129
+ throw new Error('No content was parsed from the JATS article body');
130
+ }
131
+ const { replacements } = (0, jats_parser_utils_1.fixBodyPMNode)(node.firstChild, refModels, referenceIdsMap);
132
+ if (footnotesOrder) {
133
+ (0, footnotes_order_1.handleFootnotesOrder)(orderedFootnotesIDs, replacements, footnotesOrder);
134
+ }
135
+ return node.firstChild;
136
+ };
137
+ exports.parseJATSBody = parseJATSBody;
138
+ const transformTables = (tables, createElement) => {
139
+ tables.forEach((table) => {
140
+ const colgroup = table.querySelector('colgroup');
141
+ const cols = table.querySelectorAll('col');
142
+ if (!colgroup && table.firstChild && cols.length > 0) {
143
+ const colgroup = createElement('colgroup');
144
+ for (const col of cols) {
145
+ colgroup.appendChild(col);
146
+ }
147
+ table.insertBefore(colgroup, table.firstChild);
148
+ }
149
+ const tbody = table.querySelector('tbody');
150
+ if (tbody) {
151
+ const headerRow = table.querySelector('thead > tr');
152
+ if (!headerRow) {
153
+ const tr = createElement('tr');
154
+ tbody.insertBefore(tr, tbody.firstElementChild);
155
+ }
156
+ const footerRow = table.querySelector('tfoot > tr');
157
+ if (!footerRow) {
158
+ const tr = createElement('tr');
159
+ tbody.appendChild(tr);
160
+ }
161
+ }
162
+ });
163
+ };
164
+ const createElementFn = (doc) => (tagName) => doc.createElement(tagName);
165
+ const generateModelIDs = (models) => models.map((m) => m._id ? m : Object.assign(Object.assign({}, m), { _id: (0, id_1.generateID)(m.objectType) }));
166
+ const parseJATSArticle = async (doc) => {
167
+ const articleElement = doc.querySelector('article');
168
+ const front = doc.querySelector('front');
169
+ const body = doc.querySelector('body');
170
+ const back = doc.querySelector('back');
171
+ if (!front) {
172
+ throw new errors_1.InvalidInput('Invalid JATS format! Missing front element');
173
+ }
174
+ if (!articleElement) {
175
+ throw new errors_1.InvalidInput('Invalid JATS format! Missing article element');
176
+ }
177
+ const authorQueriesMap = (0, jats_comments_1.markProcessingInstructions)(doc);
178
+ const createElement = createElementFn(document);
179
+ const { models: frontModels } = await (0, exports.parseJATSFront)(front);
180
+ const { references, crossReferences, referenceQueriesMap, referenceIdsMap } = (0, exports.parseJATSReferences)(back, body, createElement);
181
+ transformTables(doc.querySelectorAll('table-wrap > table'), createElement);
182
+ const footnotesOrder = (0, footnotes_order_1.createEmptyFootnotesOrder)();
183
+ let elementsOrder = [];
184
+ const bodyModels = [];
185
+ if (body) {
186
+ const bodyDoc = (0, exports.parseJATSBody)(doc, body, references, crossReferences, referenceIdsMap, footnotesOrder);
187
+ bodyModels.push(...(0, encode_1.encode)(bodyDoc).values());
188
+ elementsOrder = (0, exports.getElementsOrder)(bodyDoc);
189
+ }
190
+ const frontModelsMap = new Map(frontModels.map((model) => [model._id, model]));
191
+ const manuscript = (0, project_bundle_1.findManuscript)(frontModelsMap);
192
+ if (manuscript) {
193
+ const articleType = articleElement.getAttribute('article-type');
194
+ manuscript.articleType = articleType || 'other';
195
+ }
196
+ const models = [
197
+ ...frontModels,
198
+ ...bodyModels,
199
+ ...crossReferences,
200
+ ...elementsOrder,
201
+ ];
202
+ if (footnotesOrder.footnotesList.length > 0) {
203
+ models.push(footnotesOrder);
204
+ }
205
+ if (authorQueriesMap.size) {
206
+ const commentAnnotations = (0, jats_comments_1.createComments)(authorQueriesMap, models);
207
+ models.push(...commentAnnotations);
208
+ }
209
+ if (referenceQueriesMap && referenceQueriesMap.size) {
210
+ const commentAnnotations = (0, jats_comments_1.createReferenceComments)(referenceQueriesMap, references);
211
+ models.push(...commentAnnotations);
212
+ }
213
+ return models;
214
+ };
215
+ exports.parseJATSArticle = parseJATSArticle;
216
+ const getElementsOrder = (node) => {
217
+ const elementsOrderIndex = new Map();
218
+ const models = [];
219
+ node.descendants((child) => {
220
+ const type = child.type;
221
+ if (transformer_1.auxiliaryObjectTypes.has(type)) {
222
+ const index = elementsOrderIndex.get(type);
223
+ if (index !== undefined) {
224
+ const elementsOrder = models[index];
225
+ elementsOrder.elements.push(child.attrs['id']);
226
+ }
227
+ else {
228
+ const elementsOrder = (0, builders_1.buildElementsOrder)(transformer_1.nodeTypesMap.get(type));
229
+ elementsOrder.elements.push(child.attrs['id']);
230
+ models.push(elementsOrder);
231
+ elementsOrderIndex.set(type, elementsOrderIndex.size);
232
+ }
233
+ }
234
+ });
235
+ return models;
236
+ };
237
+ exports.getElementsOrder = getElementsOrder;
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ /*!
3
+ * © 2020 Atypon Systems LLC
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
18
+ if (k2 === undefined) k2 = k;
19
+ var desc = Object.getOwnPropertyDescriptor(m, k);
20
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
21
+ desc = { enumerable: true, get: function() { return m[k]; } };
22
+ }
23
+ Object.defineProperty(o, k2, desc);
24
+ }) : (function(o, m, k, k2) {
25
+ if (k2 === undefined) k2 = k;
26
+ o[k2] = m[k];
27
+ }));
28
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
29
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
30
+ };
31
+ Object.defineProperty(exports, "__esModule", { value: true });
32
+ exports.getElementsOrder = exports.parseJATSArticle = exports.parseJATSBody = exports.parseJATSReferences = exports.parseJATSFront = void 0;
33
+ var importer_1 = require("./importer");
34
+ Object.defineProperty(exports, "parseJATSFront", { enumerable: true, get: function () { return importer_1.parseJATSFront; } });
35
+ Object.defineProperty(exports, "parseJATSReferences", { enumerable: true, get: function () { return importer_1.parseJATSReferences; } });
36
+ Object.defineProperty(exports, "parseJATSBody", { enumerable: true, get: function () { return importer_1.parseJATSBody; } });
37
+ Object.defineProperty(exports, "parseJATSArticle", { enumerable: true, get: function () { return importer_1.parseJATSArticle; } });
38
+ Object.defineProperty(exports, "getElementsOrder", { enumerable: true, get: function () { return importer_1.getElementsOrder; } });
39
+ __exportStar(require("./jats-exporter"), exports);
40
+ __exportStar(require("./jats-versions"), exports);