@sync-in/server 1.3.2 → 1.3.4

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 (454) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/README.md +3 -3
  3. package/package.json +14 -14
  4. package/server/applications/files/services/files-manager.service.js +11 -2
  5. package/server/applications/files/services/files-manager.service.js.map +1 -1
  6. package/server/applications/files/utils/send-file.js +1 -1
  7. package/server/applications/files/utils/send-file.js.map +1 -1
  8. package/server/applications/sync/services/sync-manager.service.js +1 -1
  9. package/server/applications/sync/services/sync-manager.service.js.map +1 -1
  10. package/server/applications/webdav/services/webdav-methods.service.js +28 -28
  11. package/server/applications/webdav/services/webdav-methods.service.js.map +1 -1
  12. package/static/3rdpartylicenses.txt +85 -85
  13. package/static/assets/codemirror/mode/gas/gas.js +2 -0
  14. package/static/chunk-2OSA27SE.js +1 -0
  15. package/static/chunk-2PQGH3LQ.js +1 -0
  16. package/static/chunk-2QNFUN7G.js +1 -0
  17. package/static/chunk-3UFSZ24R.js +1 -0
  18. package/static/chunk-3XDVB3TW.js +1 -0
  19. package/static/chunk-4RF354LU.js +1 -0
  20. package/static/chunk-55WOZ7P6.js +4 -0
  21. package/static/chunk-5SYLS7WR.js +1 -0
  22. package/static/chunk-6HV65OKG.js +1 -0
  23. package/static/chunk-7XBZXSHI.js +1 -0
  24. package/static/chunk-AS7H5UIO.js +1 -0
  25. package/static/chunk-BOIXDTUT.js +4 -0
  26. package/static/chunk-ESSY62VJ.js +1 -0
  27. package/static/chunk-GLAK4VQT.js +1 -0
  28. package/static/chunk-GW5AVRYT.js +1 -0
  29. package/static/chunk-HPRC4PXX.js +1 -0
  30. package/static/chunk-J6YSVODR.js +1 -0
  31. package/static/chunk-JQOMI5VI.js +560 -0
  32. package/static/chunk-MLLPT7BU.js +1 -0
  33. package/static/chunk-MTBJHA2L.js +1 -0
  34. package/static/chunk-OWYD7F64.js +1 -0
  35. package/static/chunk-Q35EEVWP.js +1 -0
  36. package/static/chunk-Q7LN54AP.js +1 -0
  37. package/static/chunk-QKELW3MH.js +1 -0
  38. package/static/chunk-RTRJ3KFH.js +1 -0
  39. package/static/chunk-SOYI5P5A.js +7 -0
  40. package/static/{chunk-E27KCFP6.js → chunk-VCXIQZT4.js} +3 -3
  41. package/static/chunk-W4LKCEBR.js +1 -0
  42. package/static/chunk-WWKXW4MM.js +24 -0
  43. package/static/chunk-X2BMM3NY.js +1 -0
  44. package/static/chunk-X4CIBLP6.js +1 -0
  45. package/static/chunk-XQFA4DLU.js +1 -0
  46. package/static/chunk-YQGJX5R7.js +1 -0
  47. package/static/chunk-ZEZVOO4G.js +1 -0
  48. package/static/chunk-ZJDBESQA.js +1 -0
  49. package/static/index.html +2 -2
  50. package/static/main-2GG5BCQL.js +10 -0
  51. package/static/{scripts-MQMRSPYD.js → scripts-263WP5VB.js} +2 -2
  52. package/static/{styles-TJJDSCD4.css → styles-3DONJ2Z4.css} +1 -1
  53. package/sync-in-server.js +12 -5
  54. package/static/assets/mimes/7zip.svg +0 -14
  55. package/static/assets/mimes/application-7zip.svg +0 -14
  56. package/static/assets/mimes/application-atom+xml.svg +0 -15
  57. package/static/assets/mimes/application-gzip.svg +0 -16
  58. package/static/assets/mimes/application-mathml+xml.svg +0 -188
  59. package/static/assets/mimes/application-mp4.svg +0 -18
  60. package/static/assets/mimes/application-msexcel.svg +0 -1
  61. package/static/assets/mimes/application-msword-template.svg +0 -1
  62. package/static/assets/mimes/application-pgp-encrypted.svg +0 -16
  63. package/static/assets/mimes/application-pgp-keys.svg +0 -16
  64. package/static/assets/mimes/application-pgp-signature.svg +0 -16
  65. package/static/assets/mimes/application-powerpoint.svg +0 -1
  66. package/static/assets/mimes/application-rdf+xml.svg +0 -14
  67. package/static/assets/mimes/application-rss+xml.svg +0 -15
  68. package/static/assets/mimes/application-rtf.svg +0 -14
  69. package/static/assets/mimes/application-text.svg +0 -14
  70. package/static/assets/mimes/application-vnd.ms-excel.sheet.binary.macroenabled.12.svg +0 -1
  71. package/static/assets/mimes/application-vnd.ms-excel.sheet.macroenabled.12.svg +0 -1
  72. package/static/assets/mimes/application-vnd.ms-excel.template.macroenabled.12.svg +0 -1
  73. package/static/assets/mimes/application-vnd.ms-powerpoint.presentation.macroenabled.12.svg +0 -1
  74. package/static/assets/mimes/application-vnd.ms-powerpoint.template.macroenabled.12.svg +0 -1
  75. package/static/assets/mimes/application-vnd.ms-word.document.macroenabled.12.svg +0 -1
  76. package/static/assets/mimes/application-vnd.ms-word.svg +0 -1
  77. package/static/assets/mimes/application-vnd.ms-word.template.macroenabled.12.svg +0 -1
  78. package/static/assets/mimes/application-vnd.mspowerpoint.svg +0 -1
  79. package/static/assets/mimes/application-vnd.oasis.opendocument.chart.svg +0 -1
  80. package/static/assets/mimes/application-vnd.oasis.opendocument.text-master.svg +0 -92
  81. package/static/assets/mimes/application-vnd.oasis.opendocument.text-web.svg +0 -18
  82. package/static/assets/mimes/application-vnd.openofficeorg.extension.svg +0 -59
  83. package/static/assets/mimes/application-vnd.openxmlformats-officedocument.presentationml.presentation.svg +0 -1
  84. package/static/assets/mimes/application-vnd.openxmlformats-officedocument.presentationml.slideshow.svg +0 -1
  85. package/static/assets/mimes/application-vnd.openxmlformats-officedocument.spreadsheetml.sheet.svg +0 -1
  86. package/static/assets/mimes/application-vnd.openxmlformats-officedocument.spreadsheetml.template.svg +0 -1
  87. package/static/assets/mimes/application-vnd.openxmlformats-officedocument.wordprocessingml.document.svg +0 -1
  88. package/static/assets/mimes/application-vnd.openxmlformats-officedocument.wordprocessingml.template.svg +0 -1
  89. package/static/assets/mimes/application-vnd.rn-realmedia.svg +0 -18
  90. package/static/assets/mimes/application-vnd.sun.xml.calc.svg +0 -1
  91. package/static/assets/mimes/application-vnd.sun.xml.writer-global.svg +0 -1
  92. package/static/assets/mimes/application-vnd.sun.xml.writer-template.svg +0 -1
  93. package/static/assets/mimes/application-vnd.sun.xml.writer.svg +0 -1
  94. package/static/assets/mimes/application-vnd.sun.xml.writer.template.svg +0 -14
  95. package/static/assets/mimes/application-wps-office.doc.svg +0 -1
  96. package/static/assets/mimes/application-wps-office.docx.svg +0 -1
  97. package/static/assets/mimes/application-wps-office.ppt.svg +0 -1
  98. package/static/assets/mimes/application-wps-office.pptx.svg +0 -1
  99. package/static/assets/mimes/application-wps-office.xls.svg +0 -1
  100. package/static/assets/mimes/application-wps-office.xlsx.svg +0 -1
  101. package/static/assets/mimes/application-x-7zip.svg +0 -14
  102. package/static/assets/mimes/application-x-ace.svg +0 -14
  103. package/static/assets/mimes/application-x-addon.svg +0 -59
  104. package/static/assets/mimes/application-x-ar.svg +0 -16
  105. package/static/assets/mimes/application-x-arc.svg +0 -14
  106. package/static/assets/mimes/application-x-archive.svg +0 -16
  107. package/static/assets/mimes/application-x-arj.svg +0 -14
  108. package/static/assets/mimes/application-x-audacity-project.svg +0 -24
  109. package/static/assets/mimes/application-x-bzdvi.svg +0 -14
  110. package/static/assets/mimes/application-x-bzip-compressed-tar.svg +0 -14
  111. package/static/assets/mimes/application-x-class-file.svg +0 -37
  112. package/static/assets/mimes/application-x-compress-tar.svg +0 -16
  113. package/static/assets/mimes/application-x-compress.svg +0 -16
  114. package/static/assets/mimes/application-x-compressed-tar.svg +0 -14
  115. package/static/assets/mimes/application-x-core.svg +0 -20
  116. package/static/assets/mimes/application-x-cpio.svg +0 -16
  117. package/static/assets/mimes/application-x-deb.svg +0 -14
  118. package/static/assets/mimes/application-x-designer.svg +0 -48
  119. package/static/assets/mimes/application-x-egon.svg +0 -12
  120. package/static/assets/mimes/application-x-extension-html.svg +0 -18
  121. package/static/assets/mimes/application-x-font-afm.svg +0 -14
  122. package/static/assets/mimes/application-x-font-snf.svg +0 -14
  123. package/static/assets/mimes/application-x-font-speedo.svg +0 -14
  124. package/static/assets/mimes/application-x-font-type1.svg +0 -14
  125. package/static/assets/mimes/application-x-gettext-translation.svg +0 -14
  126. package/static/assets/mimes/application-x-gnome-theme-package.svg +0 -109
  127. package/static/assets/mimes/application-x-gzdvi.svg +0 -16
  128. package/static/assets/mimes/application-x-gzip.svg +0 -16
  129. package/static/assets/mimes/application-x-httpd-php.svg +0 -18
  130. package/static/assets/mimes/application-x-iso9660-image.svg +0 -292
  131. package/static/assets/mimes/application-x-java-archive.svg +0 -16
  132. package/static/assets/mimes/application-x-jokosher.svg +0 -24
  133. package/static/assets/mimes/application-x-kcachegrind.svg +0 -273
  134. package/static/assets/mimes/application-x-kcsrc.svg +0 -109
  135. package/static/assets/mimes/application-x-keepass2.svg +0 -2
  136. package/static/assets/mimes/application-x-kgetlist.svg +0 -53
  137. package/static/assets/mimes/application-x-lha.svg +0 -14
  138. package/static/assets/mimes/application-x-lzma-compressed-tar.svg +0 -16
  139. package/static/assets/mimes/application-x-lzop.svg +0 -16
  140. package/static/assets/mimes/application-x-m4.svg +0 -14
  141. package/static/assets/mimes/application-x-matroska.svg +0 -18
  142. package/static/assets/mimes/application-x-mplayer2.svg +0 -18
  143. package/static/assets/mimes/application-x-ms-application.svg +0 -306
  144. package/static/assets/mimes/application-x-msdos-program.svg +0 -306
  145. package/static/assets/mimes/application-x-msdownload.svg +0 -306
  146. package/static/assets/mimes/application-x-msi.svg +0 -306
  147. package/static/assets/mimes/application-x-mswinurl.svg +0 -18
  148. package/static/assets/mimes/application-x-mswrite.svg +0 -1
  149. package/static/assets/mimes/application-x-object.svg +0 -273
  150. package/static/assets/mimes/application-x-ole-storage.svg +0 -273
  151. package/static/assets/mimes/application-x-pak.svg +0 -16
  152. package/static/assets/mimes/application-x-perl.svg +0 -15
  153. package/static/assets/mimes/application-x-php.svg +0 -18
  154. package/static/assets/mimes/application-x-python-bytecode.svg +0 -16
  155. package/static/assets/mimes/application-x-rar.svg +0 -14
  156. package/static/assets/mimes/application-x-rpm.svg +0 -14
  157. package/static/assets/mimes/application-x-ruby.svg +0 -22
  158. package/static/assets/mimes/application-x-sh.svg +0 -17
  159. package/static/assets/mimes/application-x-shared-library-la.svg +0 -62
  160. package/static/assets/mimes/application-x-shellscript.svg +0 -17
  161. package/static/assets/mimes/application-x-shockwave-flash.svg +0 -18
  162. package/static/assets/mimes/application-x-srt.svg +0 -210
  163. package/static/assets/mimes/application-x-tar.svg +0 -16
  164. package/static/assets/mimes/application-x-tarz.svg +0 -14
  165. package/static/assets/mimes/application-x-trash.svg +0 -14
  166. package/static/assets/mimes/application-x-tzo.svg +0 -14
  167. package/static/assets/mimes/application-x-wine-extension-pdd.svg +0 -14
  168. package/static/assets/mimes/application-x-zip.svg +0 -14
  169. package/static/assets/mimes/application-x-zoo.svg +0 -14
  170. package/static/assets/mimes/application-xhtml+xml.svg +0 -18
  171. package/static/assets/mimes/application-xml.svg +0 -18
  172. package/static/assets/mimes/application-xsd.svg +0 -18
  173. package/static/assets/mimes/application-xslt+xml.svg +0 -18
  174. package/static/assets/mimes/application-zip.svg +0 -14
  175. package/static/assets/mimes/applications-java.svg +0 -14
  176. package/static/assets/mimes/archive.svg +0 -16
  177. package/static/assets/mimes/ascii.svg +0 -14
  178. package/static/assets/mimes/audio-ac3.svg +0 -24
  179. package/static/assets/mimes/audio-flac.svg +0 -24
  180. package/static/assets/mimes/audio-mpeg.svg +0 -24
  181. package/static/assets/mimes/audio-vn.rn-realmedia.svg +0 -18
  182. package/static/assets/mimes/audio-vnd.rn-realvideo.svg +0 -18
  183. package/static/assets/mimes/audio-x-adpcm.svg +0 -24
  184. package/static/assets/mimes/audio-x-aiff.svg +0 -24
  185. package/static/assets/mimes/audio-x-flac+ogg.svg +0 -24
  186. package/static/assets/mimes/audio-x-flac.svg +0 -24
  187. package/static/assets/mimes/audio-x-it.svg +0 -24
  188. package/static/assets/mimes/audio-x-monkey.svg +0 -24
  189. package/static/assets/mimes/audio-x-mpegurl.svg +0 -24
  190. package/static/assets/mimes/audio-x-wav.svg +0 -24
  191. package/static/assets/mimes/audio-x-xi.svg +0 -24
  192. package/static/assets/mimes/audio-x-xm.svg +0 -24
  193. package/static/assets/mimes/binary.svg +0 -40
  194. package/static/assets/mimes/deb.svg +0 -14
  195. package/static/assets/mimes/divx.svg +0 -18
  196. package/static/assets/mimes/document.svg +0 -14
  197. package/static/assets/mimes/emblem-package.svg +0 -16
  198. package/static/assets/mimes/eps.svg +0 -24
  199. package/static/assets/mimes/exec.svg +0 -40
  200. package/static/assets/mimes/folder-tar.svg +0 -16
  201. package/static/assets/mimes/folder_tar.svg +0 -16
  202. package/static/assets/mimes/font-otf.svg +0 -14
  203. package/static/assets/mimes/font.svg +0 -14
  204. package/static/assets/mimes/font_bitmap.svg +0 -14
  205. package/static/assets/mimes/font_truetype.svg +0 -14
  206. package/static/assets/mimes/font_type1.svg +0 -14
  207. package/static/assets/mimes/fonts-package.svg +0 -16
  208. package/static/assets/mimes/gedit-plugin.svg +0 -59
  209. package/static/assets/mimes/gnome-exe-thumbnailer-generic-x.svg +0 -306
  210. package/static/assets/mimes/gnome-exe-thumbnailer-generic.svg +0 -306
  211. package/static/assets/mimes/gnome-exe-thumbnailer-template.svg +0 -306
  212. package/static/assets/mimes/gnome-fs-executable.svg +0 -40
  213. package/static/assets/mimes/gnome-mime-application-atom+xml.svg +0 -15
  214. package/static/assets/mimes/gnome-mime-application-msexcel.svg +0 -1
  215. package/static/assets/mimes/gnome-mime-application-msword.svg +0 -1
  216. package/static/assets/mimes/gnome-mime-application-ogg.svg +0 -24
  217. package/static/assets/mimes/gnome-mime-application-pdf.svg +0 -13
  218. package/static/assets/mimes/gnome-mime-application-postscript.svg +0 -14
  219. package/static/assets/mimes/gnome-mime-application-powerpoint.svg +0 -1
  220. package/static/assets/mimes/gnome-mime-application-rss+xml.svg +0 -15
  221. package/static/assets/mimes/gnome-mime-application-rtf.svg +0 -14
  222. package/static/assets/mimes/gnome-mime-application-vnd.ms-excel.svg +0 -1
  223. package/static/assets/mimes/gnome-mime-application-vnd.ms-powerpoint.svg +0 -1
  224. package/static/assets/mimes/gnome-mime-application-vnd.ms-word.svg +0 -1
  225. package/static/assets/mimes/gnome-mime-application-vnd.mspowerpoint.svg +0 -1
  226. package/static/assets/mimes/gnome-mime-application-vnd.oasis.opendocument.formula.svg +0 -188
  227. package/static/assets/mimes/gnome-mime-application-vnd.oasis.opendocument.text-web.svg +0 -18
  228. package/static/assets/mimes/gnome-mime-application-vnd.openxmlformats-officedocument.presentationml.presentation.svg +0 -1
  229. package/static/assets/mimes/gnome-mime-application-vnd.openxmlformats-officedocument.presentationml.slideshow.svg +0 -1
  230. package/static/assets/mimes/gnome-mime-application-vnd.openxmlformats-officedocument.spreadsheetml.sheet.svg +0 -1
  231. package/static/assets/mimes/gnome-mime-application-vnd.openxmlformats-officedocument.wordprocessingml.document.svg +0 -1
  232. package/static/assets/mimes/gnome-mime-application-vnd.rn-realmedia-secure.svg +0 -18
  233. package/static/assets/mimes/gnome-mime-application-vnd.rn-realmedia-vbr.svg +0 -18
  234. package/static/assets/mimes/gnome-mime-application-vnd.rn-realmedia.svg +0 -18
  235. package/static/assets/mimes/gnome-mime-application-wps-office.doc.svg +0 -1
  236. package/static/assets/mimes/gnome-mime-application-wps-office.docx.svg +0 -1
  237. package/static/assets/mimes/gnome-mime-application-wps-office.ppt.svg +0 -1
  238. package/static/assets/mimes/gnome-mime-application-wps-office.pptx.svg +0 -1
  239. package/static/assets/mimes/gnome-mime-application-wps-office.xls.svg +0 -1
  240. package/static/assets/mimes/gnome-mime-application-wps-office.xlsx.svg +0 -1
  241. package/static/assets/mimes/gnome-mime-application-x-7z-compressed.svg +0 -14
  242. package/static/assets/mimes/gnome-mime-application-x-7zip.svg +0 -14
  243. package/static/assets/mimes/gnome-mime-application-x-archive.svg +0 -16
  244. package/static/assets/mimes/gnome-mime-application-x-arj.svg +0 -16
  245. package/static/assets/mimes/gnome-mime-application-x-bittorrent.svg +0 -53
  246. package/static/assets/mimes/gnome-mime-application-x-bzip-compressed-tar.svg +0 -16
  247. package/static/assets/mimes/gnome-mime-application-x-bzip-compressed.svg +0 -16
  248. package/static/assets/mimes/gnome-mime-application-x-bzip.svg +0 -16
  249. package/static/assets/mimes/gnome-mime-application-x-class-file.svg +0 -14
  250. package/static/assets/mimes/gnome-mime-application-x-compress.svg +0 -16
  251. package/static/assets/mimes/gnome-mime-application-x-compressed-tar.svg +0 -16
  252. package/static/assets/mimes/gnome-mime-application-x-cpio-compressed.svg +0 -16
  253. package/static/assets/mimes/gnome-mime-application-x-cpio.svg +0 -16
  254. package/static/assets/mimes/gnome-mime-application-x-deb.svg +0 -14
  255. package/static/assets/mimes/gnome-mime-application-x-designer.svg +0 -48
  256. package/static/assets/mimes/gnome-mime-application-x-executable.svg +0 -40
  257. package/static/assets/mimes/gnome-mime-application-x-font-afm.svg +0 -14
  258. package/static/assets/mimes/gnome-mime-application-x-font-bdf.svg +0 -14
  259. package/static/assets/mimes/gnome-mime-application-x-font-linux-psf.svg +0 -14
  260. package/static/assets/mimes/gnome-mime-application-x-font-pcf.svg +0 -14
  261. package/static/assets/mimes/gnome-mime-application-x-font-sunos-news.svg +0 -14
  262. package/static/assets/mimes/gnome-mime-application-x-font-ttf.svg +0 -14
  263. package/static/assets/mimes/gnome-mime-application-x-glade.svg +0 -48
  264. package/static/assets/mimes/gnome-mime-application-x-gnome-app-info.svg +0 -109
  265. package/static/assets/mimes/gnome-mime-application-x-gnome-theme-package.svg +0 -109
  266. package/static/assets/mimes/gnome-mime-application-x-gzip.svg +0 -16
  267. package/static/assets/mimes/gnome-mime-application-x-gzpostscript.svg +0 -14
  268. package/static/assets/mimes/gnome-mime-application-x-jar.svg +0 -16
  269. package/static/assets/mimes/gnome-mime-application-x-java.svg +0 -14
  270. package/static/assets/mimes/gnome-mime-application-x-killustrator.svg +0 -12
  271. package/static/assets/mimes/gnome-mime-application-x-lha.svg +0 -16
  272. package/static/assets/mimes/gnome-mime-application-x-lhz.svg +0 -16
  273. package/static/assets/mimes/gnome-mime-application-x-lzma-compressed-tar.svg +0 -16
  274. package/static/assets/mimes/gnome-mime-application-x-lzma.svg +0 -16
  275. package/static/assets/mimes/gnome-mime-application-x-ms-dos-executable.svg +0 -306
  276. package/static/assets/mimes/gnome-mime-application-x-perl.svg +0 -15
  277. package/static/assets/mimes/gnome-mime-application-x-php.svg +0 -18
  278. package/static/assets/mimes/gnome-mime-application-x-python-bytecode.svg +0 -16
  279. package/static/assets/mimes/gnome-mime-application-x-rar.svg +0 -14
  280. package/static/assets/mimes/gnome-mime-application-x-rpm.svg +0 -14
  281. package/static/assets/mimes/gnome-mime-application-x-ruby.svg +0 -22
  282. package/static/assets/mimes/gnome-mime-application-x-shellscript.svg +0 -17
  283. package/static/assets/mimes/gnome-mime-application-x-shockwave-flash.svg +0 -18
  284. package/static/assets/mimes/gnome-mime-application-x-stuffit.svg +0 -16
  285. package/static/assets/mimes/gnome-mime-application-x-tar.svg +0 -16
  286. package/static/assets/mimes/gnome-mime-application-x-tarz.svg +0 -16
  287. package/static/assets/mimes/gnome-mime-application-x-tex.svg +0 -79
  288. package/static/assets/mimes/gnome-mime-application-x-theme.svg +0 -109
  289. package/static/assets/mimes/gnome-mime-application-x-zip.svg +0 -14
  290. package/static/assets/mimes/gnome-mime-application-xhtml+xml.svg +0 -18
  291. package/static/assets/mimes/gnome-mime-application-xml.svg +0 -18
  292. package/static/assets/mimes/gnome-mime-application-zip.svg +0 -14
  293. package/static/assets/mimes/gnome-mime-application.svg +0 -40
  294. package/static/assets/mimes/gnome-mime-audio.svg +0 -24
  295. package/static/assets/mimes/gnome-mime-image-vnd.adobe.photoshop.svg +0 -14
  296. package/static/assets/mimes/gnome-mime-image-x-cmu-raster.svg +0 -12
  297. package/static/assets/mimes/gnome-mime-image-x-killustrator.svg +0 -12
  298. package/static/assets/mimes/gnome-mime-image-x-psd.svg +0 -14
  299. package/static/assets/mimes/gnome-mime-image-x-xpixmap.svg +0 -12
  300. package/static/assets/mimes/gnome-mime-image.svg +0 -12
  301. package/static/assets/mimes/gnome-mime-text-html.svg +0 -18
  302. package/static/assets/mimes/gnome-mime-text-install.svg +0 -20
  303. package/static/assets/mimes/gnome-mime-text-plain.svg +0 -14
  304. package/static/assets/mimes/gnome-mime-text-vnd.wap.wml.svg +0 -18
  305. package/static/assets/mimes/gnome-mime-text-x-changelog.svg +0 -208
  306. package/static/assets/mimes/gnome-mime-text-x-copying.svg +0 -17
  307. package/static/assets/mimes/gnome-mime-text-x-csh.svg +0 -17
  308. package/static/assets/mimes/gnome-mime-text-x-gtkrc.svg +0 -109
  309. package/static/assets/mimes/gnome-mime-text-x-install.svg +0 -17
  310. package/static/assets/mimes/gnome-mime-text-x-java-source.svg +0 -14
  311. package/static/assets/mimes/gnome-mime-text-x-java.svg +0 -14
  312. package/static/assets/mimes/gnome-mime-text-x-makefile.svg +0 -176
  313. package/static/assets/mimes/gnome-mime-text-x-opml+xml.svg +0 -15
  314. package/static/assets/mimes/gnome-mime-text-x-opml.svg +0 -15
  315. package/static/assets/mimes/gnome-mime-text-x-python.svg +0 -16
  316. package/static/assets/mimes/gnome-mime-text-x-readme.svg +0 -15
  317. package/static/assets/mimes/gnome-mime-text-x-sh.svg +0 -17
  318. package/static/assets/mimes/gnome-mime-text-x-zsh.svg +0 -17
  319. package/static/assets/mimes/gnome-mime-text.svg +0 -14
  320. package/static/assets/mimes/gnome-mime-video-x-ms-asf.svg +0 -18
  321. package/static/assets/mimes/gnome-mime-video-x-ms-wmv.svg +0 -18
  322. package/static/assets/mimes/gnome-mime-video.svg +0 -18
  323. package/static/assets/mimes/gnome-mime-x-font-afm.svg +0 -14
  324. package/static/assets/mimes/gnome-mime-x-install.svg +0 -20
  325. package/static/assets/mimes/gnome-package.svg +0 -16
  326. package/static/assets/mimes/html.svg +0 -18
  327. package/static/assets/mimes/image-gif.svg +0 -12
  328. package/static/assets/mimes/image-jpeg.svg +0 -12
  329. package/static/assets/mimes/image-png.svg +0 -12
  330. package/static/assets/mimes/image-svg+xml-compressed.svg +0 -12
  331. package/static/assets/mimes/image-svg+xml.svg +0 -12
  332. package/static/assets/mimes/image-vnd.adobe.photoshop.svg +0 -14
  333. package/static/assets/mimes/image-vnd.microsoft.icon.svg +0 -12
  334. package/static/assets/mimes/image-x-psdimage-x-psd.svg +0 -14
  335. package/static/assets/mimes/image-x-xfig.svg +0 -12
  336. package/static/assets/mimes/image.svg +0 -12
  337. package/static/assets/mimes/internet-feed.svg +0 -15
  338. package/static/assets/mimes/libpeas-plugin.svg +0 -59
  339. package/static/assets/mimes/libreoffice-database.svg +0 -155
  340. package/static/assets/mimes/libreoffice-extension.svg +0 -59
  341. package/static/assets/mimes/libreoffice-extensionn.svg +0 -59
  342. package/static/assets/mimes/libreoffice-formula.svg +0 -188
  343. package/static/assets/mimes/libreoffice-oasis-formula.svg +0 -188
  344. package/static/assets/mimes/libreoffice34-extension.svg +0 -59
  345. package/static/assets/mimes/media-audio.svg +0 -24
  346. package/static/assets/mimes/media-video.svg +0 -18
  347. package/static/assets/mimes/mime-ascii.svg +0 -14
  348. package/static/assets/mimes/mime_ascii.svg +0 -14
  349. package/static/assets/mimes/misc.svg +0 -14
  350. package/static/assets/mimes/multipart-encrypted.svg +0 -273
  351. package/static/assets/mimes/music.svg +0 -24
  352. package/static/assets/mimes/none.svg +0 -110
  353. package/static/assets/mimes/openofficeorg3-extension.svg +0 -59
  354. package/static/assets/mimes/package.svg +0 -16
  355. package/static/assets/mimes/package_editors.svg +0 -14
  356. package/static/assets/mimes/pdf.svg +0 -13
  357. package/static/assets/mimes/preferences-certificate.svg +0 -28
  358. package/static/assets/mimes/preferences-plugin.svg +0 -59
  359. package/static/assets/mimes/rar.svg +0 -14
  360. package/static/assets/mimes/raw.svg +0 -12
  361. package/static/assets/mimes/scii.svg +0 -14
  362. package/static/assets/mimes/shellscript.svg +0 -17
  363. package/static/assets/mimes/sound.svg +0 -24
  364. package/static/assets/mimes/stock_certificate.svg +0 -28
  365. package/static/assets/mimes/stock_new-formula.svg +0 -188
  366. package/static/assets/mimes/stock_new-html.svg +0 -18
  367. package/static/assets/mimes/stock_script.svg +0 -17
  368. package/static/assets/mimes/stock_scripts.svg +0 -17
  369. package/static/assets/mimes/tar.svg +0 -16
  370. package/static/assets/mimes/text-css.svg +0 -18
  371. package/static/assets/mimes/text-enriched.svg +0 -14
  372. package/static/assets/mimes/text-htmlh.svg +0 -18
  373. package/static/assets/mimes/text-javascript.svg +0 -6
  374. package/static/assets/mimes/text-mht.svg +0 -18
  375. package/static/assets/mimes/text-plain.svg +0 -14
  376. package/static/assets/mimes/text-x-bibtex.svg +0 -79
  377. package/static/assets/mimes/text-x-gtkrc.svg +0 -109
  378. package/static/assets/mimes/text-x-java-source.svg +0 -14
  379. package/static/assets/mimes/text-x-lua.svg +0 -14
  380. package/static/assets/mimes/text-x-nfo.svg +0 -14
  381. package/static/assets/mimes/text-x-opml+xml.svg +0 -15
  382. package/static/assets/mimes/text-x-opml.svg +0 -15
  383. package/static/assets/mimes/text-x-tex.svg +0 -79
  384. package/static/assets/mimes/text-x-vala.svg +0 -14
  385. package/static/assets/mimes/text-x.svg +0 -14
  386. package/static/assets/mimes/text-xmcd.svg +0 -358
  387. package/static/assets/mimes/text.svg +0 -14
  388. package/static/assets/mimes/text2.svg +0 -14
  389. package/static/assets/mimes/tgz.svg +0 -16
  390. package/static/assets/mimes/txt.svg +0 -14
  391. package/static/assets/mimes/txt2.svg +0 -14
  392. package/static/assets/mimes/uri-mms.svg +0 -18
  393. package/static/assets/mimes/uri-mmst.svg +0 -18
  394. package/static/assets/mimes/uri-mmsu.svg +0 -18
  395. package/static/assets/mimes/uri-pnm.svg +0 -18
  396. package/static/assets/mimes/uri-rtspt.svg +0 -18
  397. package/static/assets/mimes/uri-rtspu.svg +0 -18
  398. package/static/assets/mimes/video-quicktime.svg +0 -18
  399. package/static/assets/mimes/video-vivo.svg +0 -18
  400. package/static/assets/mimes/video-wavelet.svg +0 -18
  401. package/static/assets/mimes/video-webm.svg +0 -18
  402. package/static/assets/mimes/video-x-anim.svg +0 -18
  403. package/static/assets/mimes/video-x-flic.svg +0 -18
  404. package/static/assets/mimes/video-x-google-vlc-plugin.svg +0 -18
  405. package/static/assets/mimes/video-x-javafx.svg +0 -18
  406. package/static/assets/mimes/video-x-matroska.svg +0 -18
  407. package/static/assets/mimes/video-x-mng.svg +0 -18
  408. package/static/assets/mimes/video-x-ms-asf-plugin.svg +0 -18
  409. package/static/assets/mimes/video-x-ms-asf.svg +0 -18
  410. package/static/assets/mimes/video-x-ms-wmp.svg +0 -18
  411. package/static/assets/mimes/video-x-ms-wmv.svg +0 -18
  412. package/static/assets/mimes/video-x-nsv.svg +0 -18
  413. package/static/assets/mimes/video-x-sgi-movie.svg +0 -18
  414. package/static/assets/mimes/video-x-theora+ogg.svg +0 -18
  415. package/static/assets/mimes/video-x-wmv.svg +0 -18
  416. package/static/assets/mimes/video.svg +0 -18
  417. package/static/assets/mimes/www.svg +0 -18
  418. package/static/assets/mimes/x-kde-nsplugin-generated.svg +0 -59
  419. package/static/assets/mimes/zip.svg +0 -14
  420. package/static/chunk-2LIE3SKB.js +0 -7
  421. package/static/chunk-3BKYCF53.js +0 -1
  422. package/static/chunk-6CFIZHYI.js +0 -1
  423. package/static/chunk-7FVU676A.js +0 -4
  424. package/static/chunk-7RNZNYVF.js +0 -1
  425. package/static/chunk-7SJOQRBE.js +0 -1
  426. package/static/chunk-BS5LXHXU.js +0 -1
  427. package/static/chunk-CPHC7U34.js +0 -1
  428. package/static/chunk-DVHXFWN7.js +0 -1
  429. package/static/chunk-DYRV5R67.js +0 -1
  430. package/static/chunk-EWJD5G76.js +0 -1
  431. package/static/chunk-EYXC4W63.js +0 -24
  432. package/static/chunk-FPEGN42P.js +0 -564
  433. package/static/chunk-GAL4ENT6.js +0 -1
  434. package/static/chunk-GSVMWC5N.js +0 -1
  435. package/static/chunk-HNWPHW2W.js +0 -1
  436. package/static/chunk-IPGNGPWY.js +0 -1
  437. package/static/chunk-J5O3CY2H.js +0 -1
  438. package/static/chunk-JRVJIJB5.js +0 -1
  439. package/static/chunk-MAWDGVNC.js +0 -1
  440. package/static/chunk-N3QPDPBV.js +0 -1
  441. package/static/chunk-NSXFB3SX.js +0 -1
  442. package/static/chunk-OVO4W2GF.js +0 -1
  443. package/static/chunk-SOLCSMU7.js +0 -1
  444. package/static/chunk-SY5HMUMM.js +0 -1
  445. package/static/chunk-SZKZH4MJ.js +0 -1
  446. package/static/chunk-UGSGMP2I.js +0 -1
  447. package/static/chunk-ULTPIQL3.js +0 -1
  448. package/static/chunk-VBWPPICY.js +0 -1
  449. package/static/chunk-VFSSL4TI.js +0 -1
  450. package/static/chunk-WGSPBZVN.js +0 -1
  451. package/static/chunk-X6UFHF4Q.js +0 -1
  452. package/static/chunk-XBHT4AH5.js +0 -1
  453. package/static/chunk-ZYB4TLJM.js +0 -4
  454. package/static/main-EDITZWHO.js +0 -10
@@ -94,33 +94,6 @@ let WebDAVMethods = class WebDAVMethods {
94
94
  return (0, _webdav1.DAV_ERROR_RES)(_common.HttpStatus.LOCKED, _webdav.PRECONDITION.LOCK_CONFLICT, res, fileLock.davLock?.lockroot || fileLock.dbFilePath);
95
95
  }
96
96
  }
97
- async lockRefresh(req, res, dbFilePath) {
98
- if (req.dav?.ifHeaders?.length !== 1) {
99
- this.logger.warn('Expected a lock token (only one lock may be refreshed at a time)');
100
- return res.status(_common.HttpStatus.BAD_REQUEST).send('Expected a lock token (only one lock may be refreshed at a time)');
101
- }
102
- let token;
103
- try {
104
- token = (0, _ifheader.extractOneToken)(req.dav.ifHeaders);
105
- } catch (e) {
106
- this.logger.warn(`${this.lockRefresh.name} - unable to extract token : ${JSON.stringify(req.dav.ifHeaders)} (${e})`);
107
- return res.status(_common.HttpStatus.BAD_REQUEST).send('Unable to extract token');
108
- }
109
- const lock = await this.filesLockManager.isLockedWithToken(token, dbFilePath);
110
- if (!lock) {
111
- this.logger.warn(`Lock token does not exist or not match URL : ${token}`);
112
- return (0, _webdav1.DAV_ERROR_RES)(_common.HttpStatus.PRECONDITION_FAILED, _webdav.PRECONDITION.LOCK_TOKEN_MISMATCH, res);
113
- }
114
- if (lock.owner.id !== req.user.id) {
115
- this.logger.warn(`Lock token does not match owner : ${lock.owner.login} != ${req.user.login}`);
116
- return res.status(_common.HttpStatus.FORBIDDEN).send('Lock token does not match owner');
117
- }
118
- await this.filesLockManager.refreshLockTimeout(lock, req.dav.lock.timeout);
119
- const lockProp = (0, _webdav1.LOCK_PROP)([
120
- lock
121
- ]);
122
- return res.type(_webdav.XML_CONTENT_TYPE).status(_common.HttpStatus.OK).send((0, _xml.xmlBuild)(lockProp));
123
- }
124
97
  async unlock(req, res) {
125
98
  if (!await (0, _files.isPathExists)(req.space.realPath)) {
126
99
  this.logger.warn(`Unable to unlock ${req.dav.url} : resource does not exist`);
@@ -338,7 +311,7 @@ let WebDAVMethods = class WebDAVMethods {
338
311
  return;
339
312
  }
340
313
  try {
341
- await this.filesManager.copyMove(req.user, req.space, dstSpace, req.dav.copyMove.isMove, req.dav.copyMove.overwrite, {
314
+ await this.filesManager.copyMove(req.user, req.space, dstSpace, req.dav.copyMove.isMove, req.dav.copyMove.overwrite, false, {
342
315
  depth: req.dav.depth,
343
316
  lockTokens: (0, _ifheader.extractAllTokens)(req.dav.ifHeaders)
344
317
  });
@@ -418,6 +391,33 @@ let WebDAVMethods = class WebDAVMethods {
418
391
  }
419
392
  return atLeastOneOk;
420
393
  }
394
+ async lockRefresh(req, res, dbFilePath) {
395
+ if (req.dav?.ifHeaders?.length !== 1) {
396
+ this.logger.warn('Expected a lock token (only one lock may be refreshed at a time)');
397
+ return res.status(_common.HttpStatus.BAD_REQUEST).send('Expected a lock token (only one lock may be refreshed at a time)');
398
+ }
399
+ let token;
400
+ try {
401
+ token = (0, _ifheader.extractOneToken)(req.dav.ifHeaders);
402
+ } catch (e) {
403
+ this.logger.warn(`${this.lockRefresh.name} - unable to extract token : ${JSON.stringify(req.dav.ifHeaders)} (${e})`);
404
+ return res.status(_common.HttpStatus.BAD_REQUEST).send('Unable to extract token');
405
+ }
406
+ const lock = await this.filesLockManager.isLockedWithToken(token, dbFilePath);
407
+ if (!lock) {
408
+ this.logger.warn(`Lock token does not exist or not match URL : ${token}`);
409
+ return (0, _webdav1.DAV_ERROR_RES)(_common.HttpStatus.PRECONDITION_FAILED, _webdav.PRECONDITION.LOCK_TOKEN_MISMATCH, res);
410
+ }
411
+ if (lock.owner.id !== req.user.id) {
412
+ this.logger.warn(`Lock token does not match owner : ${lock.owner.login} != ${req.user.login}`);
413
+ return res.status(_common.HttpStatus.FORBIDDEN).send('Lock token does not match owner');
414
+ }
415
+ await this.filesLockManager.refreshLockTimeout(lock, req.dav.lock.timeout);
416
+ const lockProp = (0, _webdav1.LOCK_PROP)([
417
+ lock
418
+ ]);
419
+ return res.type(_webdav.XML_CONTENT_TYPE).status(_common.HttpStatus.OK).send((0, _xml.xmlBuild)(lockProp));
420
+ }
421
421
  handleError(req, res, e, toUrl) {
422
422
  this.logger.error(`Unable to ${req.method} ${req.dav.url}${toUrl ? ` -> ${toUrl}` : ''} : ${e.message}`);
423
423
  if (e instanceof _filelockerror.LockConflict) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../backend/src/applications/webdav/services/webdav-methods.service.ts"],"sourcesContent":["/*\n * Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com>\n * This file is part of Sync-in | The open source file sync and share solution\n * See the LICENSE file for licensing details\n */\n\nimport { HttpException, HttpStatus, Injectable, Logger, StreamableFile } from '@nestjs/common'\nimport { FastifyReply } from 'fastify'\nimport { currentTimeStamp, encodeUrl } from '../../../common/shared'\nimport { FileLock } from '../../files/interfaces/file-lock.interface'\nimport { FileError } from '../../files/models/file-error'\nimport { LockConflict } from '../../files/models/file-lock-error'\nimport { FilesLockManager } from '../../files/services/files-lock-manager.service'\nimport { FilesManager } from '../../files/services/files-manager.service'\nimport { dirName, genEtag, isPathExists } from '../../files/utils/files'\nimport { SPACE_OPERATION, SPACE_REPOSITORY } from '../../spaces/constants/spaces'\nimport { SpaceEnv } from '../../spaces/models/space-env.model'\nimport { dbFileFromSpace } from '../../spaces/utils/paths'\nimport { haveSpaceEnvPermissions } from '../../spaces/utils/permissions'\nimport {\n DEPTH,\n LOCK_DISCOVERY_PROP,\n NS_PREFIX,\n PRECONDITION,\n PROPPATCH_METHOD,\n PROPPATCH_MODIFIED_PROPS,\n PROPPATCH_PROP_UPDATE,\n PROPPATCH_SUPPORTED_PROPS,\n PROPSTAT,\n STANDARD_PROPS,\n XML_CONTENT_TYPE\n} from '../constants/webdav'\nimport { IfHeaderDecorator } from '../decorators/if-header.decorator'\nimport { FastifyDAVRequest, WebDAVLock } from '../interfaces/webdav.interface'\nimport { extractAllTokens, extractOneToken } from '../utils/if-header'\nimport { DAV_ERROR_RES, LOCK_DISCOVERY, LOCK_PROP, MULTI_STATUS, PROP, PROP_STAT } from '../utils/webdav'\nimport { xmlBuild } from '../utils/xml'\nimport { WebDAVSpaces } from './webdav-spaces.service'\n\n@Injectable()\nexport class WebDAVMethods {\n private readonly logger = new Logger(WebDAVMethods.name)\n\n constructor(\n private readonly webDAVHandler: WebDAVSpaces,\n private readonly filesManager: FilesManager,\n private readonly filesLockManager: FilesLockManager\n ) {}\n\n async headOrGet(req: FastifyDAVRequest, res: FastifyReply, repository: string): Promise<StreamableFile> {\n if (repository === SPACE_REPOSITORY.FILES && !req.space.inSharesList) {\n const sendFile = this.filesManager.sendFileFromSpace(req.space)\n try {\n await sendFile.checks()\n return await sendFile.stream(req, res)\n } catch (e) {\n return this.handleError(req, res, e)\n }\n }\n this.logger.warn(`Not allowed on this resource : ${repository}`)\n return res.status(HttpStatus.FORBIDDEN).send('Not allowed on this resource')\n }\n\n @IfHeaderDecorator()\n async lock(req: FastifyDAVRequest, res: FastifyReply) {\n const isLockRefresh = !req.dav.body\n const rExists = await isPathExists(req.space.realPath)\n\n if (isLockRefresh) {\n // if the body has no content, the request must refresh the lock\n if (!rExists) {\n this.logger.warn('Lock refresh must specify an existing resource')\n return res.status(HttpStatus.BAD_REQUEST).send('Lock refresh must specify an existing resource')\n }\n return this.lockRefresh(req, res, req.space.dbFile.path)\n }\n if (!rExists) {\n if (!haveSpaceEnvPermissions(req.space, SPACE_OPERATION.ADD)) {\n this.logger.warn(`is not allowed to create on this space : *${req.space.alias}* (${req.space.id}) : ${req.space.url}`)\n return res.status(HttpStatus.FORBIDDEN).send('You are not allowed to do this action')\n }\n if (!(await isPathExists(dirName(req.space.realPath)))) {\n return res.status(HttpStatus.CONFLICT).send('Parent must exists')\n }\n }\n\n const davLock: WebDAVLock = {\n lockroot: req.dav.url,\n locktoken: null, // created later\n lockscope: req.dav.lock.lockscope,\n owner: req.dav.lock.owner\n }\n\n const [ok, fileLock] = await this.filesLockManager.create(req.user, req.space.dbFile, req.dav.depth, req.dav.lock.timeout, davLock)\n if (ok) {\n // Locking unmapped URLs: must create an empty resource (that is not a collection)\n if (!rExists) {\n // checkLocks set to false because the conflicts are already checked in `filesLockManager.create` method\n await this.filesManager.mkFile(req.user, req.space, false, false, false)\n }\n const lockProp = LOCK_PROP([fileLock])\n return res\n .header('lock-token', `<${davLock.locktoken}>`)\n .type(XML_CONTENT_TYPE)\n .status(rExists ? HttpStatus.OK : HttpStatus.CREATED)\n .send(xmlBuild(lockProp))\n } else {\n return DAV_ERROR_RES(HttpStatus.LOCKED, PRECONDITION.LOCK_CONFLICT, res, fileLock.davLock?.lockroot || fileLock.dbFilePath)\n }\n }\n\n private async lockRefresh(req: FastifyDAVRequest, res: FastifyReply, dbFilePath: string) {\n if (req.dav?.ifHeaders?.length !== 1) {\n this.logger.warn('Expected a lock token (only one lock may be refreshed at a time)')\n return res.status(HttpStatus.BAD_REQUEST).send('Expected a lock token (only one lock may be refreshed at a time)')\n }\n\n let token: string\n try {\n token = extractOneToken(req.dav.ifHeaders)\n } catch (e) {\n this.logger.warn(`${this.lockRefresh.name} - unable to extract token : ${JSON.stringify(req.dav.ifHeaders)} (${e})`)\n return res.status(HttpStatus.BAD_REQUEST).send('Unable to extract token')\n }\n\n const lock = await this.filesLockManager.isLockedWithToken(token, dbFilePath)\n if (!lock) {\n this.logger.warn(`Lock token does not exist or not match URL : ${token}`)\n return DAV_ERROR_RES(HttpStatus.PRECONDITION_FAILED, PRECONDITION.LOCK_TOKEN_MISMATCH, res)\n }\n if (lock.owner.id !== req.user.id) {\n this.logger.warn(`Lock token does not match owner : ${lock.owner.login} != ${req.user.login}`)\n return res.status(HttpStatus.FORBIDDEN).send('Lock token does not match owner')\n }\n\n await this.filesLockManager.refreshLockTimeout(lock, req.dav.lock.timeout)\n const lockProp = LOCK_PROP([lock])\n return res.type(XML_CONTENT_TYPE).status(HttpStatus.OK).send(xmlBuild(lockProp))\n }\n\n @IfHeaderDecorator()\n async unlock(req: FastifyDAVRequest, res: FastifyReply) {\n if (!(await isPathExists(req.space.realPath))) {\n this.logger.warn(`Unable to unlock ${req.dav.url} : resource does not exist`)\n return res.status(HttpStatus.NOT_FOUND).send(req.dav.url)\n }\n\n const lock = await this.filesLockManager.isLockedWithToken(req.dav.lock.token, req.space.dbFile.path)\n if (!lock) {\n this.logger.warn(`Lock token does not exist or not match URL : ${req.dav.lock.token}`)\n return DAV_ERROR_RES(HttpStatus.CONFLICT, PRECONDITION.LOCK_TOKEN_MISMATCH, res)\n }\n if (req.user.id !== lock.owner.id) {\n return res.status(HttpStatus.FORBIDDEN).send('Token was created by another user')\n }\n\n await this.filesLockManager.removeLock(lock.key)\n return res.status(HttpStatus.NO_CONTENT).send()\n }\n\n @IfHeaderDecorator()\n async propfind(req: FastifyDAVRequest, res: FastifyReply, repository: string): Promise<string> {\n if (repository === SPACE_REPOSITORY.FILES && !req.space.inSharesList) {\n if (!(await isPathExists(req.space.realPath))) {\n return res.status(HttpStatus.NOT_FOUND).send(req.dav.url)\n }\n }\n\n const responses: any[] = []\n let requestedProps: string[]\n let locks: Record<string, FileLock> = {}\n\n if (req.dav.propfindMode === PROPSTAT.PROP) {\n // ignores all unknown properties (non-RFC compliant but avoids generating too much content, faster)\n requestedProps = Object.keys(req.dav.body.propfind.prop).filter((prop: string) => STANDARD_PROPS.indexOf(prop) > -1)\n } else {\n requestedProps = STANDARD_PROPS\n }\n\n // Searches all child locks (only for real files) & ignores /webdav/shares endpoint (special case)\n if (req.dav.propfindMode !== PROPSTAT.PROPNAME && repository === SPACE_REPOSITORY.FILES && !req.space.inSharesList) {\n if (req.dav.depth === DEPTH.RESOURCE) {\n // match depth '0'\n locks = await this.filesLockManager.browseLocks(req.space.dbFile)\n } else {\n // match depth '1' or 'infinity'\n locks = await this.filesLockManager.browseParentChildLocks(req.space.dbFile)\n }\n }\n\n for await (const f of this.webDAVHandler.propfind(req, repository)) {\n let prop: any\n if (req.dav.propfindMode === PROPSTAT.PROPNAME) {\n prop = { ...Object.fromEntries(requestedProps.map((x) => [`${NS_PREFIX}:${x}`, ''])) }\n } else {\n prop = {}\n for (const p of requestedProps) {\n let fP: any\n if (p === LOCK_DISCOVERY_PROP) {\n fP = repository === SPACE_REPOSITORY.FILES && f.name in locks ? LOCK_DISCOVERY([locks[f.name]]) : null\n } else {\n fP = f[p]\n }\n if (fP !== undefined) prop[`${NS_PREFIX}:${p}`] = fP\n }\n }\n responses.push(PROP_STAT(f.href, PROP(prop, req.dav.httpVersion, HttpStatus.OK)))\n }\n const propfind = xmlBuild(MULTI_STATUS(responses))\n return res.type(XML_CONTENT_TYPE).status(HttpStatus.MULTI_STATUS).send(propfind)\n }\n\n @IfHeaderDecorator()\n async put(req: FastifyDAVRequest, res: FastifyReply): Promise<FastifyReply> {\n let rExists: boolean\n try {\n rExists = await this.filesManager.saveStream(req.user, req.space, req, {\n dav: {\n depth: req.dav.depth,\n lockTokens: extractAllTokens(req.dav.ifHeaders)\n }\n })\n } catch (e) {\n return this.handleError(req, res, e)\n }\n return res\n .header('etag', genEtag(null, req.space.realPath))\n .status(rExists ? HttpStatus.NO_CONTENT : HttpStatus.CREATED)\n .send()\n }\n\n @IfHeaderDecorator()\n async delete(req: FastifyDAVRequest, res: FastifyReply) {\n try {\n await this.filesManager.delete(req.user, req.space, { lockTokens: extractAllTokens(req.dav.ifHeaders) })\n } catch (e) {\n return this.handleError(req, res, e)\n }\n return res.status(HttpStatus.NO_CONTENT).send()\n }\n\n @IfHeaderDecorator()\n async proppatch(req: FastifyDAVRequest, res: FastifyReply) {\n /* only support 'time modifications' */\n if (!(await isPathExists(req.space.realPath))) {\n return res.status(HttpStatus.NOT_FOUND).send(req.dav.url)\n }\n\n // check locks\n try {\n await this.filesLockManager.checkConflicts(req.space.dbFile, req.dav.depth, {\n userId: req.user.id,\n lockTokens: extractAllTokens(req.dav.ifHeaders)\n })\n } catch (e) {\n return this.handleError(req, res, e)\n }\n\n // evaluate props and return multistatus if errors\n req.dav.proppatch = { props: {}, errors: [] }\n for (const action of Object.keys(req.dav.body[PROPPATCH_PROP_UPDATE])) {\n if (Object.values(PROPPATCH_METHOD).indexOf(action) === -1) {\n const msg = `Unknown tag : expected ${PROPPATCH_METHOD.SET} or ${PROPPATCH_METHOD.REMOVE}`\n this.logger.debug(msg)\n return res.status(HttpStatus.BAD_REQUEST).send(msg)\n }\n\n if (Array.isArray(req.dav.body[PROPPATCH_PROP_UPDATE][action])) {\n if (Object.keys(req.dav.body[PROPPATCH_PROP_UPDATE][action][0])[0] === PROPSTAT.PROP) {\n req.dav.body[PROPPATCH_PROP_UPDATE][action] = {\n [PROPSTAT.PROP]: req.dav.body[PROPPATCH_PROP_UPDATE][action].map((e: any) => e[PROPSTAT.PROP])\n }\n }\n }\n\n if (Object.keys(req.dav.body[PROPPATCH_PROP_UPDATE][action])[0] !== PROPSTAT.PROP) {\n const msg = `Unknown tag : expected ${PROPSTAT.PROP}`\n this.logger.debug(msg)\n return res.status(HttpStatus.BAD_REQUEST).send(msg)\n }\n\n if (!Array.isArray(req.dav.body[PROPPATCH_PROP_UPDATE][action][PROPSTAT.PROP])) {\n req.dav.body[PROPPATCH_PROP_UPDATE][action][PROPSTAT.PROP] = [req.dav.body[PROPPATCH_PROP_UPDATE][action][PROPSTAT.PROP]]\n }\n\n for (const prop of req.dav.body[PROPPATCH_PROP_UPDATE][action][PROPSTAT.PROP] as Record<string, string>[]) {\n for (let [name, value] of Object.entries(prop)) {\n if (action === PROPPATCH_METHOD.REMOVE) {\n value = null\n this.logger.debug(`Proppatch remove method not handled : ${name} -> ${value}`)\n }\n if (PROPPATCH_SUPPORTED_PROPS.indexOf(name) === -1) {\n req.dav.proppatch.errors.push(\n PROP(\n { [`${NS_PREFIX}:${name}`]: null },\n req.dav.httpVersion,\n HttpStatus.FORBIDDEN,\n STANDARD_PROPS.indexOf(name) > -1 ? PRECONDITION.PROTECTED_PROPERTY : undefined\n )\n )\n continue\n }\n req.dav.proppatch.props[name] = value\n }\n }\n }\n\n if (req.dav.proppatch.errors.length) {\n // convert all passed props to failed dependency\n for (const name of Object.keys(req.dav.proppatch.props)) {\n req.dav.proppatch.errors.push(PROP({ [`${NS_PREFIX}:${name}`]: null }, req.dav.httpVersion, HttpStatus.FAILED_DEPENDENCY))\n }\n const proppatch = xmlBuild(MULTI_STATUS(PROP_STAT(encodeUrl(req.dav.url), req.dav.proppatch.errors)))\n return res.status(HttpStatus.MULTI_STATUS).type(XML_CONTENT_TYPE).send(proppatch)\n }\n\n // apply modifications\n let atLeastOneError = false\n const states: Record<string, boolean> = {}\n for (const [name, value] of Object.entries(req.dav.proppatch.props)) {\n if (PROPPATCH_MODIFIED_PROPS.indexOf(name) > -1) {\n try {\n await this.filesManager.touch(req.user, req.space, currentTimeStamp(new Date(value)), false)\n } catch (e) {\n this.logger.error(`${this.proppatch.name} - unable to modify mtime on ${req.dav.url} : ${e}`)\n states[name] = false\n atLeastOneError = true\n }\n }\n // hook: we let the known Win32* properties pass to return a consistent result\n states[name] = true\n }\n\n const props = []\n for (const [name, state] of Object.entries(states)) {\n props.push(\n PROP(\n { [`${NS_PREFIX}:${name}`]: null },\n req.dav.httpVersion,\n state ? (atLeastOneError ? HttpStatus.FAILED_DEPENDENCY : HttpStatus.OK) : HttpStatus.BAD_REQUEST\n )\n )\n }\n const proppatch = xmlBuild(MULTI_STATUS(PROP_STAT(encodeUrl(req.dav.url), props)))\n return res.type(XML_CONTENT_TYPE).status(HttpStatus.MULTI_STATUS).send(proppatch)\n }\n\n @IfHeaderDecorator()\n async mkcol(req: FastifyDAVRequest, res: FastifyReply) {\n try {\n await this.filesManager.mkDir(req.user, req.space, false, { depth: req.dav.depth, lockTokens: extractAllTokens(req.dav.ifHeaders) })\n } catch (e) {\n return this.handleError(req, res, e)\n }\n return res.status(HttpStatus.CREATED).send()\n }\n\n @IfHeaderDecorator()\n async copyMove(req: FastifyDAVRequest, res: FastifyReply) {\n const dstSpace: SpaceEnv = await this.webDAVHandler.spaceEnv(req.user, req.dav.copyMove.destination)\n if (!dstSpace) {\n this.logger.warn(`Space not found for destination : ${req.dav.copyMove.destination}`)\n return res.status(HttpStatus.NOT_FOUND).send(req.dav.copyMove.destination)\n }\n const dstExisted = await isPathExists(dstSpace.realPath)\n // We must evaluate the if-headers on the destination\n const fakeDstReq = {\n dav: { ...req.dav, url: req.dav.copyMove.destination },\n user: req.user,\n space: dstSpace\n } as FastifyDAVRequest\n if (!(await this.evaluateIfHeaders(fakeDstReq, res))) {\n // if there is an error the response is generated inside the `evaluateIfHeaders` function\n return\n }\n try {\n await this.filesManager.copyMove(req.user, req.space, dstSpace, req.dav.copyMove.isMove, req.dav.copyMove.overwrite, {\n depth: req.dav.depth,\n lockTokens: extractAllTokens(req.dav.ifHeaders)\n })\n } catch (e) {\n return this.handleError(req, res, e, dstSpace.url)\n }\n return res.status(dstExisted ? HttpStatus.NO_CONTENT : HttpStatus.CREATED).send()\n }\n\n protected async evaluateIfHeaders(req: FastifyDAVRequest, res: FastifyReply): Promise<boolean> {\n if (!req.dav.ifHeaders) return true\n const errors: string[] = []\n let lastPath = null\n let lastSpaceEnv: SpaceEnv\n let lastRPath = undefined\n let lastEtag = undefined // for now, we only generate one etag type (weak)\n let atLeastOneOk = false\n\n for (const condition of req.dav.ifHeaders) {\n if (condition.path) {\n if (condition.path !== lastPath) {\n lastPath = condition.path\n lastSpaceEnv = await this.webDAVHandler.spaceEnv(req.user, lastPath)\n }\n // the path will be the same across conditions\n if (!lastSpaceEnv) {\n this.logger.warn(`If Header : path mismatch (${condition.path})`)\n return false\n }\n } else {\n lastPath = req.dav.url\n lastSpaceEnv = req.space\n }\n\n if (condition.haveLock) {\n try {\n const dbFile = dbFileFromSpace(req.user.id, lastSpaceEnv)\n const match = !!(await this.filesLockManager.getLocksByPath(dbFile)).length\n if (condition.haveLock.mustMatch !== match) {\n errors.push(`have lock condition mismatch (${condition.haveLock.mustMatch} != ${match})`)\n continue\n }\n } catch (e) {\n errors.push(`have lock condition mismatch : ${e.message}`)\n continue\n }\n }\n\n if (condition.token) {\n const token = await this.filesLockManager.getLockByToken(condition.token.value)\n const match = token && lastPath.startsWith(token.davLock?.lockroot)\n if (condition.token.mustMatch !== match) {\n if (!token) {\n errors.push(`lock token not found`)\n } else {\n errors.push(`lock token url mismatch (${lastPath} is not a child of ${token.davLock?.lockroot})`)\n }\n continue\n }\n }\n\n if (condition.etag) {\n if (lastEtag === undefined) {\n if (lastRPath === undefined) {\n lastRPath = (await isPathExists(req.space.realPath)) ? req.space.realPath : null\n }\n lastEtag = lastRPath ? genEtag(null, lastRPath) : null\n }\n const match = lastEtag === condition.etag.value\n if (condition.etag.mustMatch !== match) {\n errors.push(`etag mismatch (${condition.etag.value} != ${lastEtag})`)\n continue\n }\n }\n\n atLeastOneOk = true\n break\n }\n\n if (!atLeastOneOk) {\n this.logger.warn(`If header condition failed : ${errors.join(', ')}`)\n res.status(HttpStatus.PRECONDITION_FAILED).send('If header condition failed')\n }\n return atLeastOneOk\n }\n\n private handleError(req: FastifyDAVRequest, res: FastifyReply, e: any, toUrl?: string) {\n this.logger.error(`Unable to ${req.method} ${req.dav.url}${toUrl ? ` -> ${toUrl}` : ''} : ${e.message}`)\n if (e instanceof LockConflict) {\n return DAV_ERROR_RES(HttpStatus.LOCKED, PRECONDITION.LOCK_CONFLICT, res, e.lock.davLock?.lockroot || e.lock.dbFilePath)\n } else if (e instanceof FileError) {\n return res.status(e.httpCode).send(e.message)\n }\n throw new HttpException(e.message, HttpStatus.INTERNAL_SERVER_ERROR)\n }\n}\n"],"names":["WebDAVMethods","headOrGet","req","res","repository","SPACE_REPOSITORY","FILES","space","inSharesList","sendFile","filesManager","sendFileFromSpace","checks","stream","e","handleError","logger","warn","status","HttpStatus","FORBIDDEN","send","lock","isLockRefresh","dav","body","rExists","isPathExists","realPath","BAD_REQUEST","lockRefresh","dbFile","path","haveSpaceEnvPermissions","SPACE_OPERATION","ADD","alias","id","url","dirName","CONFLICT","davLock","lockroot","locktoken","lockscope","owner","ok","fileLock","filesLockManager","create","user","depth","timeout","mkFile","lockProp","LOCK_PROP","header","type","XML_CONTENT_TYPE","OK","CREATED","xmlBuild","DAV_ERROR_RES","LOCKED","PRECONDITION","LOCK_CONFLICT","dbFilePath","ifHeaders","length","token","extractOneToken","name","JSON","stringify","isLockedWithToken","PRECONDITION_FAILED","LOCK_TOKEN_MISMATCH","login","refreshLockTimeout","unlock","NOT_FOUND","removeLock","key","NO_CONTENT","propfind","responses","requestedProps","locks","propfindMode","PROPSTAT","PROP","Object","keys","prop","filter","STANDARD_PROPS","indexOf","PROPNAME","DEPTH","RESOURCE","browseLocks","browseParentChildLocks","f","webDAVHandler","fromEntries","map","x","NS_PREFIX","p","fP","LOCK_DISCOVERY_PROP","LOCK_DISCOVERY","undefined","push","PROP_STAT","href","httpVersion","MULTI_STATUS","put","saveStream","lockTokens","extractAllTokens","genEtag","delete","proppatch","checkConflicts","userId","props","errors","action","PROPPATCH_PROP_UPDATE","values","PROPPATCH_METHOD","msg","SET","REMOVE","debug","Array","isArray","value","entries","PROPPATCH_SUPPORTED_PROPS","PROTECTED_PROPERTY","FAILED_DEPENDENCY","encodeUrl","atLeastOneError","states","PROPPATCH_MODIFIED_PROPS","touch","currentTimeStamp","Date","error","state","mkcol","mkDir","copyMove","dstSpace","spaceEnv","destination","dstExisted","fakeDstReq","evaluateIfHeaders","isMove","overwrite","lastPath","lastSpaceEnv","lastRPath","lastEtag","atLeastOneOk","condition","haveLock","dbFileFromSpace","match","getLocksByPath","mustMatch","message","getLockByToken","startsWith","etag","join","toUrl","method","LockConflict","FileError","httpCode","HttpException","INTERNAL_SERVER_ERROR","Logger"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../backend/src/applications/webdav/services/webdav-methods.service.ts"],"sourcesContent":["/*\n * Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com>\n * This file is part of Sync-in | The open source file sync and share solution\n * See the LICENSE file for licensing details\n */\n\nimport { HttpException, HttpStatus, Injectable, Logger, StreamableFile } from '@nestjs/common'\nimport { FastifyReply } from 'fastify'\nimport { currentTimeStamp, encodeUrl } from '../../../common/shared'\nimport { FileLock } from '../../files/interfaces/file-lock.interface'\nimport { FileError } from '../../files/models/file-error'\nimport { LockConflict } from '../../files/models/file-lock-error'\nimport { FilesLockManager } from '../../files/services/files-lock-manager.service'\nimport { FilesManager } from '../../files/services/files-manager.service'\nimport { dirName, genEtag, isPathExists } from '../../files/utils/files'\nimport { SPACE_OPERATION, SPACE_REPOSITORY } from '../../spaces/constants/spaces'\nimport { SpaceEnv } from '../../spaces/models/space-env.model'\nimport { dbFileFromSpace } from '../../spaces/utils/paths'\nimport { haveSpaceEnvPermissions } from '../../spaces/utils/permissions'\nimport {\n DEPTH,\n LOCK_DISCOVERY_PROP,\n NS_PREFIX,\n PRECONDITION,\n PROPPATCH_METHOD,\n PROPPATCH_MODIFIED_PROPS,\n PROPPATCH_PROP_UPDATE,\n PROPPATCH_SUPPORTED_PROPS,\n PROPSTAT,\n STANDARD_PROPS,\n XML_CONTENT_TYPE\n} from '../constants/webdav'\nimport { IfHeaderDecorator } from '../decorators/if-header.decorator'\nimport { FastifyDAVRequest, WebDAVLock } from '../interfaces/webdav.interface'\nimport { extractAllTokens, extractOneToken } from '../utils/if-header'\nimport { DAV_ERROR_RES, LOCK_DISCOVERY, LOCK_PROP, MULTI_STATUS, PROP, PROP_STAT } from '../utils/webdav'\nimport { xmlBuild } from '../utils/xml'\nimport { WebDAVSpaces } from './webdav-spaces.service'\n\n@Injectable()\nexport class WebDAVMethods {\n private readonly logger = new Logger(WebDAVMethods.name)\n\n constructor(\n private readonly webDAVHandler: WebDAVSpaces,\n private readonly filesManager: FilesManager,\n private readonly filesLockManager: FilesLockManager\n ) {}\n\n async headOrGet(req: FastifyDAVRequest, res: FastifyReply, repository: string): Promise<StreamableFile> {\n if (repository === SPACE_REPOSITORY.FILES && !req.space.inSharesList) {\n const sendFile = this.filesManager.sendFileFromSpace(req.space)\n try {\n await sendFile.checks()\n return await sendFile.stream(req, res)\n } catch (e) {\n return this.handleError(req, res, e)\n }\n }\n this.logger.warn(`Not allowed on this resource : ${repository}`)\n return res.status(HttpStatus.FORBIDDEN).send('Not allowed on this resource')\n }\n\n @IfHeaderDecorator()\n async lock(req: FastifyDAVRequest, res: FastifyReply) {\n const isLockRefresh = !req.dav.body\n const rExists = await isPathExists(req.space.realPath)\n\n if (isLockRefresh) {\n // if the body has no content, the request must refresh the lock\n if (!rExists) {\n this.logger.warn('Lock refresh must specify an existing resource')\n return res.status(HttpStatus.BAD_REQUEST).send('Lock refresh must specify an existing resource')\n }\n return this.lockRefresh(req, res, req.space.dbFile.path)\n }\n if (!rExists) {\n if (!haveSpaceEnvPermissions(req.space, SPACE_OPERATION.ADD)) {\n this.logger.warn(`is not allowed to create on this space : *${req.space.alias}* (${req.space.id}) : ${req.space.url}`)\n return res.status(HttpStatus.FORBIDDEN).send('You are not allowed to do this action')\n }\n if (!(await isPathExists(dirName(req.space.realPath)))) {\n return res.status(HttpStatus.CONFLICT).send('Parent must exists')\n }\n }\n\n const davLock: WebDAVLock = {\n lockroot: req.dav.url,\n locktoken: null, // created later\n lockscope: req.dav.lock.lockscope,\n owner: req.dav.lock.owner\n }\n\n const [ok, fileLock] = await this.filesLockManager.create(req.user, req.space.dbFile, req.dav.depth, req.dav.lock.timeout, davLock)\n if (ok) {\n // Locking unmapped URLs: must create an empty resource (that is not a collection)\n if (!rExists) {\n // checkLocks set to false because the conflicts are already checked in `filesLockManager.create` method\n await this.filesManager.mkFile(req.user, req.space, false, false, false)\n }\n const lockProp = LOCK_PROP([fileLock])\n return res\n .header('lock-token', `<${davLock.locktoken}>`)\n .type(XML_CONTENT_TYPE)\n .status(rExists ? HttpStatus.OK : HttpStatus.CREATED)\n .send(xmlBuild(lockProp))\n } else {\n return DAV_ERROR_RES(HttpStatus.LOCKED, PRECONDITION.LOCK_CONFLICT, res, fileLock.davLock?.lockroot || fileLock.dbFilePath)\n }\n }\n\n @IfHeaderDecorator()\n async unlock(req: FastifyDAVRequest, res: FastifyReply) {\n if (!(await isPathExists(req.space.realPath))) {\n this.logger.warn(`Unable to unlock ${req.dav.url} : resource does not exist`)\n return res.status(HttpStatus.NOT_FOUND).send(req.dav.url)\n }\n\n const lock = await this.filesLockManager.isLockedWithToken(req.dav.lock.token, req.space.dbFile.path)\n if (!lock) {\n this.logger.warn(`Lock token does not exist or not match URL : ${req.dav.lock.token}`)\n return DAV_ERROR_RES(HttpStatus.CONFLICT, PRECONDITION.LOCK_TOKEN_MISMATCH, res)\n }\n if (req.user.id !== lock.owner.id) {\n return res.status(HttpStatus.FORBIDDEN).send('Token was created by another user')\n }\n\n await this.filesLockManager.removeLock(lock.key)\n return res.status(HttpStatus.NO_CONTENT).send()\n }\n\n @IfHeaderDecorator()\n async propfind(req: FastifyDAVRequest, res: FastifyReply, repository: string): Promise<string> {\n if (repository === SPACE_REPOSITORY.FILES && !req.space.inSharesList) {\n if (!(await isPathExists(req.space.realPath))) {\n return res.status(HttpStatus.NOT_FOUND).send(req.dav.url)\n }\n }\n\n const responses: any[] = []\n let requestedProps: string[]\n let locks: Record<string, FileLock> = {}\n\n if (req.dav.propfindMode === PROPSTAT.PROP) {\n // ignores all unknown properties (non-RFC compliant but avoids generating too much content, faster)\n requestedProps = Object.keys(req.dav.body.propfind.prop).filter((prop: string) => STANDARD_PROPS.indexOf(prop) > -1)\n } else {\n requestedProps = STANDARD_PROPS\n }\n\n // Searches all child locks (only for real files) & ignores /webdav/shares endpoint (special case)\n if (req.dav.propfindMode !== PROPSTAT.PROPNAME && repository === SPACE_REPOSITORY.FILES && !req.space.inSharesList) {\n if (req.dav.depth === DEPTH.RESOURCE) {\n // match depth '0'\n locks = await this.filesLockManager.browseLocks(req.space.dbFile)\n } else {\n // match depth '1' or 'infinity'\n locks = await this.filesLockManager.browseParentChildLocks(req.space.dbFile)\n }\n }\n\n for await (const f of this.webDAVHandler.propfind(req, repository)) {\n let prop: any\n if (req.dav.propfindMode === PROPSTAT.PROPNAME) {\n prop = { ...Object.fromEntries(requestedProps.map((x) => [`${NS_PREFIX}:${x}`, ''])) }\n } else {\n prop = {}\n for (const p of requestedProps) {\n let fP: any\n if (p === LOCK_DISCOVERY_PROP) {\n fP = repository === SPACE_REPOSITORY.FILES && f.name in locks ? LOCK_DISCOVERY([locks[f.name]]) : null\n } else {\n fP = f[p]\n }\n if (fP !== undefined) prop[`${NS_PREFIX}:${p}`] = fP\n }\n }\n responses.push(PROP_STAT(f.href, PROP(prop, req.dav.httpVersion, HttpStatus.OK)))\n }\n const propfind = xmlBuild(MULTI_STATUS(responses))\n return res.type(XML_CONTENT_TYPE).status(HttpStatus.MULTI_STATUS).send(propfind)\n }\n\n @IfHeaderDecorator()\n async put(req: FastifyDAVRequest, res: FastifyReply): Promise<FastifyReply> {\n let rExists: boolean\n try {\n rExists = await this.filesManager.saveStream(req.user, req.space, req, {\n dav: {\n depth: req.dav.depth,\n lockTokens: extractAllTokens(req.dav.ifHeaders)\n }\n })\n } catch (e) {\n return this.handleError(req, res, e)\n }\n return res\n .header('etag', genEtag(null, req.space.realPath))\n .status(rExists ? HttpStatus.NO_CONTENT : HttpStatus.CREATED)\n .send()\n }\n\n @IfHeaderDecorator()\n async delete(req: FastifyDAVRequest, res: FastifyReply) {\n try {\n await this.filesManager.delete(req.user, req.space, { lockTokens: extractAllTokens(req.dav.ifHeaders) })\n } catch (e) {\n return this.handleError(req, res, e)\n }\n return res.status(HttpStatus.NO_CONTENT).send()\n }\n\n @IfHeaderDecorator()\n async proppatch(req: FastifyDAVRequest, res: FastifyReply) {\n /* only support 'time modifications' */\n if (!(await isPathExists(req.space.realPath))) {\n return res.status(HttpStatus.NOT_FOUND).send(req.dav.url)\n }\n\n // check locks\n try {\n await this.filesLockManager.checkConflicts(req.space.dbFile, req.dav.depth, {\n userId: req.user.id,\n lockTokens: extractAllTokens(req.dav.ifHeaders)\n })\n } catch (e) {\n return this.handleError(req, res, e)\n }\n\n // evaluate props and return multistatus if errors\n req.dav.proppatch = { props: {}, errors: [] }\n for (const action of Object.keys(req.dav.body[PROPPATCH_PROP_UPDATE])) {\n if (Object.values(PROPPATCH_METHOD).indexOf(action) === -1) {\n const msg = `Unknown tag : expected ${PROPPATCH_METHOD.SET} or ${PROPPATCH_METHOD.REMOVE}`\n this.logger.debug(msg)\n return res.status(HttpStatus.BAD_REQUEST).send(msg)\n }\n\n if (Array.isArray(req.dav.body[PROPPATCH_PROP_UPDATE][action])) {\n if (Object.keys(req.dav.body[PROPPATCH_PROP_UPDATE][action][0])[0] === PROPSTAT.PROP) {\n req.dav.body[PROPPATCH_PROP_UPDATE][action] = {\n [PROPSTAT.PROP]: req.dav.body[PROPPATCH_PROP_UPDATE][action].map((e: any) => e[PROPSTAT.PROP])\n }\n }\n }\n\n if (Object.keys(req.dav.body[PROPPATCH_PROP_UPDATE][action])[0] !== PROPSTAT.PROP) {\n const msg = `Unknown tag : expected ${PROPSTAT.PROP}`\n this.logger.debug(msg)\n return res.status(HttpStatus.BAD_REQUEST).send(msg)\n }\n\n if (!Array.isArray(req.dav.body[PROPPATCH_PROP_UPDATE][action][PROPSTAT.PROP])) {\n req.dav.body[PROPPATCH_PROP_UPDATE][action][PROPSTAT.PROP] = [req.dav.body[PROPPATCH_PROP_UPDATE][action][PROPSTAT.PROP]]\n }\n\n for (const prop of req.dav.body[PROPPATCH_PROP_UPDATE][action][PROPSTAT.PROP] as Record<string, string>[]) {\n for (let [name, value] of Object.entries(prop)) {\n if (action === PROPPATCH_METHOD.REMOVE) {\n value = null\n this.logger.debug(`Proppatch remove method not handled : ${name} -> ${value}`)\n }\n if (PROPPATCH_SUPPORTED_PROPS.indexOf(name) === -1) {\n req.dav.proppatch.errors.push(\n PROP(\n { [`${NS_PREFIX}:${name}`]: null },\n req.dav.httpVersion,\n HttpStatus.FORBIDDEN,\n STANDARD_PROPS.indexOf(name) > -1 ? PRECONDITION.PROTECTED_PROPERTY : undefined\n )\n )\n continue\n }\n req.dav.proppatch.props[name] = value\n }\n }\n }\n\n if (req.dav.proppatch.errors.length) {\n // convert all passed props to failed dependency\n for (const name of Object.keys(req.dav.proppatch.props)) {\n req.dav.proppatch.errors.push(PROP({ [`${NS_PREFIX}:${name}`]: null }, req.dav.httpVersion, HttpStatus.FAILED_DEPENDENCY))\n }\n const proppatch = xmlBuild(MULTI_STATUS(PROP_STAT(encodeUrl(req.dav.url), req.dav.proppatch.errors)))\n return res.status(HttpStatus.MULTI_STATUS).type(XML_CONTENT_TYPE).send(proppatch)\n }\n\n // apply modifications\n let atLeastOneError = false\n const states: Record<string, boolean> = {}\n for (const [name, value] of Object.entries(req.dav.proppatch.props)) {\n if (PROPPATCH_MODIFIED_PROPS.indexOf(name) > -1) {\n try {\n await this.filesManager.touch(req.user, req.space, currentTimeStamp(new Date(value)), false)\n } catch (e) {\n this.logger.error(`${this.proppatch.name} - unable to modify mtime on ${req.dav.url} : ${e}`)\n states[name] = false\n atLeastOneError = true\n }\n }\n // hook: we let the known Win32* properties pass to return a consistent result\n states[name] = true\n }\n\n const props = []\n for (const [name, state] of Object.entries(states)) {\n props.push(\n PROP(\n { [`${NS_PREFIX}:${name}`]: null },\n req.dav.httpVersion,\n state ? (atLeastOneError ? HttpStatus.FAILED_DEPENDENCY : HttpStatus.OK) : HttpStatus.BAD_REQUEST\n )\n )\n }\n const proppatch = xmlBuild(MULTI_STATUS(PROP_STAT(encodeUrl(req.dav.url), props)))\n return res.type(XML_CONTENT_TYPE).status(HttpStatus.MULTI_STATUS).send(proppatch)\n }\n\n @IfHeaderDecorator()\n async mkcol(req: FastifyDAVRequest, res: FastifyReply) {\n try {\n await this.filesManager.mkDir(req.user, req.space, false, { depth: req.dav.depth, lockTokens: extractAllTokens(req.dav.ifHeaders) })\n } catch (e) {\n return this.handleError(req, res, e)\n }\n return res.status(HttpStatus.CREATED).send()\n }\n\n @IfHeaderDecorator()\n async copyMove(req: FastifyDAVRequest, res: FastifyReply) {\n const dstSpace: SpaceEnv = await this.webDAVHandler.spaceEnv(req.user, req.dav.copyMove.destination)\n if (!dstSpace) {\n this.logger.warn(`Space not found for destination : ${req.dav.copyMove.destination}`)\n return res.status(HttpStatus.NOT_FOUND).send(req.dav.copyMove.destination)\n }\n const dstExisted = await isPathExists(dstSpace.realPath)\n // We must evaluate the if-headers on the destination\n const fakeDstReq = {\n dav: { ...req.dav, url: req.dav.copyMove.destination },\n user: req.user,\n space: dstSpace\n } as FastifyDAVRequest\n if (!(await this.evaluateIfHeaders(fakeDstReq, res))) {\n // if there is an error the response is generated inside the `evaluateIfHeaders` function\n return\n }\n try {\n await this.filesManager.copyMove(req.user, req.space, dstSpace, req.dav.copyMove.isMove, req.dav.copyMove.overwrite, false, {\n depth: req.dav.depth,\n lockTokens: extractAllTokens(req.dav.ifHeaders)\n })\n } catch (e) {\n return this.handleError(req, res, e, dstSpace.url)\n }\n return res.status(dstExisted ? HttpStatus.NO_CONTENT : HttpStatus.CREATED).send()\n }\n\n protected async evaluateIfHeaders(req: FastifyDAVRequest, res: FastifyReply): Promise<boolean> {\n if (!req.dav.ifHeaders) return true\n const errors: string[] = []\n let lastPath = null\n let lastSpaceEnv: SpaceEnv\n let lastRPath = undefined\n let lastEtag = undefined // for now, we only generate one etag type (weak)\n let atLeastOneOk = false\n\n for (const condition of req.dav.ifHeaders) {\n if (condition.path) {\n if (condition.path !== lastPath) {\n lastPath = condition.path\n lastSpaceEnv = await this.webDAVHandler.spaceEnv(req.user, lastPath)\n }\n // the path will be the same across conditions\n if (!lastSpaceEnv) {\n this.logger.warn(`If Header : path mismatch (${condition.path})`)\n return false\n }\n } else {\n lastPath = req.dav.url\n lastSpaceEnv = req.space\n }\n\n if (condition.haveLock) {\n try {\n const dbFile = dbFileFromSpace(req.user.id, lastSpaceEnv)\n const match = !!(await this.filesLockManager.getLocksByPath(dbFile)).length\n if (condition.haveLock.mustMatch !== match) {\n errors.push(`have lock condition mismatch (${condition.haveLock.mustMatch} != ${match})`)\n continue\n }\n } catch (e) {\n errors.push(`have lock condition mismatch : ${e.message}`)\n continue\n }\n }\n\n if (condition.token) {\n const token = await this.filesLockManager.getLockByToken(condition.token.value)\n const match = token && lastPath.startsWith(token.davLock?.lockroot)\n if (condition.token.mustMatch !== match) {\n if (!token) {\n errors.push(`lock token not found`)\n } else {\n errors.push(`lock token url mismatch (${lastPath} is not a child of ${token.davLock?.lockroot})`)\n }\n continue\n }\n }\n\n if (condition.etag) {\n if (lastEtag === undefined) {\n if (lastRPath === undefined) {\n lastRPath = (await isPathExists(req.space.realPath)) ? req.space.realPath : null\n }\n lastEtag = lastRPath ? genEtag(null, lastRPath) : null\n }\n const match = lastEtag === condition.etag.value\n if (condition.etag.mustMatch !== match) {\n errors.push(`etag mismatch (${condition.etag.value} != ${lastEtag})`)\n continue\n }\n }\n\n atLeastOneOk = true\n break\n }\n\n if (!atLeastOneOk) {\n this.logger.warn(`If header condition failed : ${errors.join(', ')}`)\n res.status(HttpStatus.PRECONDITION_FAILED).send('If header condition failed')\n }\n return atLeastOneOk\n }\n\n private async lockRefresh(req: FastifyDAVRequest, res: FastifyReply, dbFilePath: string) {\n if (req.dav?.ifHeaders?.length !== 1) {\n this.logger.warn('Expected a lock token (only one lock may be refreshed at a time)')\n return res.status(HttpStatus.BAD_REQUEST).send('Expected a lock token (only one lock may be refreshed at a time)')\n }\n\n let token: string\n try {\n token = extractOneToken(req.dav.ifHeaders)\n } catch (e) {\n this.logger.warn(`${this.lockRefresh.name} - unable to extract token : ${JSON.stringify(req.dav.ifHeaders)} (${e})`)\n return res.status(HttpStatus.BAD_REQUEST).send('Unable to extract token')\n }\n\n const lock = await this.filesLockManager.isLockedWithToken(token, dbFilePath)\n if (!lock) {\n this.logger.warn(`Lock token does not exist or not match URL : ${token}`)\n return DAV_ERROR_RES(HttpStatus.PRECONDITION_FAILED, PRECONDITION.LOCK_TOKEN_MISMATCH, res)\n }\n if (lock.owner.id !== req.user.id) {\n this.logger.warn(`Lock token does not match owner : ${lock.owner.login} != ${req.user.login}`)\n return res.status(HttpStatus.FORBIDDEN).send('Lock token does not match owner')\n }\n\n await this.filesLockManager.refreshLockTimeout(lock, req.dav.lock.timeout)\n const lockProp = LOCK_PROP([lock])\n return res.type(XML_CONTENT_TYPE).status(HttpStatus.OK).send(xmlBuild(lockProp))\n }\n\n private handleError(req: FastifyDAVRequest, res: FastifyReply, e: any, toUrl?: string) {\n this.logger.error(`Unable to ${req.method} ${req.dav.url}${toUrl ? ` -> ${toUrl}` : ''} : ${e.message}`)\n if (e instanceof LockConflict) {\n return DAV_ERROR_RES(HttpStatus.LOCKED, PRECONDITION.LOCK_CONFLICT, res, e.lock.davLock?.lockroot || e.lock.dbFilePath)\n } else if (e instanceof FileError) {\n return res.status(e.httpCode).send(e.message)\n }\n throw new HttpException(e.message, HttpStatus.INTERNAL_SERVER_ERROR)\n }\n}\n"],"names":["WebDAVMethods","headOrGet","req","res","repository","SPACE_REPOSITORY","FILES","space","inSharesList","sendFile","filesManager","sendFileFromSpace","checks","stream","e","handleError","logger","warn","status","HttpStatus","FORBIDDEN","send","lock","isLockRefresh","dav","body","rExists","isPathExists","realPath","BAD_REQUEST","lockRefresh","dbFile","path","haveSpaceEnvPermissions","SPACE_OPERATION","ADD","alias","id","url","dirName","CONFLICT","davLock","lockroot","locktoken","lockscope","owner","ok","fileLock","filesLockManager","create","user","depth","timeout","mkFile","lockProp","LOCK_PROP","header","type","XML_CONTENT_TYPE","OK","CREATED","xmlBuild","DAV_ERROR_RES","LOCKED","PRECONDITION","LOCK_CONFLICT","dbFilePath","unlock","NOT_FOUND","isLockedWithToken","token","LOCK_TOKEN_MISMATCH","removeLock","key","NO_CONTENT","propfind","responses","requestedProps","locks","propfindMode","PROPSTAT","PROP","Object","keys","prop","filter","STANDARD_PROPS","indexOf","PROPNAME","DEPTH","RESOURCE","browseLocks","browseParentChildLocks","f","webDAVHandler","fromEntries","map","x","NS_PREFIX","p","fP","LOCK_DISCOVERY_PROP","name","LOCK_DISCOVERY","undefined","push","PROP_STAT","href","httpVersion","MULTI_STATUS","put","saveStream","lockTokens","extractAllTokens","ifHeaders","genEtag","delete","proppatch","checkConflicts","userId","props","errors","action","PROPPATCH_PROP_UPDATE","values","PROPPATCH_METHOD","msg","SET","REMOVE","debug","Array","isArray","value","entries","PROPPATCH_SUPPORTED_PROPS","PROTECTED_PROPERTY","length","FAILED_DEPENDENCY","encodeUrl","atLeastOneError","states","PROPPATCH_MODIFIED_PROPS","touch","currentTimeStamp","Date","error","state","mkcol","mkDir","copyMove","dstSpace","spaceEnv","destination","dstExisted","fakeDstReq","evaluateIfHeaders","isMove","overwrite","lastPath","lastSpaceEnv","lastRPath","lastEtag","atLeastOneOk","condition","haveLock","dbFileFromSpace","match","getLocksByPath","mustMatch","message","getLockByToken","startsWith","etag","join","PRECONDITION_FAILED","extractOneToken","JSON","stringify","login","refreshLockTimeout","toUrl","method","LockConflict","FileError","httpCode","HttpException","INTERNAL_SERVER_ERROR","Logger"],"mappings":"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"}
@@ -77,34 +77,6 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
77
77
  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
78
78
  SOFTWARE.
79
79
 
80
- --------------------------------------------------------------------------------
81
- Package: ngx-bootstrap
82
- License: "MIT"
83
-
84
- The MIT License (MIT)
85
-
86
- Copyright (c) 2015-2020 Valor Software
87
- Copyright (c) 2015-2020 Dmitriy Shekhovtsov<valorkin@gmail.com>
88
-
89
- Permission is hereby granted, free of charge, to any person obtaining a copy
90
- of this software and associated documentation files (the "Software"), to deal
91
- in the Software without restriction, including without limitation the rights
92
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
93
- copies of the Software, and to permit persons to whom the Software is
94
- furnished to do so, subject to the following conditions:
95
-
96
- The above copyright notice and this permission notice shall be included in all
97
- copies or substantial portions of the Software.
98
-
99
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
100
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
101
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
102
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
103
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
104
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
105
- SOFTWARE.
106
-
107
-
108
80
  --------------------------------------------------------------------------------
109
81
  Package: @fortawesome/free-brands-svg-icons
110
82
  License: "(CC-BY-4.0 AND MIT)"
@@ -134,7 +106,7 @@ as SVG and JS file types.
134
106
  In the Font Awesome Free download, the SIL OFL license applies to all icons
135
107
  packaged as web and desktop font files.
136
108
 
137
- Copyright (c) 2024 Fonticons, Inc. (https://fontawesome.com)
109
+ Copyright (c) 2025 Fonticons, Inc. (https://fontawesome.com)
138
110
  with Reserved Font Name: "Font Awesome".
139
111
 
140
112
  This Font Software is licensed under the SIL Open Font License, Version 1.1.
@@ -234,7 +206,7 @@ OTHER DEALINGS IN THE FONT SOFTWARE.
234
206
  In the Font Awesome Free download, the MIT license applies to all non-font and
235
207
  non-icon files.
236
208
 
237
- Copyright 2024 Fonticons, Inc.
209
+ Copyright 2025 Fonticons, Inc.
238
210
 
239
211
  Permission is hereby granted, free of charge, to any person obtaining a copy of
240
212
  this software and associated documentation files (the "Software"), to deal in the
@@ -275,6 +247,34 @@ trademarks does not indicate endorsement of the trademark holder by Font
275
247
  Awesome, nor vice versa. **Please do not use brand logos for any purpose except
276
248
  to represent the company, product, or service to which they refer.**
277
249
 
250
+ --------------------------------------------------------------------------------
251
+ Package: ngx-bootstrap
252
+ License: "MIT"
253
+
254
+ The MIT License (MIT)
255
+
256
+ Copyright (c) 2015-2020 Valor Software
257
+ Copyright (c) 2015-2020 Dmitriy Shekhovtsov<valorkin@gmail.com>
258
+
259
+ Permission is hereby granted, free of charge, to any person obtaining a copy
260
+ of this software and associated documentation files (the "Software"), to deal
261
+ in the Software without restriction, including without limitation the rights
262
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
263
+ copies of the Software, and to permit persons to whom the Software is
264
+ furnished to do so, subject to the following conditions:
265
+
266
+ The above copyright notice and this permission notice shall be included in all
267
+ copies or substantial portions of the Software.
268
+
269
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
270
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
271
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
272
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
273
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
274
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
275
+ SOFTWARE.
276
+
277
+
278
278
  --------------------------------------------------------------------------------
279
279
  Package: codemirror
280
280
  License: "MIT"
@@ -330,7 +330,7 @@ as SVG and JS file types.
330
330
  In the Font Awesome Free download, the SIL OFL license applies to all icons
331
331
  packaged as web and desktop font files.
332
332
 
333
- Copyright (c) 2024 Fonticons, Inc. (https://fontawesome.com)
333
+ Copyright (c) 2025 Fonticons, Inc. (https://fontawesome.com)
334
334
  with Reserved Font Name: "Font Awesome".
335
335
 
336
336
  This Font Software is licensed under the SIL Open Font License, Version 1.1.
@@ -430,7 +430,7 @@ OTHER DEALINGS IN THE FONT SOFTWARE.
430
430
  In the Font Awesome Free download, the MIT license applies to all non-font and
431
431
  non-icon files.
432
432
 
433
- Copyright 2024 Fonticons, Inc.
433
+ Copyright 2025 Fonticons, Inc.
434
434
 
435
435
  Permission is hereby granted, free of charge, to any person obtaining a copy of
436
436
  this software and associated documentation files (the "Software"), to deal in the
@@ -718,12 +718,12 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
718
718
  SOFTWARE.
719
719
 
720
720
  --------------------------------------------------------------------------------
721
- Package: @angular/cdk
721
+ Package: @angular/core
722
722
  License: "MIT"
723
723
 
724
724
  The MIT License
725
725
 
726
- Copyright (c) 2025 Google LLC.
726
+ Copyright (c) 2010-2025 Google LLC. https://angular.dev/license
727
727
 
728
728
  Permission is hereby granted, free of charge, to any person obtaining a copy
729
729
  of this software and associated documentation files (the "Software"), to deal
@@ -744,12 +744,12 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
744
744
  THE SOFTWARE.
745
745
 
746
746
  --------------------------------------------------------------------------------
747
- Package: @perfectmemory/ngx-contextmenu
747
+ Package: @angular/cdk
748
748
  License: "MIT"
749
749
 
750
- The MIT License (MIT)
750
+ The MIT License
751
751
 
752
- Copyright (c) 2022
752
+ Copyright (c) 2025 Google LLC.
753
753
 
754
754
  Permission is hereby granted, free of charge, to any person obtaining a copy
755
755
  of this software and associated documentation files (the "Software"), to deal
@@ -758,24 +758,24 @@ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
758
758
  copies of the Software, and to permit persons to whom the Software is
759
759
  furnished to do so, subject to the following conditions:
760
760
 
761
- The above copyright notice and this permission notice shall be included in all
762
- copies or substantial portions of the Software.
761
+ The above copyright notice and this permission notice shall be included in
762
+ all copies or substantial portions of the Software.
763
763
 
764
764
  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
765
765
  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
766
766
  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
767
767
  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
768
768
  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
769
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
770
- SOFTWARE.
769
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
770
+ THE SOFTWARE.
771
771
 
772
772
  --------------------------------------------------------------------------------
773
- Package: ngx-toastr
773
+ Package: @perfectmemory/ngx-contextmenu
774
774
  License: "MIT"
775
775
 
776
776
  The MIT License (MIT)
777
777
 
778
- Copyright (c) Scott Cooper <scttcper@gmail.com>
778
+ Copyright (c) 2022
779
779
 
780
780
  Permission is hereby granted, free of charge, to any person obtaining a copy
781
781
  of this software and associated documentation files (the "Software"), to deal
@@ -796,12 +796,12 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
796
796
  SOFTWARE.
797
797
 
798
798
  --------------------------------------------------------------------------------
799
- Package: @angular/core
799
+ Package: ngx-toastr
800
800
  License: "MIT"
801
801
 
802
- The MIT License
802
+ The MIT License (MIT)
803
803
 
804
- Copyright (c) 2010-2025 Google LLC. https://angular.dev/license
804
+ Copyright (c) Scott Cooper <scttcper@gmail.com>
805
805
 
806
806
  Permission is hereby granted, free of charge, to any person obtaining a copy
807
807
  of this software and associated documentation files (the "Software"), to deal
@@ -810,16 +810,16 @@ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
810
810
  copies of the Software, and to permit persons to whom the Software is
811
811
  furnished to do so, subject to the following conditions:
812
812
 
813
- The above copyright notice and this permission notice shall be included in
814
- all copies or substantial portions of the Software.
813
+ The above copyright notice and this permission notice shall be included in all
814
+ copies or substantial portions of the Software.
815
815
 
816
816
  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
817
817
  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
818
818
  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
819
819
  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
820
820
  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
821
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
822
- THE SOFTWARE.
821
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
822
+ SOFTWARE.
823
823
 
824
824
  --------------------------------------------------------------------------------
825
825
  Package: @angular/router
@@ -1096,37 +1096,6 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
1096
1096
  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
1097
1097
  THE SOFTWARE.
1098
1098
 
1099
- --------------------------------------------------------------------------------
1100
- Package: @angular/forms
1101
- License: "MIT"
1102
-
1103
- The MIT License
1104
-
1105
- Copyright (c) 2010-2025 Google LLC. https://angular.dev/license
1106
-
1107
- Permission is hereby granted, free of charge, to any person obtaining a copy
1108
- of this software and associated documentation files (the "Software"), to deal
1109
- in the Software without restriction, including without limitation the rights
1110
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
1111
- copies of the Software, and to permit persons to whom the Software is
1112
- furnished to do so, subject to the following conditions:
1113
-
1114
- The above copyright notice and this permission notice shall be included in
1115
- all copies or substantial portions of the Software.
1116
-
1117
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1118
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1119
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
1120
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1121
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
1122
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
1123
- THE SOFTWARE.
1124
-
1125
- --------------------------------------------------------------------------------
1126
- Package: angular-l10n
1127
- License: "MIT"
1128
-
1129
-
1130
1099
  --------------------------------------------------------------------------------
1131
1100
  Package: @fortawesome/fontawesome-svg-core
1132
1101
  License: "MIT"
@@ -1156,7 +1125,7 @@ as SVG and JS file types.
1156
1125
  In the Font Awesome Free download, the SIL OFL license applies to all icons
1157
1126
  packaged as web and desktop font files.
1158
1127
 
1159
- Copyright (c) 2024 Fonticons, Inc. (https://fontawesome.com)
1128
+ Copyright (c) 2025 Fonticons, Inc. (https://fontawesome.com)
1160
1129
  with Reserved Font Name: "Font Awesome".
1161
1130
 
1162
1131
  This Font Software is licensed under the SIL Open Font License, Version 1.1.
@@ -1256,7 +1225,7 @@ OTHER DEALINGS IN THE FONT SOFTWARE.
1256
1225
  In the Font Awesome Free download, the MIT license applies to all non-font and
1257
1226
  non-icon files.
1258
1227
 
1259
- Copyright 2024 Fonticons, Inc.
1228
+ Copyright 2025 Fonticons, Inc.
1260
1229
 
1261
1230
  Permission is hereby granted, free of charge, to any person obtaining a copy of
1262
1231
  this software and associated documentation files (the "Software"), to deal in the
@@ -1323,6 +1292,37 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
1323
1292
  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
1324
1293
  THE SOFTWARE.
1325
1294
 
1295
+ --------------------------------------------------------------------------------
1296
+ Package: @angular/forms
1297
+ License: "MIT"
1298
+
1299
+ The MIT License
1300
+
1301
+ Copyright (c) 2010-2025 Google LLC. https://angular.dev/license
1302
+
1303
+ Permission is hereby granted, free of charge, to any person obtaining a copy
1304
+ of this software and associated documentation files (the "Software"), to deal
1305
+ in the Software without restriction, including without limitation the rights
1306
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
1307
+ copies of the Software, and to permit persons to whom the Software is
1308
+ furnished to do so, subject to the following conditions:
1309
+
1310
+ The above copyright notice and this permission notice shall be included in
1311
+ all copies or substantial portions of the Software.
1312
+
1313
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1314
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1315
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
1316
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1317
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
1318
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
1319
+ THE SOFTWARE.
1320
+
1321
+ --------------------------------------------------------------------------------
1322
+ Package: angular-l10n
1323
+ License: "MIT"
1324
+
1325
+
1326
1326
  --------------------------------------------------------------------------------
1327
1327
  Package: @fortawesome/free-solid-svg-icons
1328
1328
  License: "(CC-BY-4.0 AND MIT)"
@@ -1352,7 +1352,7 @@ as SVG and JS file types.
1352
1352
  In the Font Awesome Free download, the SIL OFL license applies to all icons
1353
1353
  packaged as web and desktop font files.
1354
1354
 
1355
- Copyright (c) 2024 Fonticons, Inc. (https://fontawesome.com)
1355
+ Copyright (c) 2025 Fonticons, Inc. (https://fontawesome.com)
1356
1356
  with Reserved Font Name: "Font Awesome".
1357
1357
 
1358
1358
  This Font Software is licensed under the SIL Open Font License, Version 1.1.
@@ -1452,7 +1452,7 @@ OTHER DEALINGS IN THE FONT SOFTWARE.
1452
1452
  In the Font Awesome Free download, the MIT license applies to all non-font and
1453
1453
  non-icon files.
1454
1454
 
1455
- Copyright 2024 Fonticons, Inc.
1455
+ Copyright 2025 Fonticons, Inc.
1456
1456
 
1457
1457
  Permission is hereby granted, free of charge, to any person obtaining a copy of
1458
1458
  this software and associated documentation files (the "Software"), to deal in the
@@ -350,4 +350,6 @@ CodeMirror.defineMode("gas", function(_config, parserConfig) {
350
350
  };
351
351
  });
352
352
 
353
+ CodeMirror.defineMIME("text/x-gas", "gas");
354
+
353
355
  });
@@ -0,0 +1 @@
1
+ import{a as Ce,b as ve,c as be,d as xe,f as Ee,i as De}from"./chunk-BOIXDTUT.js";import{a as Se,b as Te}from"./chunk-MLLPT7BU.js";import{f as _e}from"./chunk-6HV65OKG.js";import{K as ce,L as ue,R as D,Sb as he,ua as de,va as pe,wa as ge,xb as fe}from"./chunk-55WOZ7P6.js";import{$c as q,Bf as re,Cb as _,Eb as d,Ed as te,Ee as oe,Fc as B,Fd as ie,Gf as le,Ma as a,Nb as b,Ob as U,Pb as s,Qb as x,Qf as me,Rb as E,Sb as A,Xa as O,Xb as k,Zc as j,ab as y,ad as H,bb as R,bf as ae,cd as p,dc as v,ec as S,ed as X,fc as M,fd as $,gd as z,ha as T,id as g,jb as f,kb as h,lb as F,ma as P,na as L,nb as G,nd as W,ob as N,od as J,of as se,pb as c,pd as K,pe as ne,qb as i,qd as Q,rb as n,rd as Y,sb as u,xd as Z,yd as ee,zb as V}from"./chunk-JQOMI5VI.js";import{a as I}from"./chunk-RTRJ3KFH.js";function we(t,m){if(t&1&&(u(0,"fa-icon",42),i(1,"span"),s(2),n()),t&2){let o=d();c("icon",o.icons.faPen),a(2),x(o.guest.fullName)}}function ye(t,m){if(t&1&&(u(0,"fa-icon",42),i(1,"span",43),s(2,"New guest"),n()),t&2){let o=d();c("icon",o.icons.faPlus)}}function Fe(t,m){if(t&1&&u(0,"fa-icon",2),t&2){let o=d();c("icon",o.icons.faSpinner)}}function Ge(t,m){t&1&&(i(0,"h4",3)(1,"span",43),s(2,"Edit guest"),n()())}function Ne(t,m){if(t&1&&(u(0,"fa-icon",44),i(1,"span",45),s(2,"Account"),n()),t&2){let o=d();c("icon",o.icons.faAddressCard)}}function Ue(t,m){if(t&1&&u(0,"app-password-strength-bar",22),t&2){let o=d();c("passwordToCheck",o.guestForm.value.password)}}function Ae(t,m){if(t&1&&(i(0,"option",26),s(1),n()),t&2){let o=m.$implicit;c("ngValue",o),a(),x(o)}}function ke(t,m){if(t&1&&(i(0,"option",34),s(1),n()),t&2){let o=m.$implicit,r=d();c("ngValue",r.allNotifications.indexOf(o)),a(),x(o)}}function Ie(t,m){if(t&1&&(i(0,"div"),s(1),v(2,"amDateFormat"),n(),i(3,"div"),s(4),v(5,"amDateFormat"),n()),t&2){let o=d(2);a(),A("",S(2,4,o.guest.currentAccess)," - ",o.guest.currentIp),a(3),A("",S(5,6,o.guest.lastAccess)," - ",o.guest.lastIp)}}function Pe(t,m){t&1&&(i(0,"span",37),s(1,"never"),n())}function Le(t,m){if(t&1&&(i(0,"div",11)(1,"div",12)(2,"label",46),s(3,"Creation date"),n(),i(4,"div",47),s(5),v(6,"amDateFormat"),n()(),i(7,"div",48)(8,"label",49),s(9,"Last accesses"),n(),i(10,"div",50),f(11,Ie,6,8)(12,Pe,2,0,"span",37),n()()()),t&2){let o=d();a(5),x(S(6,2,o.guest.createdAt)),a(6),h(o.guest.lastAccess?11:12)}}function Oe(t,m){if(t&1&&(u(0,"fa-icon",44),i(1,"span",51),s(2,"Managers"),n(),i(3,"span"),s(4),n()),t&2){let o=d();c("icon",o.icons.faUsersGear),a(4),E("(",o.guestForm.value.managers.length||0,")")}}function Re(t,m){t&1&&(i(0,"small",37),s(1,"At least one manager is required"),n())}function Ve(t,m){if(t&1){let o=V();i(0,"button",52),_("click",function(){P(o);let l=d();return L(l.confirmDeletion=!0)}),s(1," Remove "),n()}if(t&2){let o=d();c("disabled",o.confirmDeletion)}}var lt=(()=>{let m=class m{constructor(){this.guest=null,this.guestChange=new R,this.locale=T(ee),this.layout=T(fe),this.userService=T(_e),this.user=this.userService.user,this.icons={GROUPS:de.GROUPS,faPlus:le,faPen:se,faUsersGear:me,faSpinner:ae,faAddressCard:oe,faUsers:ne,faShieldHalved:re},this.allNotifications=Object.values(D),this.defaultPassword=this.layout.translateString(pe),this.languages=this.layout.getLanguages(!0),this.submitted=!1,this.loading=!1,this.confirmDeletion=!1}ngOnInit(){this.guestForm=new z({login:new g(this.guest?.login||"",[p.required,p.pattern(ce)]),email:new g(this.guest?.email||"",[p.required,p.maxLength(255),p.email]),firstName:new g(this.guest?.firstName||"",[p.required,p.maxLength(255)]),lastName:new g(this.guest?.lastName||"",p.maxLength(255)),password:new g(this.guest?this.defaultPassword:"",p.maxLength(255)),language:new g(this.guest?.language||null),notification:new g(this.guest?.notification||Object.values(D).indexOf(D.APPLICATION_EMAIL)),isActive:new g(this.guest?this.guest.isActive:!0),managers:new g(this.guest?.managers||[he(this.user)])})}updatePassword(r){this.guestForm.controls.password.setValue(r),this.guestForm.controls.password.markAsDirty()}updateManagers(r){this.guestForm.controls.managers.setValue(r),this.guestForm.controls.managers.markAsDirty(),this.guestForm.controls.managers.setErrors(r.length?null:{incorrect:!0})}searchMembers(r){let l={search:r,ignoreUserIds:this.guestForm.value.managers.map(e=>e.id),usersRole:ue.USER,onlyUsers:!0};return this.userService.searchMembers(l)}onCancel(){this.confirmDeletion?this.confirmDeletion=!1:this.layout.closeDialog()}onSubmit(){if(this.submitted=!0,this.confirmDeletion)this.userService.deleteGuest(this.guest.id).subscribe({next:()=>{this.guestChange.emit(["delete",this.guest]),this.layout.sendNotification("success","Guest deleted",this.guest.login),this.layout.closeDialog()},error:r=>this.onError(r)});else if(!this.guest)this.userService.createGuest(this.makeDto(!0)).subscribe({next:r=>{this.guestChange.emit(["add",r]),this.layout.sendNotification("success","Guest created",this.guestForm.value.login),this.layout.closeDialog()},error:r=>this.onError(r)});else{let r=this.makeDto();if(!Object.keys(r).length){this.loading=!1,this.submitted=!1;return}this.userService.updateGuest(this.guest.id,r).subscribe({next:l=>{l?this.guestChange.emit(["update",l]):this.guestChange.emit(["delete",this.guest]),this.layout.sendNotification("success","Guest updated",this.guestForm.value.login),this.layout.closeDialog()},error:l=>this.onError(l)})}}makeDto(r=!1){let l={};if(r)l=I({},this.guestForm.value);else for(let e in this.guestForm.controls)this.guestForm.controls[e].dirty&&(l[e]=this.guestForm.controls[e].value);for(let e in l)switch(e){case"language":l[e]=l[e]===ge?null:l[e];break;case"managers":l[e]=l[e].map(C=>C.id);break}return l}onError(r){this.layout.sendNotification("error","Guest error",this.guestForm.value.login,r),this.submitted=!1,this.confirmDeletion=!1}};m.\u0275fac=function(l){return new(l||m)},m.\u0275cmp=O({type:m,selectors:[["app-user-guest-dialog"]],inputs:{guest:"guest"},outputs:{guestChange:"guestChange"},decls:70,vars:40,consts:[[1,"modal-header","align-items-center"],[1,"modal-title"],["animation","spin","size","sm",1,"ms-2",3,"icon"],[1,"modal-title","ms-auto"],["aria-label","Close","type","button",3,"click"],[1,"modal-body",3,"formGroup"],["type","pills",3,"justified"],[1,"my-3"],["customClass","tab-dialog form-validation",3,"selectTab"],["tabHeading",""],[1,"d-flex","flex-column"],[1,"d-flex","col-12","pb-3"],[1,"flex-fill","col-6","pe-4"],["for","login","l10nTranslate",""],["id","login","appAutofocus","","formControlName","login","autocomplete","off","type","text",1,"form-control","form-control-sm",3,"autoSelect"],[1,"flex-fill","col-6","ps-4"],["for","email","l10nTranslate",""],["id","email","formControlName","email","autocomplete","off","type","email",1,"form-control","form-control-sm"],["for","firstName","l10nTranslate",""],["id","firstName","formControlName","firstName","autocomplete","off","type","text",1,"form-control","form-control-sm"],["for","lastName","l10nTranslate",""],["id","lastName","formControlName","lastName","autocomplete","off","type","text",1,"form-control","form-control-sm"],[1,"position-absolute","pe-4",2,"right","50%","padding-top","6px",3,"passwordToCheck"],["id","password","placeholder","Set a password",3,"passwordChange","password","showGenerator","showLabel","isRequired"],["for","language","l10nTranslate",""],["id","language","formControlName","language",1,"form-control","form-select","form-select-sm"],[3,"ngValue"],[1,"d-flex","flex-column","col-6","pe-4"],["for","account","l10nTranslate",""],["id","account",1,"form-check","form-switch","form-check-inline"],["for","isActive",1,"form-check-label"],["formControlName","isActive","id","isActive","type","checkbox",1,"form-check-input"],["for","notification","l10nTranslate",""],["id","notification","formControlName","notification",1,"form-control","form-select","form-select-sm"],["l10nTranslate","",3,"ngValue"],["customClass","tab-dialog",3,"selectTab"],[3,"membersChange","members","withPermissions","customPlaceholder","searchFunction"],["l10nTranslate","",1,"text-danger"],[1,"modal-footer"],["type","button","l10nTranslate","",1,"btn","btn-sm","btn-danger",3,"disabled"],["data-dismiss","modal","type","button","l10nTranslate","",1,"btn","btn-sm","btn-secondary","ms-auto",3,"click"],["type","button","l10nTranslate","",3,"click","disabled"],[1,"me-2",3,"icon"],["l10nTranslate",""],[3,"icon"],["l10nTranslate","",1,"ms-2"],["for","created","l10nTranslate",""],["id","created"],[1,"d-flex","flex-column","align-items-end","col-6","ps-4"],["for","access","l10nTranslate",""],["id","access",1,"text-align-end"],["l10nTranslate","",1,"ms-2","me-1"],["type","button","l10nTranslate","",1,"btn","btn-sm","btn-danger",3,"click","disabled"]],template:function(l,e){l&1&&(i(0,"div",0)(1,"h4",1),f(2,we,3,2)(3,ye,3,1),f(4,Fe,1,1,"fa-icon",2),n(),f(5,Ge,3,0,"h4",3),i(6,"button",4),_("click",function(){return e.layout.closeDialog()}),n()(),i(7,"div",5)(8,"tabset",6),u(9,"hr",7),i(10,"tab",8),_("selectTab",function(){return e.tabView=null}),y(11,Ne,3,1,"ng-template",9),i(12,"div",10)(13,"div",11)(14,"div",12)(15,"label",13),s(16,"Login"),n(),u(17,"input",14),n(),i(18,"div",15)(19,"label",16),s(20,"Email"),n(),u(21,"input",17),n()(),i(22,"div",11)(23,"div",12)(24,"label",18),s(25,"First name"),n(),u(26,"input",19),n(),i(27,"div",15)(28,"label",20),s(29,"Last name"),n(),u(30,"input",21),n()(),i(31,"div",11)(32,"div",12),f(33,Ue,1,1,"app-password-strength-bar",22),i(34,"app-input-password",23),_("passwordChange",function(w){return e.updatePassword(w)}),n()(),i(35,"div",15)(36,"label",24),s(37,"Language"),n(),i(38,"select",25),G(39,Ae,2,2,"option",26,F),n()()(),i(41,"div",11)(42,"div",27)(43,"label",28),s(44,"Account status"),n(),i(45,"div",29)(46,"label",30),u(47,"input",31),i(48,"span"),s(49),v(50,"translate"),v(51,"titlecase"),n()()()(),i(52,"div",15)(53,"label",32),s(54,"Notification"),n(),i(55,"select",33),G(56,ke,2,2,"option",34,F),n()()(),f(58,Le,13,4,"div",11),n()(),i(59,"tab",35),_("selectTab",function(){return e.tabView="managers"}),y(60,Oe,5,2,"ng-template",9),i(61,"div",7)(62,"app-user-search",36),_("membersChange",function(w){return e.updateManagers(w)}),n(),f(63,Re,2,0,"small",37),n()()()(),i(64,"div",38),f(65,Ve,2,1,"button",39),i(66,"button",40),_("click",function(){return e.onCancel()}),s(67,"Cancel"),n(),i(68,"button",41),_("click",function(){return e.onSubmit()}),s(69),n()()),l&2&&(a(2),h(e.guest?2:3),a(2),h(e.loading?4:-1),a(),h(e.guest?5:-1),a(),U(k("btn-close btn-close-white ",e.guest?"ms-2":"ms-auto"," ms-2")),a(),c("formGroup",e.guestForm),a(),c("justified",!0),a(9),b("is-invalid",e.guestForm.controls.login.invalid),c("autoSelect",!1),a(4),b("is-invalid",e.guestForm.controls.email.invalid),a(5),b("is-invalid",e.guestForm.controls.firstName.invalid),a(7),h(e.guestForm.value.password!==e.defaultPassword?33:-1),a(),c("password",e.guestForm.value.password)("showGenerator",!0)("showLabel",!0)("isRequired",!0),a(5),N(e.languages),a(9),b("text-danger",!e.guestForm.value.isActive),a(),E(" ",S(51,38,M(50,35,e.guestForm.value.isActive?"active":"suspended",e.locale.language))," "),a(7),N(e.allNotifications),a(2),h(e.guest?58:-1),a(4),c("members",e.guestForm.value.managers)("withPermissions",!1)("customPlaceholder","Type to search for managers to add")("searchFunction",e.searchMembers.bind(e)),a(),h(e.guestForm.value.managers.length?-1:63),a(2),h(e.guest!=null&&e.guest.id?65:-1),a(3),U(k("btn btn-sm ",e.confirmDeletion?"btn-danger":"btn-primary")),c("disabled",e.guestForm.invalid||e.submitted),a(),E(" ",e.confirmDeletion?"Confirm deletion":"Confirm"," "))},dependencies:[j,ie,Z,Q,Y,H,q,K,X,$,W,J,Se,Te,Ee,De,ve,be,xe,Ce,te,B],encapsulation:2});let t=m;return t})();export{lt as a};