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

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 +4 -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
@@ -2,19 +2,34 @@ import {BibLatexExporter} from "biblatex-csl-converter"
2
2
  import download from "downloadjs"
3
3
 
4
4
  import {shortFileTitle} from "fwtoolkit"
5
+ import type {BibDB, ExportDoc, FidusNode, ImageDB} from "../../types.js"
5
6
  import {fixTables, removeHidden} from "../tools/doc_content.js"
6
7
  import {createSlug} from "../tools/file.js"
7
8
  import {ZipFileCreator} from "../tools/zip.js"
8
9
  import {LatexExporterConvert} from "./convert.js"
9
10
  import {readMe} from "./readme.js"
11
+
10
12
  /*
11
13
  Exporter to LaTeX
12
14
  */
13
15
 
14
16
  export class LatexExporter {
15
- constructor(doc, bibDB, imageDB, updated) {
17
+ doc: ExportDoc
18
+ docTitle: string
19
+ bibDB: BibDB
20
+ imageDB: ImageDB
21
+ updated: any
22
+
23
+ docContent: any
24
+ zipFileName: string | false
25
+ textFiles: Array<{filename: string; contents: string}>
26
+ httpFiles: Array<{filename: string; url: string}>
27
+
28
+ conversion: any
29
+
30
+ constructor(doc: ExportDoc, bibDB: BibDB, imageDB: ImageDB, updated: any) {
16
31
  this.doc = doc
17
- this.docTitle = shortFileTitle(this.doc.title, this.doc.path)
32
+ this.docTitle = shortFileTitle(this.doc.title, this.doc.path || "")
18
33
  this.bibDB = bibDB
19
34
  this.imageDB = imageDB
20
35
  this.updated = updated
@@ -25,16 +40,16 @@ export class LatexExporter {
25
40
  this.httpFiles = []
26
41
  }
27
42
 
28
- init() {
43
+ init(): Promise<void> {
29
44
  this.zipFileName = `${createSlug(this.docTitle)}.latex.zip`
30
- this.docContent = fixTables(removeHidden(this.doc.content))
31
- this.converter = new LatexExporterConvert(
45
+ this.docContent = fixTables(removeHidden(this.doc.content) as FidusNode)
46
+ const converter = new LatexExporterConvert(
32
47
  this,
33
48
  this.imageDB,
34
49
  this.bibDB,
35
50
  this.doc.settings
36
51
  )
37
- this.conversion = this.converter.init(this.docContent)
52
+ this.conversion = converter.init(this.docContent)
38
53
  if (Object.keys(this.conversion.usedBibDB).length > 0) {
39
54
  const bibExport = new BibLatexExporter(this.conversion.usedBibDB)
40
55
  this.textFiles.push({
@@ -47,16 +62,16 @@ export class LatexExporter {
47
62
  contents: this.conversion.latex
48
63
  })
49
64
  this.textFiles.push({filename: "README.txt", contents: readMe})
50
- this.conversion.imageIds.forEach(id => {
65
+ this.conversion.imageIds.forEach((id: string) => {
51
66
  this.httpFiles.push({
52
- filename: this.imageDB.db[id].image.split("/").pop(),
53
- url: this.imageDB.db[id].image
67
+ filename: this.imageDB.db[id].image!.toString().split("/").pop()!,
68
+ url: this.imageDB.db[id].image as string
54
69
  })
55
70
  })
56
71
  return this.createZip()
57
72
  }
58
73
 
59
- createZip() {
74
+ createZip(): Promise<void> {
60
75
  const zipper = new ZipFileCreator(
61
76
  this.textFiles,
62
77
  this.httpFiles,
@@ -68,7 +83,7 @@ export class LatexExporter {
68
83
  return zipper.init().then(blob => this.download(blob))
69
84
  }
70
85
 
71
- download(blob) {
72
- return download(blob, this.zipFileName, "application/zip")
86
+ download(blob: Blob): void {
87
+ return download(blob, this.zipFileName as string, "application/zip")
73
88
  }
74
89
  }
@@ -1,4 +1,4 @@
1
- export const readMe = `We strongly recommend using LuaTeX instead of PDFTeX or XeLaTeX for document
1
+ export const readMe = `We strongly recommend using LuaTeX instead of PDFTeX or XeTeX for document
2
2
  compilation.
3
3
 
4
4
  In order to compile the LaTeX file, you need to use at least TeXLive 2016. If
@@ -18,5 +18,5 @@ If there are citations, continue with these commands:
18
18
  > biber document
19
19
  > lualatex document
20
20
 
21
- Look at the output messages to determine whether you need to run laluatex again.
21
+ Look at the output messages to determine whether you need to run lualatex again.
22
22
  `
@@ -0,0 +1,231 @@
1
+ import {gettext, longFilePath} from "fwtoolkit"
2
+
3
+ import {ShrinkFidus} from "./shrink.js"
4
+
5
+ import type {
6
+ BibDB,
7
+ E2EEOptions,
8
+ FidusNode,
9
+ ImageDB,
10
+ ImportDocument,
11
+ SaveCopyE2EE,
12
+ User
13
+ } from "../../types.js"
14
+
15
+ interface SaveCopyOptions {
16
+ importId?: string | number | null
17
+ e2eeOptions?: E2EEOptions | null
18
+ e2ee?: SaveCopyE2EE
19
+ importDocument: ImportDocument
20
+ }
21
+
22
+ export class SaveCopy {
23
+ doc: Record<string, unknown>
24
+ bibDB: BibDB
25
+ imageDB: ImageDB
26
+ newUser: User
27
+ importId: string | number | null
28
+ e2eeOptions: E2EEOptions | null
29
+ e2ee?: SaveCopyE2EE
30
+ importDocument: ImportDocument
31
+
32
+ constructor(
33
+ doc: Record<string, unknown>,
34
+ bibDB: BibDB,
35
+ imageDB: ImageDB,
36
+ newUser: User,
37
+ options: SaveCopyOptions
38
+ ) {
39
+ this.doc = doc
40
+ this.bibDB = bibDB
41
+ this.imageDB = imageDB
42
+ this.newUser = newUser
43
+ this.importId = options.importId ?? null
44
+ this.e2eeOptions = options.e2eeOptions ?? null
45
+ this.e2ee = options.e2ee
46
+ this.importDocument = options.importDocument
47
+ }
48
+
49
+ private _requestedPath(): string {
50
+ return longFilePath(
51
+ (this.doc.title as string) || "copy",
52
+ (this.doc.path as string) || "",
53
+ `${gettext("Copy of")} `
54
+ )
55
+ }
56
+
57
+ init(): Promise<{doc: Record<string, unknown>; docInfo: Record<string, unknown>}> {
58
+ let shrinkerPromise: Promise<{
59
+ doc: Record<string, unknown>
60
+ shrunkImageDB: Record<string, Record<string, unknown>>
61
+ shrunkBibDB: Record<string, Record<string, unknown>>
62
+ httpIncludes: Array<{url: string; filename: string}>
63
+ }>
64
+ if (this.doc.e2ee) {
65
+ shrinkerPromise = this._decryptDocument().then(decryptedDoc => {
66
+ const shrinker = new ShrinkFidus(
67
+ decryptedDoc as any,
68
+ this.imageDB,
69
+ this.bibDB
70
+ )
71
+ return shrinker.init()
72
+ })
73
+ } else {
74
+ const shrinker = new ShrinkFidus(this.doc as any, this.imageDB, this.bibDB)
75
+ shrinkerPromise = shrinker.init()
76
+ }
77
+ return shrinkerPromise
78
+ .then(({doc, shrunkImageDB, shrunkBibDB, httpIncludes}) => {
79
+ let targetE2EEPromise: Promise<{
80
+ doc: Record<string, unknown>
81
+ e2eeOptions: E2EEOptions | null
82
+ }>
83
+ if (this.e2eeOptions?.targetE2EE) {
84
+ targetE2EEPromise = this._setupTargetE2EE(doc, shrunkImageDB)
85
+ } else {
86
+ targetE2EEPromise = Promise.resolve({
87
+ doc,
88
+ e2eeOptions: null
89
+ })
90
+ }
91
+ return targetE2EEPromise.then(
92
+ ({doc: encryptedDoc, e2eeOptions}) => {
93
+ const importerE2EEOptions = e2eeOptions || {}
94
+ if (this.e2eeOptions?.sourceKey) {
95
+ ;(importerE2EEOptions as E2EEOptions).sourceKey =
96
+ this.e2eeOptions.sourceKey
97
+ }
98
+ return this.importDocument(
99
+ encryptedDoc,
100
+ {db: shrunkBibDB as any},
101
+ {db: shrunkImageDB as any},
102
+ httpIncludes,
103
+ {
104
+ user: this.newUser,
105
+ importId: this.importId,
106
+ requestedPath: this._requestedPath(),
107
+ e2eeOptions: importerE2EEOptions
108
+ }
109
+ )
110
+ }
111
+ )
112
+ })
113
+ }
114
+
115
+ async _decryptDocument(): Promise<Record<string, unknown>> {
116
+ const key = this.e2eeOptions?.sourceKey
117
+ if (!key) {
118
+ throw new Error("Missing source E2EE key for decryption")
119
+ }
120
+ if (!this.e2ee) {
121
+ throw new Error("Missing E2EE helper")
122
+ }
123
+ const decryptedDoc = Object.assign({}, this.doc)
124
+ if (typeof decryptedDoc.content === "string") {
125
+ decryptedDoc.content = (await this.e2ee.decryptObject(
126
+ decryptedDoc.content,
127
+ key
128
+ )) as FidusNode
129
+ }
130
+ if (typeof decryptedDoc.comments === "string") {
131
+ decryptedDoc.comments = await this.e2ee.decryptObject(
132
+ decryptedDoc.comments,
133
+ key
134
+ )
135
+ }
136
+ if (typeof decryptedDoc.bibliography === "string") {
137
+ decryptedDoc.bibliography = await this.e2ee.decryptObject(
138
+ decryptedDoc.bibliography,
139
+ key
140
+ )
141
+ }
142
+ if (this.bibDB && typeof this.bibDB.db === "string") {
143
+ this.bibDB.db = decryptedDoc.bibliography as any
144
+ }
145
+ if (this.imageDB && this.imageDB.db) {
146
+ await Promise.all(
147
+ Object.values(this.imageDB.db).map(async imageEntry => {
148
+ const copyright = imageEntry.copyright as
149
+ | string
150
+ | Record<string, unknown>
151
+ | undefined
152
+ if (
153
+ typeof copyright === "string" &&
154
+ copyright.length > 0
155
+ ) {
156
+ try {
157
+ imageEntry.copyright =
158
+ (await this.e2ee!.decryptObject(
159
+ copyright,
160
+ key
161
+ )) as Record<string, any>
162
+ } catch (_e) {
163
+ // If decryption fails, leave as-is
164
+ }
165
+ }
166
+ })
167
+ )
168
+ }
169
+ return decryptedDoc
170
+ }
171
+
172
+ async _setupTargetE2EE(
173
+ doc: Record<string, unknown>,
174
+ shrunkImageDB: Record<string, Record<string, unknown>>
175
+ ): Promise<{doc: Record<string, unknown>; e2eeOptions: E2EEOptions}> {
176
+ const password = (this.e2eeOptions as E2EEOptions & {targetPassword?: string})
177
+ .targetPassword
178
+ if (!password) {
179
+ throw new Error("Missing target E2EE password")
180
+ }
181
+ if (!this.e2ee) {
182
+ throw new Error("Missing E2EE helper")
183
+ }
184
+ const salt = this.e2ee.generateSalt()
185
+ const saltBase64 = btoa(String.fromCharCode(...salt))
186
+ const iterations = 600000
187
+ const key = await this.e2ee.deriveKey(password, salt, iterations)
188
+
189
+ const plainDoc = Object.assign({}, doc)
190
+
191
+ if (shrunkImageDB) {
192
+ await Promise.all(
193
+ Object.values(shrunkImageDB).map(async imageEntry => {
194
+ if (imageEntry.file) {
195
+ try {
196
+ const encryptedFile = await this.e2ee!.encryptImage(
197
+ imageEntry.file as Blob,
198
+ key
199
+ )
200
+ imageEntry.file = encryptedFile
201
+ imageEntry.original_file_type = imageEntry.file_type
202
+ imageEntry.file_type = "application/octet-stream"
203
+ } catch (_e) {
204
+ // If encryption fails, keep original file
205
+ }
206
+ }
207
+ if (imageEntry.copyright) {
208
+ try {
209
+ imageEntry.copyright = await this.e2ee!.encryptObject(
210
+ imageEntry.copyright,
211
+ key
212
+ )
213
+ } catch (_e) {
214
+ // If encryption fails, keep original
215
+ }
216
+ }
217
+ })
218
+ )
219
+ }
220
+
221
+ return {
222
+ doc: plainDoc,
223
+ e2eeOptions: {
224
+ enabled: true,
225
+ key,
226
+ salt: saltBase64,
227
+ iterations
228
+ }
229
+ }
230
+ }
231
+ }
@@ -0,0 +1,65 @@
1
+ import download from "downloadjs"
2
+ import {shortFileTitle} from "fwtoolkit"
3
+
4
+ import {ShrinkFidus} from "./shrink.js"
5
+ import {createSlug} from "../tools/file.js"
6
+ import {ZipFidus} from "./zip.js"
7
+
8
+ import type {BibDB, ExportDoc, ImageDB, TemplateFiles} from "../../types.js"
9
+
10
+ export class ExportFidusFile {
11
+ doc: ExportDoc
12
+ bibDB: BibDB
13
+ imageDB: ImageDB
14
+ includeTemplate: boolean
15
+ token: string | boolean
16
+ getTemplateFiles?: (
17
+ docId: string | number,
18
+ token: string | boolean
19
+ ) => Promise<TemplateFiles>
20
+
21
+ constructor(
22
+ doc: ExportDoc,
23
+ bibDB: BibDB,
24
+ imageDB: ImageDB,
25
+ includeTemplate = true,
26
+ token: string | boolean = false,
27
+ getTemplateFiles?: (
28
+ docId: string | number,
29
+ token: string | boolean
30
+ ) => Promise<TemplateFiles>
31
+ ) {
32
+ this.doc = doc
33
+ this.bibDB = bibDB
34
+ this.imageDB = imageDB
35
+ this.includeTemplate = includeTemplate
36
+ this.token = token
37
+ this.getTemplateFiles = getTemplateFiles
38
+ return this.init() as unknown as ExportFidusFile
39
+ }
40
+
41
+ init(): Promise<Blob> {
42
+ const shrinker = new ShrinkFidus(this.doc as any, this.imageDB, this.bibDB)
43
+ return shrinker
44
+ .init()
45
+ .then(({doc, shrunkImageDB, shrunkBibDB, httpIncludes}) => {
46
+ const zipper = new ZipFidus(
47
+ this.doc.id,
48
+ doc,
49
+ shrunkImageDB,
50
+ shrunkBibDB,
51
+ httpIncludes,
52
+ this.includeTemplate,
53
+ this.token,
54
+ this.getTemplateFiles
55
+ )
56
+ return zipper.init()
57
+ })
58
+ .then(blob => {
59
+ const title: string = shortFileTitle(this.doc.title, this.doc.path || "") || "untitled"
60
+ const filename = `${createSlug(title)}.fidus`
61
+ download(blob, filename, "application/fidus+zip")
62
+ return blob
63
+ })
64
+ }
65
+ }
@@ -0,0 +1,4 @@
1
+ export {ExportFidusFile} from "./file.js"
2
+ export {SaveRevision} from "./revision.js"
3
+ export {SaveCopy} from "./copy.js"
4
+ export {ZipFidus} from "./zip.js"
@@ -0,0 +1,76 @@
1
+ import {ShrinkFidus} from "./shrink.js"
2
+ import {ZipFidus} from "./zip.js"
3
+
4
+ import type {
5
+ BibDB,
6
+ ExportDoc,
7
+ ImageDB,
8
+ TemplateFiles,
9
+ UploadRevision
10
+ } from "../../types.js"
11
+
12
+ export class SaveRevision {
13
+ doc: ExportDoc
14
+ imageDB: ImageDB
15
+ bibDB: BibDB
16
+ note: string
17
+ uploadRevision: UploadRevision
18
+ token: string | boolean
19
+ getTemplateFiles?: (
20
+ docId: string | number,
21
+ token: string | boolean
22
+ ) => Promise<TemplateFiles>
23
+ onError?: (error: unknown) => void
24
+
25
+ constructor(
26
+ doc: ExportDoc,
27
+ imageDB: ImageDB,
28
+ bibDB: BibDB,
29
+ note: string,
30
+ uploadRevision: UploadRevision,
31
+ options: {
32
+ token?: string | boolean
33
+ getTemplateFiles?: (
34
+ docId: string | number,
35
+ token: string | boolean
36
+ ) => Promise<TemplateFiles>
37
+ onError?: (error: unknown) => void
38
+ } = {}
39
+ ) {
40
+ this.doc = doc
41
+ this.imageDB = imageDB
42
+ this.bibDB = bibDB
43
+ this.note = note
44
+ this.uploadRevision = uploadRevision
45
+ this.token = options.token ?? false
46
+ this.getTemplateFiles = options.getTemplateFiles
47
+ this.onError = options.onError
48
+ }
49
+
50
+ init(): Promise<unknown> {
51
+ const shrinker = new ShrinkFidus(this.doc as any, this.imageDB, this.bibDB)
52
+
53
+ return shrinker
54
+ .init()
55
+ .then(({doc, shrunkImageDB, shrunkBibDB, httpIncludes}) => {
56
+ const zipper = new ZipFidus(
57
+ this.doc.id,
58
+ doc,
59
+ shrunkImageDB,
60
+ shrunkBibDB,
61
+ httpIncludes,
62
+ true,
63
+ this.token,
64
+ this.getTemplateFiles
65
+ )
66
+ return zipper.init()
67
+ })
68
+ .then(blob => this.uploadRevision(blob, this.doc as any))
69
+ .catch(error => {
70
+ if (this.onError) {
71
+ this.onError(error)
72
+ }
73
+ throw error
74
+ })
75
+ }
76
+ }
@@ -1,18 +1,40 @@
1
- import {addAlert} from "fwtoolkit"
1
+ import {addAlert, gettext} from "fwtoolkit"
2
+
2
3
  import {docSchema} from "../../schema/document/index.js"
3
4
  import {toMiniJSON} from "../../schema/mini_json.js"
5
+ import type {BibDB, FidusNode, ImageDB} from "../../types.js"
6
+
7
+ interface ShrinkDoc {
8
+ content: FidusNode
9
+ [key: string]: unknown
10
+ }
11
+
12
+ interface ShrinkResult {
13
+ doc: Record<string, unknown>
14
+ shrunkImageDB: Record<string, Record<string, unknown>>
15
+ shrunkBibDB: Record<string, Record<string, unknown>>
16
+ httpIncludes: Array<{url: string; filename: string}>
17
+ }
18
+
4
19
  // Generate a copy of the fidus doc, imageDB and bibDB with all clutter removed.
5
20
  export class ShrinkFidus {
21
+ doc: ShrinkDoc
22
+ imageDB: ImageDB
23
+ bibDB: BibDB
24
+ silent: boolean
25
+ imageList: (number | string)[]
26
+ citeList: (number | string)[]
27
+
6
28
  /**
7
- * @param {Object} doc - Full document object.
8
- * @param {Object} imageDB - Image database, e.g. {db: {...}}.
9
- * @param {Object} bibDB - Bibliography database, e.g. {db: {...}}.
10
- * @param {boolean} [silent=false] - When true, suppresses the
29
+ * @param doc - Full document object.
30
+ * @param imageDB - Image database wrapper, e.g. {db: {...}}.
31
+ * @param bibDB - Bibliography database wrapper, e.g. {db: {...}}.
32
+ * @param silent - When true, suppresses the
11
33
  * "File export has been initiated" info alert. Pass true when
12
34
  * shrinking multiple documents in a loop (e.g. one per book chapter)
13
35
  * and the caller already shows its own progress notification.
14
36
  */
15
- constructor(doc, imageDB, bibDB, silent = false) {
37
+ constructor(doc: ShrinkDoc, imageDB: ImageDB, bibDB: BibDB, silent = false) {
16
38
  this.doc = doc
17
39
  this.imageDB = imageDB
18
40
  this.bibDB = bibDB
@@ -21,9 +43,9 @@ export class ShrinkFidus {
21
43
  this.citeList = []
22
44
  }
23
45
 
24
- init() {
25
- const shrunkImageDB = {},
26
- httpIncludes = []
46
+ init(): Promise<ShrinkResult> {
47
+ const shrunkImageDB: Record<string, Record<string, unknown>> = {},
48
+ httpIncludes: Array<{url: string; filename: string}> = []
27
49
 
28
50
  if (!this.silent) {
29
51
  addAlert("info", gettext("File export has been initiated."))
@@ -34,22 +56,27 @@ export class ShrinkFidus {
34
56
  this.imageList = [...new Set(this.imageList)] // unique values
35
57
 
36
58
  this.imageList.forEach(itemId => {
37
- shrunkImageDB[itemId] = Object.assign({}, this.imageDB.db[itemId])
59
+ const key = String(itemId)
60
+ shrunkImageDB[key] = Object.assign(
61
+ {},
62
+ this.imageDB.db[key]
63
+ ) as Record<string, unknown>
38
64
  // Remove parts that are connected to a particular user/server
39
- delete shrunkImageDB[itemId].cats
40
- delete shrunkImageDB[itemId].thumbnail
41
- delete shrunkImageDB[itemId].pk
42
- delete shrunkImageDB[itemId].added
43
- const imageUrl = shrunkImageDB[itemId].image
44
- let filename
65
+ delete shrunkImageDB[key].cats
66
+ delete shrunkImageDB[key].thumbnail
67
+ delete shrunkImageDB[key].pk
68
+ delete shrunkImageDB[key].added
69
+ const imageUrl = shrunkImageDB[key].image as string
70
+ let filename: string
45
71
  if (imageUrl.startsWith("blob:")) {
46
72
  // Blob URL produced by decrypting an E2EE image client-side.
47
73
  // The URL itself carries no useful file extension, so derive
48
74
  // one from the image entry's MIME type instead. Without this
49
75
  // the server rejects the upload because get_encrypted_file_path
50
76
  // requires a recognised extension.
51
- const mime = shrunkImageDB[itemId].file_type || "image/png"
52
- const mimeExtMap = {
77
+ const mime =
78
+ (shrunkImageDB[key].file_type as string) || "image/png"
79
+ const mimeExtMap: Record<string, string> = {
53
80
  "image/png": "png",
54
81
  "image/jpeg": "jpg",
55
82
  "image/jpg": "jpg",
@@ -59,11 +86,11 @@ export class ShrinkFidus {
59
86
  "image/avif": "avif"
60
87
  }
61
88
  const ext = mimeExtMap[mime] || "png"
62
- filename = `images/${itemId}.${ext}`
89
+ filename = `images/${key}.${ext}`
63
90
  } else {
64
91
  filename = `images/${imageUrl.split("/").pop()}`
65
92
  }
66
- shrunkImageDB[itemId].image = filename
93
+ shrunkImageDB[key].image = filename
67
94
  httpIncludes.push({
68
95
  url: imageUrl,
69
96
  filename
@@ -72,12 +99,16 @@ export class ShrinkFidus {
72
99
 
73
100
  this.citeList = [...new Set(this.citeList)] // unique values
74
101
 
75
- const shrunkBibDB = {}
102
+ const shrunkBibDB: Record<string, Record<string, unknown>> = {}
76
103
  this.citeList.forEach(itemId => {
77
- shrunkBibDB[itemId] = Object.assign({}, this.bibDB.db[itemId])
104
+ const key = String(itemId)
105
+ shrunkBibDB[key] = Object.assign(
106
+ {},
107
+ this.bibDB.db[key]
108
+ ) as Record<string, unknown>
78
109
  // Remove the cats, as it is only a list of IDs for one
79
110
  // particular user/server.
80
- delete shrunkBibDB[itemId].cats
111
+ delete shrunkBibDB[key].cats
81
112
  })
82
113
 
83
114
  const docCopy = Object.assign({}, this.doc)
@@ -93,7 +124,9 @@ export class ShrinkFidus {
93
124
  delete docCopy.updated
94
125
  delete docCopy.revisions
95
126
 
96
- docCopy.content = toMiniJSON(docSchema.nodeFromJSON(docCopy.content))
127
+ docCopy.content = toMiniJSON(
128
+ docSchema.nodeFromJSON(docCopy.content as unknown as Record<string, unknown>)
129
+ ) as unknown as FidusNode
97
130
 
98
131
  return new Promise(resolve =>
99
132
  resolve({
@@ -105,21 +138,23 @@ export class ShrinkFidus {
105
138
  )
106
139
  }
107
140
 
108
- walkTree(node) {
141
+ walkTree(node: FidusNode): void {
109
142
  switch (node.type) {
110
143
  case "citation":
111
144
  this.citeList = this.citeList.concat(
112
- node.attrs.references.map(ref => ref.id)
145
+ (node.attrs?.references as Array<{id: number | string}>).map(
146
+ ref => ref.id
147
+ )
113
148
  )
114
149
  break
115
150
  case "image":
116
- if (node.attrs.image !== false) {
117
- this.imageList.push(node.attrs.image)
151
+ if (node.attrs && node.attrs.image !== false) {
152
+ this.imageList.push(node.attrs.image as number | string)
118
153
  }
119
154
  break
120
155
  case "footnote":
121
156
  if (node.attrs?.footnote) {
122
- node.attrs.footnote.forEach(childNode =>
157
+ ;(node.attrs.footnote as FidusNode[]).forEach(childNode =>
123
158
  this.walkTree(childNode)
124
159
  )
125
160
  }