@fiduswriter/document 0.1.0-alpha.4 → 0.1.0-alpha.6

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 (550) hide show
  1. package/dist/bibliography/common.d.ts +9 -91
  2. package/dist/bibliography/common.d.ts.map +1 -1
  3. package/dist/bibliography/common.js +3 -2
  4. package/dist/bibliography/common.js.map +1 -1
  5. package/dist/bibliography/csl_bib.d.ts +1 -1
  6. package/dist/bibliography/csl_bib.d.ts.map +1 -1
  7. package/dist/bibliography/csl_bib.js +7 -7
  8. package/dist/bibliography/csl_bib.js.map +1 -1
  9. package/dist/citations/citeproc_sys.d.ts +9 -10
  10. package/dist/citations/citeproc_sys.d.ts.map +1 -1
  11. package/dist/citations/citeproc_sys.js +6 -1
  12. package/dist/citations/citeproc_sys.js.map +1 -1
  13. package/dist/citations/format.d.ts +33 -16
  14. package/dist/citations/format.d.ts.map +1 -1
  15. package/dist/citations/format.js +29 -4
  16. package/dist/citations/format.js.map +1 -1
  17. package/dist/editor/e2ee/encryptor.d.ts +35 -35
  18. package/dist/editor/e2ee/encryptor.d.ts.map +1 -1
  19. package/dist/editor/e2ee/encryptor.js +31 -31
  20. package/dist/editor/e2ee/encryptor.js.map +1 -1
  21. package/dist/exporter/docx/citations.d.ts +27 -17
  22. package/dist/exporter/docx/citations.d.ts.map +1 -1
  23. package/dist/exporter/docx/citations.js +24 -7
  24. package/dist/exporter/docx/citations.js.map +1 -1
  25. package/dist/exporter/docx/comments.d.ts +15 -11
  26. package/dist/exporter/docx/comments.d.ts.map +1 -1
  27. package/dist/exporter/docx/comments.js +47 -14
  28. package/dist/exporter/docx/comments.js.map +1 -1
  29. package/dist/exporter/docx/footnotes.d.ts +36 -31
  30. package/dist/exporter/docx/footnotes.d.ts.map +1 -1
  31. package/dist/exporter/docx/footnotes.js +46 -12
  32. package/dist/exporter/docx/footnotes.js.map +1 -1
  33. package/dist/exporter/docx/images.d.ts +23 -12
  34. package/dist/exporter/docx/images.d.ts.map +1 -1
  35. package/dist/exporter/docx/images.js +35 -20
  36. package/dist/exporter/docx/images.js.map +1 -1
  37. package/dist/exporter/docx/index.d.ts +11 -17
  38. package/dist/exporter/docx/index.d.ts.map +1 -1
  39. package/dist/exporter/docx/index.js +15 -7
  40. package/dist/exporter/docx/index.js.map +1 -1
  41. package/dist/exporter/docx/lists.d.ts +27 -22
  42. package/dist/exporter/docx/lists.d.ts.map +1 -1
  43. package/dist/exporter/docx/lists.js +77 -30
  44. package/dist/exporter/docx/lists.js.map +1 -1
  45. package/dist/exporter/docx/math.d.ts +9 -9
  46. package/dist/exporter/docx/math.d.ts.map +1 -1
  47. package/dist/exporter/docx/math.js +22 -5
  48. package/dist/exporter/docx/math.js.map +1 -1
  49. package/dist/exporter/docx/metadata.d.ts +12 -9
  50. package/dist/exporter/docx/metadata.d.ts.map +1 -1
  51. package/dist/exporter/docx/metadata.js +59 -26
  52. package/dist/exporter/docx/metadata.js.map +1 -1
  53. package/dist/exporter/docx/rels.d.ts +14 -12
  54. package/dist/exporter/docx/rels.d.ts.map +1 -1
  55. package/dist/exporter/docx/rels.js +37 -22
  56. package/dist/exporter/docx/rels.js.map +1 -1
  57. package/dist/exporter/docx/render.d.ts +17 -15
  58. package/dist/exporter/docx/render.d.ts.map +1 -1
  59. package/dist/exporter/docx/render.js +37 -31
  60. package/dist/exporter/docx/render.js.map +1 -1
  61. package/dist/exporter/docx/richtext.d.ts +8 -8
  62. package/dist/exporter/docx/richtext.d.ts.map +1 -1
  63. package/dist/exporter/docx/richtext.js +61 -43
  64. package/dist/exporter/docx/richtext.js.map +1 -1
  65. package/dist/exporter/docx/tables.d.ts +11 -9
  66. package/dist/exporter/docx/tables.d.ts.map +1 -1
  67. package/dist/exporter/docx/tables.js +16 -10
  68. package/dist/exporter/docx/tables.js.map +1 -1
  69. package/dist/exporter/docx/tools.d.ts +3 -2
  70. package/dist/exporter/docx/tools.d.ts.map +1 -1
  71. package/dist/exporter/docx/tools.js +3 -3
  72. package/dist/exporter/docx/tools.js.map +1 -1
  73. package/dist/exporter/epub/index.d.ts +11 -3
  74. package/dist/exporter/epub/index.d.ts.map +1 -1
  75. package/dist/exporter/epub/index.js +10 -3
  76. package/dist/exporter/epub/index.js.map +1 -1
  77. package/dist/exporter/epub/templates.d.ts +62 -31
  78. package/dist/exporter/epub/templates.d.ts.map +1 -1
  79. package/dist/exporter/epub/templates.js +1 -1
  80. package/dist/exporter/epub/templates.js.map +1 -1
  81. package/dist/exporter/epub/tools.d.ts +12 -4
  82. package/dist/exporter/epub/tools.d.ts.map +1 -1
  83. package/dist/exporter/epub/tools.js +14 -13
  84. package/dist/exporter/epub/tools.js.map +1 -1
  85. package/dist/exporter/html/citations.d.ts +17 -15
  86. package/dist/exporter/html/citations.d.ts.map +1 -1
  87. package/dist/exporter/html/citations.js +37 -18
  88. package/dist/exporter/html/citations.js.map +1 -1
  89. package/dist/exporter/html/convert.d.ts +20 -70
  90. package/dist/exporter/html/convert.d.ts.map +1 -1
  91. package/dist/exporter/html/convert.js +74 -42
  92. package/dist/exporter/html/convert.js.map +1 -1
  93. package/dist/exporter/html/index.d.ts +55 -52
  94. package/dist/exporter/html/index.d.ts.map +1 -1
  95. package/dist/exporter/html/index.js +23 -3
  96. package/dist/exporter/html/index.js.map +1 -1
  97. package/dist/exporter/html/templates.d.ts +23 -9
  98. package/dist/exporter/html/templates.d.ts.map +1 -1
  99. package/dist/exporter/html/templates.js +1 -1
  100. package/dist/exporter/html/templates.js.map +1 -1
  101. package/dist/exporter/html/tools.d.ts +1 -1
  102. package/dist/exporter/html/tools.d.ts.map +1 -1
  103. package/dist/exporter/html/tools.js +2 -2
  104. package/dist/exporter/html/tools.js.map +1 -1
  105. package/dist/exporter/jats/bibliography.d.ts +2 -1
  106. package/dist/exporter/jats/bibliography.d.ts.map +1 -1
  107. package/dist/exporter/jats/bibliography.js +57 -52
  108. package/dist/exporter/jats/bibliography.js.map +1 -1
  109. package/dist/exporter/jats/citations.d.ts +13 -11
  110. package/dist/exporter/jats/citations.d.ts.map +1 -1
  111. package/dist/exporter/jats/citations.js +28 -6
  112. package/dist/exporter/jats/citations.js.map +1 -1
  113. package/dist/exporter/jats/convert.d.ts +24 -28
  114. package/dist/exporter/jats/convert.d.ts.map +1 -1
  115. package/dist/exporter/jats/convert.js +53 -36
  116. package/dist/exporter/jats/convert.js.map +1 -1
  117. package/dist/exporter/jats/index.d.ts +21 -15
  118. package/dist/exporter/jats/index.d.ts.map +1 -1
  119. package/dist/exporter/jats/index.js +21 -5
  120. package/dist/exporter/jats/index.js.map +1 -1
  121. package/dist/exporter/jats/templates.d.ts +17 -15
  122. package/dist/exporter/jats/templates.d.ts.map +1 -1
  123. package/dist/exporter/jats/templates.js.map +1 -1
  124. package/dist/exporter/jats/text.d.ts +3 -2
  125. package/dist/exporter/jats/text.d.ts.map +1 -1
  126. package/dist/exporter/jats/text.js +4 -4
  127. package/dist/exporter/jats/text.js.map +1 -1
  128. package/dist/exporter/latex/convert.d.ts +12 -15
  129. package/dist/exporter/latex/convert.d.ts.map +1 -1
  130. package/dist/exporter/latex/convert.js +70 -54
  131. package/dist/exporter/latex/convert.js.map +1 -1
  132. package/dist/exporter/latex/escape_latex.d.ts +1 -1
  133. package/dist/exporter/latex/escape_latex.d.ts.map +1 -1
  134. package/dist/exporter/latex/escape_latex.js +1 -1
  135. package/dist/exporter/latex/escape_latex.js.map +1 -1
  136. package/dist/exporter/latex/index.d.ts +20 -19
  137. package/dist/exporter/latex/index.d.ts.map +1 -1
  138. package/dist/exporter/latex/index.js +15 -5
  139. package/dist/exporter/latex/index.js.map +1 -1
  140. package/dist/exporter/latex/readme.d.ts +1 -1
  141. package/dist/exporter/latex/readme.d.ts.map +1 -1
  142. package/dist/exporter/latex/readme.js +2 -2
  143. package/dist/exporter/latex/readme.js.map +1 -1
  144. package/dist/exporter/native/copy.d.ts +30 -0
  145. package/dist/exporter/native/copy.d.ts.map +1 -0
  146. package/dist/exporter/native/copy.js +151 -0
  147. package/dist/exporter/native/copy.js.map +1 -0
  148. package/dist/exporter/native/file.d.ts +12 -0
  149. package/dist/exporter/native/file.d.ts.map +1 -0
  150. package/dist/exporter/native/file.js +38 -0
  151. package/dist/exporter/native/file.js.map +1 -0
  152. package/dist/exporter/native/index.d.ts +5 -0
  153. package/dist/exporter/native/index.d.ts.map +1 -0
  154. package/dist/exporter/native/index.js +5 -0
  155. package/dist/exporter/native/index.js.map +1 -0
  156. package/dist/exporter/native/revision.d.ts +18 -0
  157. package/dist/exporter/native/revision.d.ts.map +1 -0
  158. package/dist/exporter/native/revision.js +39 -0
  159. package/dist/exporter/native/revision.js.map +1 -0
  160. package/dist/exporter/native/shrink.d.ts +29 -14
  161. package/dist/exporter/native/shrink.d.ts.map +1 -1
  162. package/dist/exporter/native/shrink.js +27 -18
  163. package/dist/exporter/native/shrink.js.map +1 -1
  164. package/dist/exporter/native/zip.d.ts +25 -0
  165. package/dist/exporter/native/zip.d.ts.map +1 -0
  166. package/dist/exporter/native/zip.js +56 -0
  167. package/dist/exporter/native/zip.js.map +1 -0
  168. package/dist/exporter/odt/citations.d.ts +18 -15
  169. package/dist/exporter/odt/citations.d.ts.map +1 -1
  170. package/dist/exporter/odt/citations.js +21 -4
  171. package/dist/exporter/odt/citations.js.map +1 -1
  172. package/dist/exporter/odt/footnotes.d.ts +25 -19
  173. package/dist/exporter/odt/footnotes.d.ts.map +1 -1
  174. package/dist/exporter/odt/footnotes.js +23 -6
  175. package/dist/exporter/odt/footnotes.js.map +1 -1
  176. package/dist/exporter/odt/images.d.ts +23 -11
  177. package/dist/exporter/odt/images.d.ts.map +1 -1
  178. package/dist/exporter/odt/images.js +34 -26
  179. package/dist/exporter/odt/images.js.map +1 -1
  180. package/dist/exporter/odt/index.d.ts +12 -18
  181. package/dist/exporter/odt/index.d.ts.map +1 -1
  182. package/dist/exporter/odt/index.js +16 -7
  183. package/dist/exporter/odt/index.js.map +1 -1
  184. package/dist/exporter/odt/math.d.ts +10 -8
  185. package/dist/exporter/odt/math.d.ts.map +1 -1
  186. package/dist/exporter/odt/math.js +27 -4
  187. package/dist/exporter/odt/math.js.map +1 -1
  188. package/dist/exporter/odt/metadata.d.ts +13 -9
  189. package/dist/exporter/odt/metadata.d.ts.map +1 -1
  190. package/dist/exporter/odt/metadata.js +36 -15
  191. package/dist/exporter/odt/metadata.js.map +1 -1
  192. package/dist/exporter/odt/render.d.ts +17 -15
  193. package/dist/exporter/odt/render.d.ts.map +1 -1
  194. package/dist/exporter/odt/render.js +25 -18
  195. package/dist/exporter/odt/render.js.map +1 -1
  196. package/dist/exporter/odt/richtext.d.ts +9 -9
  197. package/dist/exporter/odt/richtext.d.ts.map +1 -1
  198. package/dist/exporter/odt/richtext.js +55 -40
  199. package/dist/exporter/odt/richtext.js.map +1 -1
  200. package/dist/exporter/odt/styles.d.ts +29 -21
  201. package/dist/exporter/odt/styles.d.ts.map +1 -1
  202. package/dist/exporter/odt/styles.js +44 -22
  203. package/dist/exporter/odt/styles.js.map +1 -1
  204. package/dist/exporter/odt/track.d.ts +14 -7
  205. package/dist/exporter/odt/track.d.ts.map +1 -1
  206. package/dist/exporter/odt/track.js +7 -0
  207. package/dist/exporter/odt/track.js.map +1 -1
  208. package/dist/exporter/pandoc/citations.d.ts +20 -14
  209. package/dist/exporter/pandoc/citations.d.ts.map +1 -1
  210. package/dist/exporter/pandoc/citations.js +18 -4
  211. package/dist/exporter/pandoc/citations.js.map +1 -1
  212. package/dist/exporter/pandoc/convert.d.ts +10 -29
  213. package/dist/exporter/pandoc/convert.d.ts.map +1 -1
  214. package/dist/exporter/pandoc/convert.js +45 -40
  215. package/dist/exporter/pandoc/convert.js.map +1 -1
  216. package/dist/exporter/pandoc/index.d.ts +20 -33
  217. package/dist/exporter/pandoc/index.d.ts.map +1 -1
  218. package/dist/exporter/pandoc/index.js +20 -8
  219. package/dist/exporter/pandoc/index.js.map +1 -1
  220. package/dist/exporter/pandoc/readme.d.ts +1 -1
  221. package/dist/exporter/pandoc/readme.d.ts.map +1 -1
  222. package/dist/exporter/pandoc/readme.js +0 -1
  223. package/dist/exporter/pandoc/readme.js.map +1 -1
  224. package/dist/exporter/pandoc/tools.d.ts +21 -5
  225. package/dist/exporter/pandoc/tools.d.ts.map +1 -1
  226. package/dist/exporter/pandoc/tools.js +2 -2
  227. package/dist/exporter/pandoc/tools.js.map +1 -1
  228. package/dist/exporter/print/index.d.ts +18 -7
  229. package/dist/exporter/print/index.d.ts.map +1 -1
  230. package/dist/exporter/print/index.js +12 -10
  231. package/dist/exporter/print/index.js.map +1 -1
  232. package/dist/exporter/tools/doc_content.d.ts +5 -6
  233. package/dist/exporter/tools/doc_content.d.ts.map +1 -1
  234. package/dist/exporter/tools/doc_content.js +17 -16
  235. package/dist/exporter/tools/doc_content.js.map +1 -1
  236. package/dist/exporter/tools/svg.d.ts +7 -1
  237. package/dist/exporter/tools/svg.d.ts.map +1 -1
  238. package/dist/exporter/tools/svg.js.map +1 -1
  239. package/dist/exporter/tools/xml.d.ts +39 -38
  240. package/dist/exporter/tools/xml.d.ts.map +1 -1
  241. package/dist/exporter/tools/xml.js +82 -55
  242. package/dist/exporter/tools/xml.js.map +1 -1
  243. package/dist/exporter/tools/xml_zip.d.ts +15 -14
  244. package/dist/exporter/tools/xml_zip.d.ts.map +1 -1
  245. package/dist/exporter/tools/xml_zip.js +8 -2
  246. package/dist/exporter/tools/xml_zip.js.map +1 -1
  247. package/dist/exporter/tools/zip.d.ts +28 -14
  248. package/dist/exporter/tools/zip.d.ts.map +1 -1
  249. package/dist/exporter/tools/zip.js +13 -6
  250. package/dist/exporter/tools/zip.js.map +1 -1
  251. package/dist/exporter/tools/zotero_csl.d.ts +19 -6
  252. package/dist/exporter/tools/zotero_csl.d.ts.map +1 -1
  253. package/dist/exporter/tools/zotero_csl.js +9 -9
  254. package/dist/exporter/tools/zotero_csl.js.map +1 -1
  255. package/dist/importer/citations.d.ts +25 -22
  256. package/dist/importer/citations.d.ts.map +1 -1
  257. package/dist/importer/citations.js +1 -49
  258. package/dist/importer/citations.js.map +1 -1
  259. package/dist/importer/docx/citations.d.ts +8 -30
  260. package/dist/importer/docx/citations.d.ts.map +1 -1
  261. package/dist/importer/docx/citations.js +1 -26
  262. package/dist/importer/docx/citations.js.map +1 -1
  263. package/dist/importer/docx/convert.d.ts +38 -116
  264. package/dist/importer/docx/convert.d.ts.map +1 -1
  265. package/dist/importer/docx/convert.js +99 -82
  266. package/dist/importer/docx/convert.js.map +1 -1
  267. package/dist/importer/docx/helpers.d.ts +1 -1
  268. package/dist/importer/docx/helpers.d.ts.map +1 -1
  269. package/dist/importer/docx/helpers.js +1 -1
  270. package/dist/importer/docx/helpers.js.map +1 -1
  271. package/dist/importer/docx/index.d.ts +27 -0
  272. package/dist/importer/docx/index.d.ts.map +1 -0
  273. package/dist/importer/docx/index.js +77 -0
  274. package/dist/importer/docx/index.js.map +1 -0
  275. package/dist/importer/docx/omml2mathml.d.ts +2 -3
  276. package/dist/importer/docx/omml2mathml.d.ts.map +1 -1
  277. package/dist/importer/docx/omml2mathml.js +23 -116
  278. package/dist/importer/docx/omml2mathml.js.map +1 -1
  279. package/dist/importer/docx/parse.d.ts +22 -131
  280. package/dist/importer/docx/parse.d.ts.map +1 -1
  281. package/dist/importer/docx/parse.js +73 -55
  282. package/dist/importer/docx/parse.js.map +1 -1
  283. package/dist/importer/native/extract_template.d.ts +6 -0
  284. package/dist/importer/native/extract_template.d.ts.map +1 -0
  285. package/dist/importer/native/extract_template.js +80 -0
  286. package/dist/importer/native/extract_template.js.map +1 -0
  287. package/dist/importer/native/file.d.ts +37 -0
  288. package/dist/importer/native/file.d.ts.map +1 -0
  289. package/dist/importer/native/file.js +162 -0
  290. package/dist/importer/native/file.js.map +1 -0
  291. package/dist/importer/native/get_images.d.ts +18 -8
  292. package/dist/importer/native/get_images.d.ts.map +1 -1
  293. package/dist/importer/native/get_images.js +39 -45
  294. package/dist/importer/native/get_images.js.map +1 -1
  295. package/dist/importer/native/importer.d.ts +41 -0
  296. package/dist/importer/native/importer.d.ts.map +1 -0
  297. package/dist/importer/native/importer.js +170 -0
  298. package/dist/importer/native/importer.js.map +1 -0
  299. package/dist/importer/native/index.d.ts +7 -0
  300. package/dist/importer/native/index.d.ts.map +1 -0
  301. package/dist/importer/native/index.js +7 -0
  302. package/dist/importer/native/index.js.map +1 -0
  303. package/dist/importer/native/update.d.ts +5 -4
  304. package/dist/importer/native/update.d.ts.map +1 -1
  305. package/dist/importer/native/update.js +4 -3
  306. package/dist/importer/native/update.js.map +1 -1
  307. package/dist/importer/native/update_template.d.ts +12 -0
  308. package/dist/importer/native/update_template.d.ts.map +1 -0
  309. package/dist/importer/native/update_template.js +19 -0
  310. package/dist/importer/native/update_template.js.map +1 -0
  311. package/dist/importer/odt/citations.d.ts +7 -27
  312. package/dist/importer/odt/citations.d.ts.map +1 -1
  313. package/dist/importer/odt/citations.js +0 -22
  314. package/dist/importer/odt/citations.js.map +1 -1
  315. package/dist/importer/odt/convert.d.ts +53 -237
  316. package/dist/importer/odt/convert.d.ts.map +1 -1
  317. package/dist/importer/odt/convert.js +162 -138
  318. package/dist/importer/odt/convert.js.map +1 -1
  319. package/dist/importer/odt/index.d.ts +30 -0
  320. package/dist/importer/odt/index.d.ts.map +1 -0
  321. package/dist/importer/odt/index.js +124 -0
  322. package/dist/importer/odt/index.js.map +1 -0
  323. package/dist/importer/pandoc/convert.d.ts +25 -77
  324. package/dist/importer/pandoc/convert.d.ts.map +1 -1
  325. package/dist/importer/pandoc/convert.js +65 -52
  326. package/dist/importer/pandoc/convert.js.map +1 -1
  327. package/dist/importer/pandoc/helpers.d.ts +4 -3
  328. package/dist/importer/pandoc/helpers.d.ts.map +1 -1
  329. package/dist/importer/pandoc/helpers.js +24 -26
  330. package/dist/importer/pandoc/helpers.js.map +1 -1
  331. package/dist/importer/pandoc/index.d.ts +31 -0
  332. package/dist/importer/pandoc/index.d.ts.map +1 -0
  333. package/dist/importer/pandoc/index.js +114 -0
  334. package/dist/importer/pandoc/index.js.map +1 -0
  335. package/dist/importer/registry.d.ts +21 -0
  336. package/dist/importer/registry.d.ts.map +1 -0
  337. package/dist/importer/registry.js +41 -0
  338. package/dist/importer/registry.js.map +1 -0
  339. package/dist/importer/zip_analyzer.d.ts +27 -21
  340. package/dist/importer/zip_analyzer.d.ts.map +1 -1
  341. package/dist/importer/zip_analyzer.js +10 -5
  342. package/dist/importer/zip_analyzer.js.map +1 -1
  343. package/dist/mathlive/opf_includes.d.ts +1 -1
  344. package/dist/mathlive/opf_includes.d.ts.map +1 -1
  345. package/dist/mathlive/opf_includes.js.map +1 -1
  346. package/dist/schema/common/annotate.d.ts +37 -49
  347. package/dist/schema/common/annotate.d.ts.map +1 -1
  348. package/dist/schema/common/annotate.js +2 -2
  349. package/dist/schema/common/annotate.js.map +1 -1
  350. package/dist/schema/common/base.d.ts +63 -81
  351. package/dist/schema/common/base.d.ts.map +1 -1
  352. package/dist/schema/common/base.js.map +1 -1
  353. package/dist/schema/common/citation.d.ts +23 -22
  354. package/dist/schema/common/citation.d.ts.map +1 -1
  355. package/dist/schema/common/citation.js +4 -5
  356. package/dist/schema/common/citation.js.map +1 -1
  357. package/dist/schema/common/equation.d.ts +13 -14
  358. package/dist/schema/common/equation.d.ts.map +1 -1
  359. package/dist/schema/common/equation.js +1 -1
  360. package/dist/schema/common/equation.js.map +1 -1
  361. package/dist/schema/common/figure.d.ts +72 -93
  362. package/dist/schema/common/figure.d.ts.map +1 -1
  363. package/dist/schema/common/figure.js +11 -9
  364. package/dist/schema/common/figure.js.map +1 -1
  365. package/dist/schema/common/heading.d.ts +8 -32
  366. package/dist/schema/common/heading.d.ts.map +1 -1
  367. package/dist/schema/common/heading.js +2 -2
  368. package/dist/schema/common/heading.js.map +1 -1
  369. package/dist/schema/common/index.d.ts +2 -2
  370. package/dist/schema/common/index.d.ts.map +1 -1
  371. package/dist/schema/common/index.js.map +1 -1
  372. package/dist/schema/common/list.d.ts +52 -72
  373. package/dist/schema/common/list.d.ts.map +1 -1
  374. package/dist/schema/common/list.js +3 -3
  375. package/dist/schema/common/list.js.map +1 -1
  376. package/dist/schema/common/reference.d.ts +51 -59
  377. package/dist/schema/common/reference.d.ts.map +1 -1
  378. package/dist/schema/common/reference.js +5 -5
  379. package/dist/schema/common/reference.js.map +1 -1
  380. package/dist/schema/common/table.d.ts +59 -75
  381. package/dist/schema/common/table.d.ts.map +1 -1
  382. package/dist/schema/common/table.js +3 -2
  383. package/dist/schema/common/table.js.map +1 -1
  384. package/dist/schema/common/track.d.ts +83 -97
  385. package/dist/schema/common/track.d.ts.map +1 -1
  386. package/dist/schema/common/track.js +18 -17
  387. package/dist/schema/common/track.js.map +1 -1
  388. package/dist/schema/convert.d.ts +2 -2
  389. package/dist/schema/convert.d.ts.map +1 -1
  390. package/dist/schema/convert.js +2 -2
  391. package/dist/schema/convert.js.map +1 -1
  392. package/dist/schema/document/content.d.ts +95 -122
  393. package/dist/schema/document/content.d.ts.map +1 -1
  394. package/dist/schema/document/content.js +9 -9
  395. package/dist/schema/document/content.js.map +1 -1
  396. package/dist/schema/document/index.d.ts +173 -257
  397. package/dist/schema/document/index.d.ts.map +1 -1
  398. package/dist/schema/document/index.js.map +1 -1
  399. package/dist/schema/document/structure.d.ts +149 -258
  400. package/dist/schema/document/structure.d.ts.map +1 -1
  401. package/dist/schema/document/structure.js +2 -2
  402. package/dist/schema/document/structure.js.map +1 -1
  403. package/dist/schema/export.d.ts +4 -877
  404. package/dist/schema/export.d.ts.map +1 -1
  405. package/dist/schema/export.js +1 -0
  406. package/dist/schema/export.js.map +1 -1
  407. package/dist/schema/footnotes.d.ts +110 -155
  408. package/dist/schema/footnotes.d.ts.map +1 -1
  409. package/dist/schema/footnotes.js +4 -2
  410. package/dist/schema/footnotes.js.map +1 -1
  411. package/dist/schema/footnotes_convert.d.ts +3 -3
  412. package/dist/schema/footnotes_convert.d.ts.map +1 -1
  413. package/dist/schema/footnotes_convert.js +10 -6
  414. package/dist/schema/footnotes_convert.js.map +1 -1
  415. package/dist/schema/i18n.d.ts +3 -534
  416. package/dist/schema/i18n.d.ts.map +1 -1
  417. package/dist/schema/i18n.js +1 -0
  418. package/dist/schema/i18n.js.map +1 -1
  419. package/dist/schema/index.d.ts +1 -1
  420. package/dist/schema/index.d.ts.map +1 -1
  421. package/dist/schema/index.js.map +1 -1
  422. package/dist/schema/mini_json.d.ts +3 -4
  423. package/dist/schema/mini_json.d.ts.map +1 -1
  424. package/dist/schema/mini_json.js +2 -0
  425. package/dist/schema/mini_json.js.map +1 -1
  426. package/dist/schema/text.d.ts +2 -1
  427. package/dist/schema/text.d.ts.map +1 -1
  428. package/dist/schema/text.js +1 -1
  429. package/dist/schema/text.js.map +1 -1
  430. package/dist/types.d.ts +167 -8
  431. package/dist/types.d.ts.map +1 -1
  432. package/package.json +24 -1
  433. package/src/bibliography/{common.js → common.ts} +15 -12
  434. package/src/bibliography/{csl_bib.js → csl_bib.ts} +16 -15
  435. package/src/citations/{citeproc_sys.js → citeproc_sys.ts} +26 -6
  436. package/src/citations/{format.js → format.ts} +80 -24
  437. package/src/editor/e2ee/{encryptor.js → encryptor.ts} +76 -44
  438. package/src/exporter/docx/{citations.js → citations.ts} +51 -23
  439. package/src/exporter/docx/{comments.js → comments.ts} +69 -26
  440. package/src/exporter/docx/{footnotes.js → footnotes.ts} +81 -42
  441. package/src/exporter/docx/images.ts +128 -0
  442. package/src/exporter/docx/{index.js → index.ts} +48 -25
  443. package/src/exporter/docx/{lists.js → lists.ts} +89 -46
  444. package/src/exporter/docx/{math.js → math.ts} +29 -9
  445. package/src/exporter/docx/{metadata.js → metadata.ts} +78 -42
  446. package/src/exporter/docx/{rels.js → rels.ts} +71 -50
  447. package/src/exporter/docx/{render.js → render.ts} +124 -87
  448. package/src/exporter/docx/{richtext.js → richtext.ts} +107 -84
  449. package/src/exporter/docx/{tables.js → tables.ts} +33 -23
  450. package/src/exporter/docx/{tools.js → tools.ts} +4 -3
  451. package/src/exporter/epub/{index.js → index.ts} +44 -15
  452. package/src/exporter/epub/{templates.js → templates.ts} +71 -7
  453. package/src/exporter/epub/{tools.js → tools.ts} +31 -25
  454. package/src/exporter/html/{citations.js → citations.ts} +79 -31
  455. package/src/exporter/html/{convert.js → convert.ts} +118 -71
  456. package/src/exporter/html/{index.js → index.ts} +63 -29
  457. package/src/exporter/html/{templates.js → templates.ts} +22 -2
  458. package/src/exporter/html/{tools.js → tools.ts} +9 -6
  459. package/src/exporter/jats/bibliography.ts +199 -0
  460. package/src/exporter/jats/{citations.js → citations.ts} +56 -20
  461. package/src/exporter/jats/{convert.js → convert.ts} +72 -53
  462. package/src/exporter/jats/index.ts +132 -0
  463. package/src/exporter/jats/{templates.js → templates.ts} +19 -3
  464. package/src/exporter/jats/{text.js → text.ts} +8 -6
  465. package/src/exporter/latex/{convert.js → convert.ts} +160 -125
  466. package/src/exporter/latex/{escape_latex.js → escape_latex.ts} +1 -1
  467. package/src/exporter/latex/{index.js → index.ts} +27 -12
  468. package/src/exporter/latex/{readme.js → readme.ts} +2 -2
  469. package/src/exporter/native/copy.ts +231 -0
  470. package/src/exporter/native/file.ts +65 -0
  471. package/src/exporter/native/index.ts +4 -0
  472. package/src/exporter/native/revision.ts +76 -0
  473. package/src/exporter/native/{shrink.js → shrink.ts} +64 -29
  474. package/src/exporter/native/zip.ts +85 -0
  475. package/src/exporter/odt/{citations.js → citations.ts} +35 -15
  476. package/src/exporter/odt/{footnotes.js → footnotes.ts} +53 -30
  477. package/src/exporter/odt/images.ts +135 -0
  478. package/src/exporter/odt/{index.js → index.ts} +49 -27
  479. package/src/exporter/odt/{math.js → math.ts} +38 -9
  480. package/src/exporter/odt/{metadata.js → metadata.ts} +54 -29
  481. package/src/exporter/odt/{render.js → render.ts} +89 -60
  482. package/src/exporter/odt/{richtext.js → richtext.ts} +102 -72
  483. package/src/exporter/odt/{styles.js → styles.ts} +98 -66
  484. package/src/exporter/odt/{track.js → track.ts} +22 -6
  485. package/src/exporter/pandoc/{citations.js → citations.ts} +31 -15
  486. package/src/exporter/pandoc/{convert.js → convert.ts} +98 -79
  487. package/src/exporter/pandoc/{index.js → index.ts} +36 -13
  488. package/src/exporter/pandoc/{readme.js → readme.ts} +0 -1
  489. package/src/exporter/pandoc/{tools.js → tools.ts} +28 -5
  490. package/src/exporter/print/{index.js → index.ts} +38 -19
  491. package/src/exporter/tools/{doc_content.js → doc_content.ts} +34 -24
  492. package/src/exporter/tools/{svg.js → svg.ts} +9 -3
  493. package/src/exporter/tools/{xml.js → xml.ts} +187 -138
  494. package/src/exporter/tools/{xml_zip.js → xml_zip.ts} +19 -11
  495. package/src/exporter/tools/{zip.js → zip.ts} +35 -11
  496. package/src/exporter/tools/{zotero_csl.js → zotero_csl.ts} +35 -18
  497. package/src/global.d.ts +2 -0
  498. package/src/importer/citations.ts +116 -0
  499. package/src/importer/docx/{citations.js → citations.ts} +22 -37
  500. package/src/importer/docx/{convert.js → convert.ts} +176 -141
  501. package/src/importer/docx/{helpers.js → helpers.ts} +1 -1
  502. package/src/importer/docx/index.ts +124 -0
  503. package/src/importer/docx/{omml2mathml.js → omml2mathml.ts} +154 -176
  504. package/src/importer/docx/{parse.js → parse.ts} +103 -81
  505. package/src/importer/native/extract_template.ts +83 -0
  506. package/src/importer/native/file.ts +282 -0
  507. package/src/importer/native/get_images.ts +82 -0
  508. package/src/importer/native/importer.ts +244 -0
  509. package/src/importer/native/index.ts +6 -0
  510. package/src/importer/native/{update.js → update.ts} +13 -5
  511. package/src/importer/native/update_template.ts +32 -0
  512. package/src/importer/odt/{citations.js → citations.ts} +17 -29
  513. package/src/importer/odt/{convert.js → convert.ts} +261 -237
  514. package/src/importer/odt/index.ts +202 -0
  515. package/src/importer/pandoc/{convert.js → convert.ts} +116 -94
  516. package/src/importer/pandoc/{helpers.js → helpers.ts} +24 -12
  517. package/src/importer/pandoc/index.ts +171 -0
  518. package/src/importer/registry.ts +69 -0
  519. package/src/importer/{zip_analyzer.js → zip_analyzer.ts} +44 -18
  520. package/src/mathlive/{opf_includes.js → opf_includes.ts} +1 -1
  521. package/src/modules.d.ts +40 -0
  522. package/src/schema/common/{annotate.js → annotate.ts} +10 -8
  523. package/src/schema/common/{base.js → base.ts} +12 -10
  524. package/src/schema/common/{citation.js → citation.ts} +17 -8
  525. package/src/schema/common/{equation.js → equation.ts} +6 -4
  526. package/src/schema/common/{figure.js → figure.ts} +43 -23
  527. package/src/schema/common/{heading.js → heading.ts} +7 -5
  528. package/src/schema/common/{list.js → list.ts} +15 -13
  529. package/src/schema/common/{reference.js → reference.ts} +14 -12
  530. package/src/schema/common/{table.js → table.ts} +16 -14
  531. package/src/schema/common/{track.js → track.ts} +42 -31
  532. package/src/schema/{convert.js → convert.ts} +6 -2
  533. package/src/schema/document/{content.js → content.ts} +22 -20
  534. package/src/schema/document/{structure.js → structure.ts} +15 -9
  535. package/src/schema/{export.js → export.ts} +4 -2
  536. package/src/schema/{footnotes.js → footnotes.ts} +11 -8
  537. package/src/schema/{footnotes_convert.js → footnotes_convert.ts} +11 -8
  538. package/src/schema/{i18n.js → i18n.ts} +7 -1
  539. package/src/schema/{mini_json.js → mini_json.ts} +11 -12
  540. package/src/schema/{text.js → text.ts} +6 -2
  541. package/src/types.ts +185 -7
  542. package/src/exporter/docx/images.js +0 -101
  543. package/src/exporter/jats/bibliography.js +0 -183
  544. package/src/exporter/jats/index.js +0 -92
  545. package/src/exporter/odt/images.js +0 -115
  546. package/src/importer/citations.js +0 -129
  547. package/src/importer/native/get_images.js +0 -76
  548. /package/src/schema/common/{index.js → index.ts} +0 -0
  549. /package/src/schema/document/{index.js → index.ts} +0 -0
  550. /package/src/schema/{index.js → index.ts} +0 -0
@@ -13,129 +13,150 @@ const fastXMLParserOptions = {
13
13
  trimValues: false
14
14
  }
15
15
 
16
- const isLeaf = tagName => ["#text", "__cdata", "#comment"].includes(tagName)
16
+ const isLeaf = (tagName: string | undefined): boolean =>
17
+ ["#text", "__cdata", "#comment"].includes(tagName || "")
17
18
 
18
- class XMLElement {
19
- constructor(node, parentElement = null) {
19
+ type XMLNode = Record<string, unknown>
20
+
21
+ export class XMLElement {
22
+ node: XMLNode
23
+ parentElement: XMLElement | null
24
+
25
+ constructor(node: XMLNode, parentElement: XMLElement | null = null) {
20
26
  this.node = node
21
27
  this.parentElement = parentElement
22
28
 
23
29
  // Recursively wrap child elements if they exist
24
30
  const tagName = this.tagName
25
31
  if (tagName && this.node[tagName] && !isLeaf(tagName)) {
26
- this.node[tagName] = this.node[tagName].map(child => {
27
- // Only wrap objects (not text nodes)
28
- return typeof child === "object"
29
- ? new XMLElement(child, this)
30
- : child
31
- })
32
+ this.node[tagName] = (this.node[tagName] as unknown[]).map(
33
+ (child: unknown) => {
34
+ // Only wrap objects (not text nodes)
35
+ return typeof child === "object" && child !== null
36
+ ? new XMLElement(child as XMLNode, this)
37
+ : child
38
+ }
39
+ )
32
40
  }
33
41
  }
34
42
 
35
- get tagName() {
43
+ get tagName(): string | undefined {
36
44
  // Get the tag name dynamically (the first key that isn't ":@")
37
45
  return Object.keys(this.node).find(key => key !== ":@")
38
46
  }
39
47
 
40
- get children() {
48
+ get children(): Array<XMLElement | string> {
41
49
  // Return child elements if they exist, or an empty array if none
42
- return this.node[this.tagName] || []
50
+ return (this.node[this.tagName!] as Array<XMLElement | string>) || []
43
51
  }
44
52
 
45
- get attributes() {
53
+ get attributes(): Record<string, unknown> {
46
54
  // Return attributes stored under the ":@" key, or an empty object if not present
47
- return this.node[":@"] || {}
55
+ return (this.node[":@"] as Record<string, unknown>) || {}
48
56
  }
49
57
 
50
- set attributes(attrs) {
58
+ set attributes(attrs: Record<string, unknown>) {
51
59
  // Update the attributes object
52
60
  this.node[":@"] = attrs
53
61
  }
54
62
 
55
- get innerXML() {
63
+ get innerXML(): string {
56
64
  // Serialize the children back to XML
57
65
  return this.children
58
66
  .map(child => {
59
- return child.toString()
67
+ if (child instanceof XMLElement) {
68
+ return child.toString()
69
+ }
70
+ return String(child)
60
71
  })
61
72
  .join("")
62
73
  }
63
74
 
64
- set innerXML(xmlString) {
65
- this.node[this.tagName].forEach(child => {
75
+ set innerXML(xmlString: string) {
76
+ ;(this.children as XMLElement[]).forEach(child => {
66
77
  child.setParent(null)
67
78
  })
68
79
  // Clear existing children
69
- this.node[this.tagName] = []
80
+ this.node[this.tagName!] = []
70
81
 
71
82
  // Parse the new XML string
72
83
  const parser = new XMLParser(fastXMLParserOptions)
73
84
  const xml = parser.parse(
74
85
  `<${this.tagName}>${xmlString}</${this.tagName}>`
75
- )
86
+ ) as XMLNode[]
76
87
  // Append new children
77
- xml[0][this.tagName].forEach(child => {
78
- this.appendChild(child)
88
+ ;((xml[0][this.tagName!] as unknown[]) || []).forEach(child => {
89
+ this.appendChild(child as XMLNode)
79
90
  })
80
91
  }
81
92
 
82
- get textContent() {
83
- if (isLeaf(this.tagName)) {
84
- if (this.tagName === "#text") {
85
- return this.node[this.tagName]
93
+ get textContent(): string {
94
+ const tagName = this.tagName
95
+ if (isLeaf(tagName)) {
96
+ if (tagName === "#text") {
97
+ return String(this.node[tagName] || "")
86
98
  }
87
99
  return ""
88
100
  } else {
89
101
  // Serialize the children back to text
90
- return this.children.map(child => child.textContent).join("")
102
+ return (this.children as XMLElement[])
103
+ .map(child => child.textContent)
104
+ .join("")
91
105
  }
92
106
  }
93
107
 
94
- set textContent(value) {
108
+ set textContent(value: string) {
109
+ const tagName = this.tagName
95
110
  // For leaf nodes, directly set the text content
96
- if (this.tagName === "#text") {
111
+ if (tagName === "#text") {
97
112
  this.node["#text"] = value
98
113
  return
99
114
  }
100
115
 
101
116
  // For element nodes, clear children and add a text node
102
- if (this.node[this.tagName]) {
117
+ if (this.node[tagName!]) {
103
118
  // Clear existing children
104
- this.node[this.tagName] = []
119
+ this.node[tagName!] = []
105
120
 
106
121
  // Only add text content if it's not empty
107
122
  if (value) {
108
- const textNode = {
123
+ const textNode: XMLNode = {
109
124
  "#text": value
110
125
  }
111
- this.node[this.tagName].push(new XMLElement(textNode, this))
126
+ ;(this.node[tagName!] as XMLElement[]).push(
127
+ new XMLElement(textNode, this)
128
+ )
112
129
  }
113
130
  }
114
131
  }
115
132
 
116
- get firstChild() {
133
+ get firstChild(): XMLElement | string | undefined {
117
134
  return this.children[0]
118
135
  }
119
136
 
120
- get lastChild() {
137
+ get lastChild(): XMLElement | string | undefined {
121
138
  return this.children[this.children.length - 1]
122
139
  }
123
140
 
124
- get firstElementChild() {
125
- return this.children.filter(child => !isLeaf(child.tagName))[0]
141
+ get firstElementChild(): XMLElement | undefined {
142
+ return (this.children as XMLElement[]).find(
143
+ child => child instanceof XMLElement && !isLeaf(child.tagName)
144
+ )
126
145
  }
127
146
 
128
- get lastElementChild() {
129
- const elements = this.children.filter(child => !isLeaf(child.tagName))
147
+ get lastElementChild(): XMLElement | null {
148
+ const elements = (this.children as XMLElement[]).filter(
149
+ child => child instanceof XMLElement && !isLeaf(child.tagName)
150
+ )
130
151
  if (elements.length === 0) {
131
152
  return null
132
153
  }
133
154
  return elements[elements.length - 1]
134
155
  }
135
156
 
136
- get nextSibling() {
157
+ get nextSibling(): XMLElement | null {
137
158
  if (this.parentElement) {
138
- const siblings = this.parentElement.children
159
+ const siblings = this.parentElement.children as XMLElement[]
139
160
  const index = siblings.indexOf(this)
140
161
  if (index < siblings.length - 1) {
141
162
  return siblings[index + 1]
@@ -144,9 +165,9 @@ class XMLElement {
144
165
  return null
145
166
  }
146
167
 
147
- get previousSibling() {
168
+ get previousSibling(): XMLElement | null {
148
169
  if (this.parentElement) {
149
- const siblings = this.parentElement.children
170
+ const siblings = this.parentElement.children as XMLElement[]
150
171
  const index = siblings.indexOf(this)
151
172
  if (index > 0) {
152
173
  return siblings[index - 1]
@@ -155,51 +176,53 @@ class XMLElement {
155
176
  return null
156
177
  }
157
178
 
158
- setParent(element) {
179
+ setParent(element: XMLElement | null): this {
159
180
  this.parentElement = element
160
181
  return this
161
182
  }
162
183
 
163
- hasAttribute(name) {
184
+ hasAttribute(name: string): boolean {
164
185
  return name in this.attributes
165
186
  }
166
187
 
167
- getAttribute(name) {
188
+ getAttribute(name: string): unknown {
168
189
  return this.attributes[name]
169
190
  }
170
191
 
171
- setAttribute(name, value) {
192
+ setAttribute(name: string, value: unknown): false | void {
172
193
  if (isLeaf(this.tagName)) {
173
194
  return false
174
195
  }
175
196
  this.attributes[name] = value
176
197
  }
177
198
 
178
- cloneNode(deep = false, parentElement = null) {
199
+ cloneNode(deep = false, parentElement: XMLElement | null = null): XMLElement {
179
200
  if (isLeaf(this.tagName)) {
180
201
  return new XMLElement({...this.node}, parentElement)
181
202
  }
182
- const clonedNode = {
183
- ":@": {...this.node[":@"]}
203
+ const tagName = this.tagName!
204
+ const clonedNode: XMLNode = {
205
+ ":@": {...((this.node[":@"] as Record<string, unknown>) || {})}
184
206
  }
185
- clonedNode[this.tagName] = []
207
+ clonedNode[tagName] = []
186
208
  const clone = new XMLElement(clonedNode, parentElement)
187
209
  if (deep) {
188
- clonedNode[this.tagName] = this.children.map(child =>
210
+ clonedNode[tagName] = (this.children as XMLElement[]).map(child =>
189
211
  child.cloneNode(deep, clone)
190
212
  )
191
213
  }
192
214
  return clone
193
215
  }
194
216
 
195
- appendChild(newChild) {
196
- if (isLeaf(this.tagName)) {
217
+ appendChild(newChild: XMLNode | XMLElement): false | void {
218
+ const tagName = this.tagName
219
+ if (isLeaf(tagName)) {
197
220
  return false
198
221
  }
199
- if (!this.node[this.tagName]) {
200
- this.node[this.tagName] = []
222
+ if (!this.node[tagName!]) {
223
+ this.node[tagName!] = []
201
224
  }
202
- let newChildElement
225
+ let newChildElement: XMLElement
203
226
  // Wrap newChild in XMLElement if it's not already
204
227
  if (newChild instanceof XMLElement) {
205
228
  newChild.parentElement?.removeChild(newChild)
@@ -208,17 +231,18 @@ class XMLElement {
208
231
  newChildElement = new XMLElement(newChild, this)
209
232
  }
210
233
  // Append newChild to the list of children under the tagName
211
- this.node[this.tagName].push(newChildElement)
234
+ ;(this.node[tagName!] as XMLElement[]).push(newChildElement)
212
235
  }
213
236
 
214
- prependChild(newChild) {
215
- if (isLeaf(this.tagName)) {
237
+ prependChild(newChild: XMLNode | XMLElement): false | void {
238
+ const tagName = this.tagName
239
+ if (isLeaf(tagName)) {
216
240
  return false
217
241
  }
218
- if (!this.node[this.tagName]) {
219
- this.node[this.tagName] = []
242
+ if (!this.node[tagName!]) {
243
+ this.node[tagName!] = []
220
244
  }
221
- let newChildElement
245
+ let newChildElement: XMLElement
222
246
  // Wrap newChild in XMLElement if it's not already
223
247
  if (newChild instanceof XMLElement) {
224
248
  newChild.parentElement?.removeChild(newChild)
@@ -227,68 +251,75 @@ class XMLElement {
227
251
  newChildElement = new XMLElement(newChild, this)
228
252
  }
229
253
  // Prepend newChild to the list of children under the tagName
230
- this.node[this.tagName].unshift(newChildElement)
254
+ ;(this.node[tagName!] as XMLElement[]).unshift(newChildElement)
231
255
  }
232
256
 
233
- appendXML(xmlString) {
234
- if (isLeaf(this.tagName)) {
257
+ appendXML(xmlString: string): false | void {
258
+ const tagName = this.tagName
259
+ if (isLeaf(tagName)) {
235
260
  return false
236
261
  }
237
262
  const parser = new XMLParser(fastXMLParserOptions)
238
263
  const xml = parser.parse(
239
- `<${this.tagName}>${xmlString}</${this.tagName}>`
240
- )
241
- xml[0][this.tagName].forEach(child => {
242
- this.appendChild(child)
264
+ `<${tagName}>${xmlString}</${tagName}>`
265
+ ) as XMLNode[]
266
+ ;((xml[0][tagName!] as unknown[]) || []).forEach(child => {
267
+ this.appendChild(child as XMLNode)
243
268
  })
244
269
  }
245
270
 
246
- prependXML(xmlString) {
247
- if (isLeaf(this.tagName)) {
271
+ prependXML(xmlString: string): false | void {
272
+ const tagName = this.tagName
273
+ if (isLeaf(tagName)) {
248
274
  return false
249
275
  }
250
276
  const parser = new XMLParser(fastXMLParserOptions)
251
277
  const xml = parser.parse(
252
- `<${this.tagName}>${xmlString}</${this.tagName}>`
253
- )
254
- xml[0][this.tagName].reverse().forEach(child => {
255
- this.prependChild(child)
256
- })
278
+ `<${tagName}>${xmlString}</${tagName}>`
279
+ ) as XMLNode[]
280
+ ;((xml[0][tagName!] as unknown[]) || [])
281
+ .slice()
282
+ .reverse()
283
+ .forEach(child => {
284
+ this.prependChild(child as XMLNode)
285
+ })
257
286
  }
258
287
 
259
- insertXMLAt(xmlString, index) {
260
- if (isLeaf(this.tagName)) {
288
+ insertXMLAt(xmlString: string, index: number): false | void {
289
+ const tagName = this.tagName
290
+ if (isLeaf(tagName)) {
261
291
  return false
262
292
  }
263
293
  const parser = new XMLParser(fastXMLParserOptions)
264
294
  const xml = parser.parse(
265
- `<${this.tagName}>${xmlString}</${this.tagName}>`
266
- )
267
- xml[0][this.tagName].forEach((child, i) => {
268
- const newChild = new XMLElement(child, this)
269
- this.node[this.tagName].splice(index + i, 0, newChild)
295
+ `<${tagName}>${xmlString}</${tagName}>`
296
+ ) as XMLNode[]
297
+ ;((xml[0][tagName!] as unknown[]) || []).forEach((child, i) => {
298
+ const newChild = new XMLElement(child as XMLNode, this)
299
+ ;(this.node[tagName!] as XMLElement[]).splice(index + i, 0, newChild)
270
300
  })
271
301
  }
272
302
 
273
303
  splitAtChildElement(
274
- childElement,
304
+ childElement: XMLElement,
275
305
  appendToCurrentNode = "",
276
306
  insertBetweenNodes = "",
277
307
  insertAfterSplit = ""
278
- ) {
279
- if (!this.children.includes(childElement)) {
308
+ ): boolean {
309
+ if (!this.children.includes(childElement as unknown as never)) {
280
310
  return false
281
311
  }
282
312
 
283
313
  // Get the index of the child element
284
- const splitIndex = this.children.indexOf(childElement)
314
+ const children = this.children as XMLElement[]
315
+ const splitIndex = children.indexOf(childElement)
285
316
 
286
317
  // Store the original content
287
- const beforeContent = this.children.slice(0, splitIndex)
288
- const afterContent = this.children.slice(splitIndex + 1)
318
+ const beforeContent = children.slice(0, splitIndex)
319
+ const afterContent = children.slice(splitIndex + 1)
289
320
 
290
321
  // Clear current node's content
291
- this.node[this.tagName] = []
322
+ this.node[this.tagName!] = []
292
323
 
293
324
  // Add back content before split point plus any appendToCurrentNode
294
325
  beforeContent.forEach(child => this.appendChild(child))
@@ -318,11 +349,14 @@ class XMLElement {
318
349
  // Parse insertAfterSplit to get the node type and attributes
319
350
  if (insertAfterSplit) {
320
351
  const parser = new XMLParser(fastXMLParserOptions)
321
- const tempXml = parser.parse(insertAfterSplit)[0]
352
+ const tempXml = (parser.parse(insertAfterSplit) as XMLNode[])[0]
322
353
  const newTagName = Object.keys(tempXml).find(
323
354
  key => key !== ":@"
324
- )
325
- const newAttributes = tempXml[":@"] || {}
355
+ )!
356
+ const newAttributes = (tempXml[":@"] as Record<
357
+ string,
358
+ unknown
359
+ >) || {}
326
360
 
327
361
  // Create new element with the parsed tag name and attributes
328
362
  const newElement = new XMLElement(
@@ -335,28 +369,28 @@ class XMLElement {
335
369
 
336
370
  // Add the content from insertAfterSplit first
337
371
  if (tempXml[newTagName]) {
338
- tempXml[newTagName].forEach(child =>
339
- newElement.appendChild(child)
372
+ ;(tempXml[newTagName] as unknown[]).forEach(child =>
373
+ newElement.appendChild(child as XMLNode)
340
374
  )
341
375
  }
342
376
 
343
377
  // Then add the existing after content
344
378
  afterContent.forEach(child => newElement.appendChild(child))
345
379
 
346
- parentElement.node[parentElement.tagName].splice(
380
+ ;(parentElement.node[parentElement.tagName!] as XMLElement[]).splice(
347
381
  insertIndex,
348
382
  0,
349
383
  newElement
350
384
  )
351
385
  } else {
352
386
  // Fallback to original tag name if no insertAfterSplit provided
353
- const tagName = this.tagName
387
+ const tagName = this.tagName!
354
388
  const newElement = new XMLElement(
355
389
  {[tagName]: []},
356
390
  parentElement
357
391
  )
358
392
  afterContent.forEach(child => newElement.appendChild(child))
359
- parentElement.node[parentElement.tagName].splice(
393
+ ;(parentElement.node[parentElement.tagName!] as XMLElement[]).splice(
360
394
  insertIndex,
361
395
  0,
362
396
  newElement
@@ -368,27 +402,29 @@ class XMLElement {
368
402
  return true
369
403
  }
370
404
 
371
- removeChild(child) {
405
+ removeChild(child: XMLElement): false | void {
372
406
  if (isLeaf(this.tagName)) {
373
407
  return false
374
408
  }
375
- if (this.node[this.tagName]) {
376
- const index = this.node[this.tagName].indexOf(child)
409
+ if (this.node[this.tagName!]) {
410
+ const index = (this.node[this.tagName!] as XMLElement[]).indexOf(child)
377
411
  if (index > -1) {
378
- this.node[this.tagName].splice(index, 1)
412
+ ;(this.node[this.tagName!] as XMLElement[]).splice(index, 1)
379
413
  child.setParent(null)
380
414
  }
381
415
  }
382
416
  }
383
417
 
384
- insertBefore(newChild, referenceChild) {
418
+ insertBefore(newChild: XMLNode | XMLElement, referenceChild: XMLElement): false | void {
385
419
  if (isLeaf(this.tagName)) {
386
420
  return false
387
421
  }
388
- if (this.node[this.tagName]) {
389
- const index = this.node[this.tagName].indexOf(referenceChild)
422
+ if (this.node[this.tagName!]) {
423
+ const index = (this.node[this.tagName!] as XMLElement[]).indexOf(
424
+ referenceChild
425
+ )
390
426
  if (index > -1) {
391
- let newChildElement
427
+ let newChildElement: XMLElement
392
428
  // Wrap newChild in XMLElement if it's not already
393
429
  if (newChild instanceof XMLElement) {
394
430
  newChild.parentElement?.removeChild(newChild)
@@ -396,7 +432,11 @@ class XMLElement {
396
432
  } else {
397
433
  newChildElement = new XMLElement(newChild, this)
398
434
  }
399
- this.node[this.tagName].splice(index, 0, newChildElement)
435
+ ;(this.node[this.tagName!] as XMLElement[]).splice(
436
+ index,
437
+ 0,
438
+ newChildElement
439
+ )
400
440
  } else {
401
441
  // If referenceChild is not found, fallback to append
402
442
  this.appendChild(newChild)
@@ -404,20 +444,24 @@ class XMLElement {
404
444
  }
405
445
  }
406
446
 
407
- query(tagName, attributes = {}) {
447
+ query(tagName: string | string[], attributes: Record<string, unknown> = {}): XMLElement | undefined {
408
448
  return this.queryAll(tagName, attributes, 1)[0]
409
449
  }
410
450
 
411
- queryAll(tagName, attributes = {}, limit = false) {
412
- const result = []
451
+ queryAll(
452
+ tagName: string | string[],
453
+ attributes: Record<string, unknown> = {},
454
+ limit: number | false = false
455
+ ): XMLElement[] {
456
+ const result: XMLElement[] = []
413
457
  const tags = typeof tagName === "string" ? [tagName] : tagName
414
458
 
415
- function traverse(dom) {
459
+ function traverse(dom: XMLElement): boolean {
416
460
  const currentTagName = Object.keys(dom.node).find(
417
461
  key => key !== ":@"
418
462
  )
419
463
  if (
420
- tags.includes(currentTagName) &&
464
+ tags.includes(currentTagName || "") &&
421
465
  Object.keys(attributes).every(attr => {
422
466
  if (!dom.hasAttribute(attr)) {
423
467
  return false
@@ -428,7 +472,9 @@ class XMLElement {
428
472
  }
429
473
 
430
474
  if (Array.isArray(attributeValue)) {
431
- return attributeValue.includes(dom.getAttribute(attr))
475
+ return (attributeValue as unknown[]).includes(
476
+ dom.getAttribute(attr)
477
+ )
432
478
  }
433
479
 
434
480
  return dom.getAttribute(attr) === attributeValue
@@ -439,25 +485,27 @@ class XMLElement {
439
485
  if (limit && result.length >= limit) {
440
486
  return true
441
487
  }
488
+ const childTagName = Object.keys(dom.node).find(key => key !== ":@")
442
489
  if (
443
- currentTagName &&
444
- dom.node[currentTagName] &&
445
- !isLeaf(currentTagName)
490
+ childTagName &&
491
+ dom.node[childTagName] &&
492
+ !isLeaf(childTagName)
446
493
  ) {
447
- for (const childDOM of dom.node[currentTagName]) {
494
+ for (const childDOM of dom.node[childTagName] as XMLElement[]) {
448
495
  if (traverse(childDOM)) {
449
496
  return true
450
497
  }
451
498
  }
452
499
  }
500
+ return false
453
501
  }
454
502
 
455
503
  traverse(this)
456
504
  return result
457
505
  }
458
506
 
459
- closest(tagName) {
460
- let currentNode = this
507
+ closest(tagName: string): XMLElement | null {
508
+ let currentNode: XMLElement | null = this
461
509
  while (currentNode) {
462
510
  if (currentNode.tagName === tagName) {
463
511
  return currentNode
@@ -468,23 +516,23 @@ class XMLElement {
468
516
  }
469
517
 
470
518
  // Serialize back to original structure in a non-destructive way
471
- toObject() {
519
+ toObject(): unknown {
472
520
  const tagName = this.tagName
473
521
  const node = {...this.node}
474
522
  if (this.node[":@"]) {
475
- node[":@"] = {...this.node[":@"]}
523
+ node[":@"] = {...(this.node[":@"] as Record<string, unknown>)}
476
524
  }
477
525
  if (tagName && this.node[tagName]) {
478
526
  if (Array.isArray(this.node[tagName])) {
479
- node[tagName] = this.node[tagName].map(child => {
527
+ node[tagName] = (this.node[tagName] as XMLElement[]).map(child => {
480
528
  return child instanceof XMLElement
481
529
  ? child.toObject()
482
530
  : child
483
531
  })
484
532
  } else {
485
533
  node[tagName] =
486
- this.node[tagName] instanceof XMLElement
487
- ? this.node[tagName].toObject()
534
+ (this.node[tagName] as unknown) instanceof XMLElement
535
+ ? (this.node[tagName] as XMLElement).toObject()
488
536
  : this.node[tagName]
489
537
  }
490
538
  }
@@ -496,14 +544,15 @@ class XMLElement {
496
544
  return node
497
545
  }
498
546
 
499
- toString() {
500
- if (isLeaf(this.tagName)) {
501
- if (this.tagName === "#text") {
502
- return this.node[this.tagName]
503
- } else if (this.tagName === "__cdata") {
504
- return `<![CDATA[${this.node[this.tagName]}]]>`
505
- } else if (this.tagName === "#comment") {
506
- return `<!--${this.node[this.tagName]}-->`
547
+ toString(): string {
548
+ const tagName = this.tagName
549
+ if (isLeaf(tagName)) {
550
+ if (tagName === "#text") {
551
+ return String(this.node[tagName] || "")
552
+ } else if (tagName === "__cdata") {
553
+ return `<![CDATA[${this.node[tagName]}]]>`
554
+ } else if (tagName === "#comment") {
555
+ return `<!--${this.node[tagName]}-->`
507
556
  }
508
557
  }
509
558
  const builder = new XMLBuilder(fastXMLParserOptions)
@@ -511,21 +560,21 @@ class XMLElement {
511
560
  return builder.build(Array.isArray(object) ? object : [object])
512
561
  }
513
562
 
514
- get outerXML() {
563
+ get outerXML(): string {
515
564
  return this.toString()
516
565
  }
517
566
  }
518
567
 
519
568
  // Helper function to wrap the entire XML structure recursively
520
- export const xmlDOM = xmlString => {
569
+ export const xmlDOM = (xmlString: string): XMLElement => {
521
570
  const parser = new XMLParser(fastXMLParserOptions)
522
571
  // Parse the XML string into an object
523
- const xmlStructure = parser.parse(xmlString)
572
+ const xmlStructure = parser.parse(xmlString) as XMLNode[]
524
573
 
525
574
  const node =
526
575
  xmlStructure.length === 1
527
576
  ? xmlStructure[0]
528
- : {"#document": xmlStructure}
577
+ : ({"#document": xmlStructure} as XMLNode)
529
578
  // Recursively wrap each node in XMLElement
530
579
  return new XMLElement(node)
531
580
  }