@sync-in/server 1.10.1 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1057) hide show
  1. package/CHANGELOG.md +47 -0
  2. package/LICENSE +1 -1
  3. package/README.md +3 -11
  4. package/environment/environment.dist.min.yaml +1 -1
  5. package/environment/environment.dist.yaml +173 -28
  6. package/package.json +18 -17
  7. package/server/app.bootstrap.js +1 -5
  8. package/server/app.bootstrap.js.map +1 -1
  9. package/server/app.constants.js +1 -5
  10. package/server/app.constants.js.map +1 -1
  11. package/server/app.e2e-spec.js +1 -5
  12. package/server/app.e2e-spec.js.map +1 -1
  13. package/server/app.functions.js +1 -5
  14. package/server/app.functions.js.map +1 -1
  15. package/server/app.module.js +1 -5
  16. package/server/app.module.js.map +1 -1
  17. package/server/app.service.js +1 -5
  18. package/server/app.service.js.map +1 -1
  19. package/server/app.service.spec.js +2 -6
  20. package/server/app.service.spec.js.map +1 -1
  21. package/server/applications/admin/admin.module.js +1 -5
  22. package/server/applications/admin/admin.module.js.map +1 -1
  23. package/server/applications/admin/constants/routes.js +1 -5
  24. package/server/applications/admin/constants/routes.js.map +1 -1
  25. package/server/applications/admin/interfaces/check-update.interfaces.js +1 -5
  26. package/server/applications/admin/interfaces/check-update.interfaces.js.map +1 -1
  27. package/server/applications/admin/services/admin-scheduler.service.js +1 -5
  28. package/server/applications/admin/services/admin-scheduler.service.js.map +1 -1
  29. package/server/applications/admin/services/admin.service.js +13 -8
  30. package/server/applications/admin/services/admin.service.js.map +1 -1
  31. package/server/applications/admin/services/admin.service.spec.js +1 -5
  32. package/server/applications/admin/services/admin.service.spec.js.map +1 -1
  33. package/server/applications/admin/utils/check-update.js +1 -5
  34. package/server/applications/admin/utils/check-update.js.map +1 -1
  35. package/server/applications/applications.config.js +1 -5
  36. package/server/applications/applications.config.js.map +1 -1
  37. package/server/applications/applications.constants.js +5 -5
  38. package/server/applications/applications.constants.js.map +1 -1
  39. package/server/applications/applications.module.js +1 -5
  40. package/server/applications/applications.module.js.map +1 -1
  41. package/server/applications/comments/comments.controller.js +1 -5
  42. package/server/applications/comments/comments.controller.js.map +1 -1
  43. package/server/applications/comments/comments.controller.spec.js +1 -5
  44. package/server/applications/comments/comments.controller.spec.js.map +1 -1
  45. package/server/applications/comments/comments.module.js +1 -5
  46. package/server/applications/comments/comments.module.js.map +1 -1
  47. package/server/applications/comments/constants/routes.js +1 -5
  48. package/server/applications/comments/constants/routes.js.map +1 -1
  49. package/server/applications/comments/dto/comment.dto.js +1 -5
  50. package/server/applications/comments/dto/comment.dto.js.map +1 -1
  51. package/server/applications/comments/interfaces/comment-recent.interface.js +1 -5
  52. package/server/applications/comments/interfaces/comment-recent.interface.js.map +1 -1
  53. package/server/applications/comments/schemas/comment.interface.js +1 -5
  54. package/server/applications/comments/schemas/comment.interface.js.map +1 -1
  55. package/server/applications/comments/schemas/comments.schema.js +1 -5
  56. package/server/applications/comments/schemas/comments.schema.js.map +1 -1
  57. package/server/applications/comments/services/comments-manager.service.js +9 -7
  58. package/server/applications/comments/services/comments-manager.service.js.map +1 -1
  59. package/server/applications/comments/services/comments-manager.service.spec.js +10 -8
  60. package/server/applications/comments/services/comments-manager.service.spec.js.map +1 -1
  61. package/server/applications/comments/services/comments-queries.service.js +1 -5
  62. package/server/applications/comments/services/comments-queries.service.js.map +1 -1
  63. package/server/applications/files/adapters/files-indexer-mysql.service.js +29 -12
  64. package/server/applications/files/adapters/files-indexer-mysql.service.js.map +1 -1
  65. package/server/applications/files/adapters/files-indexer-mysql.service.spec.js +1 -5
  66. package/server/applications/files/adapters/files-indexer-mysql.service.spec.js.map +1 -1
  67. package/server/applications/files/constants/cache.js +1 -5
  68. package/server/applications/files/constants/cache.js.map +1 -1
  69. package/server/applications/files/constants/compress.js +1 -5
  70. package/server/applications/files/constants/compress.js.map +1 -1
  71. package/server/applications/files/constants/files.js +1 -5
  72. package/server/applications/files/constants/files.js.map +1 -1
  73. package/server/applications/files/constants/indexing.js +1 -5
  74. package/server/applications/files/constants/indexing.js.map +1 -1
  75. package/server/applications/files/constants/operations.js +1 -5
  76. package/server/applications/files/constants/operations.js.map +1 -1
  77. package/server/applications/files/constants/routes.js +1 -5
  78. package/server/applications/files/constants/routes.js.map +1 -1
  79. package/server/applications/files/constants/samples.js +1 -5
  80. package/server/applications/files/constants/samples.js.map +1 -1
  81. package/server/applications/files/dto/file-operations.dto.js +1 -5
  82. package/server/applications/files/dto/file-operations.dto.js.map +1 -1
  83. package/server/applications/files/events/file-task-event.js +1 -5
  84. package/server/applications/files/events/file-task-event.js.map +1 -1
  85. package/server/applications/files/files-tasks.controller.js +1 -5
  86. package/server/applications/files/files-tasks.controller.js.map +1 -1
  87. package/server/applications/files/files-tasks.controller.spec.js +1 -5
  88. package/server/applications/files/files-tasks.controller.spec.js.map +1 -1
  89. package/server/applications/files/files.config.js +1 -5
  90. package/server/applications/files/files.config.js.map +1 -1
  91. package/server/applications/files/files.controller.js +1 -5
  92. package/server/applications/files/files.controller.js.map +1 -1
  93. package/server/applications/files/files.controller.spec.js +1 -5
  94. package/server/applications/files/files.controller.spec.js.map +1 -1
  95. package/server/applications/files/files.module.js +1 -5
  96. package/server/applications/files/files.module.js.map +1 -1
  97. package/server/applications/files/interfaces/file-db-props.interface.js +1 -5
  98. package/server/applications/files/interfaces/file-db-props.interface.js.map +1 -1
  99. package/server/applications/files/interfaces/file-lock.interface.js +1 -5
  100. package/server/applications/files/interfaces/file-lock.interface.js.map +1 -1
  101. package/server/applications/files/interfaces/file-parse-index.js +1 -5
  102. package/server/applications/files/interfaces/file-parse-index.js.map +1 -1
  103. package/server/applications/files/interfaces/file-props.interface.js +1 -5
  104. package/server/applications/files/interfaces/file-props.interface.js.map +1 -1
  105. package/server/applications/files/interfaces/file-recent-location.interface.js +1 -5
  106. package/server/applications/files/interfaces/file-recent-location.interface.js.map +1 -1
  107. package/server/applications/files/interfaces/file-space.interface.js +1 -5
  108. package/server/applications/files/interfaces/file-space.interface.js.map +1 -1
  109. package/server/applications/files/interfaces/file-tree.interface.js +1 -5
  110. package/server/applications/files/interfaces/file-tree.interface.js.map +1 -1
  111. package/server/applications/files/models/file-error.js +1 -5
  112. package/server/applications/files/models/file-error.js.map +1 -1
  113. package/server/applications/files/models/file-lock-error.js +1 -5
  114. package/server/applications/files/models/file-lock-error.js.map +1 -1
  115. package/server/applications/files/models/file-task.js +1 -5
  116. package/server/applications/files/models/file-task.js.map +1 -1
  117. package/server/applications/files/models/files-indexer.js +1 -5
  118. package/server/applications/files/models/files-indexer.js.map +1 -1
  119. package/server/applications/files/modules/collabora-online/collabora-online-environment.decorator.js +1 -5
  120. package/server/applications/files/modules/collabora-online/collabora-online-environment.decorator.js.map +1 -1
  121. package/server/applications/files/modules/collabora-online/collabora-online-manager.service.js +21 -10
  122. package/server/applications/files/modules/collabora-online/collabora-online-manager.service.js.map +1 -1
  123. package/server/applications/files/modules/collabora-online/collabora-online-manager.service.spec.js +1 -5
  124. package/server/applications/files/modules/collabora-online/collabora-online-manager.service.spec.js.map +1 -1
  125. package/server/applications/files/modules/collabora-online/collabora-online.config.js +1 -5
  126. package/server/applications/files/modules/collabora-online/collabora-online.config.js.map +1 -1
  127. package/server/applications/files/modules/collabora-online/collabora-online.constants.js +1 -5
  128. package/server/applications/files/modules/collabora-online/collabora-online.constants.js.map +1 -1
  129. package/server/applications/files/modules/collabora-online/collabora-online.controller.js +1 -5
  130. package/server/applications/files/modules/collabora-online/collabora-online.controller.js.map +1 -1
  131. package/server/applications/files/modules/collabora-online/collabora-online.controller.spec.js +1 -5
  132. package/server/applications/files/modules/collabora-online/collabora-online.controller.spec.js.map +1 -1
  133. package/server/applications/files/modules/collabora-online/collabora-online.dtos.js +1 -5
  134. package/server/applications/files/modules/collabora-online/collabora-online.dtos.js.map +1 -1
  135. package/server/applications/files/modules/collabora-online/collabora-online.guard.js +1 -5
  136. package/server/applications/files/modules/collabora-online/collabora-online.guard.js.map +1 -1
  137. package/server/applications/files/modules/collabora-online/collabora-online.guard.spec.js +1 -5
  138. package/server/applications/files/modules/collabora-online/collabora-online.guard.spec.js.map +1 -1
  139. package/server/applications/files/modules/collabora-online/collabora-online.interface.js +1 -5
  140. package/server/applications/files/modules/collabora-online/collabora-online.interface.js.map +1 -1
  141. package/server/applications/files/modules/collabora-online/collabora-online.module.js +1 -5
  142. package/server/applications/files/modules/collabora-online/collabora-online.module.js.map +1 -1
  143. package/server/applications/files/modules/collabora-online/collabora-online.routes.js +1 -5
  144. package/server/applications/files/modules/collabora-online/collabora-online.routes.js.map +1 -1
  145. package/server/applications/files/modules/collabora-online/collabora-online.strategy.js +1 -5
  146. package/server/applications/files/modules/collabora-online/collabora-online.strategy.js.map +1 -1
  147. package/server/applications/files/modules/collabora-online/collabora-online.utils.js +1 -5
  148. package/server/applications/files/modules/collabora-online/collabora-online.utils.js.map +1 -1
  149. package/server/applications/files/modules/file-editor-providers.interface.js +6 -0
  150. package/server/applications/files/modules/file-editor-providers.interface.js.map +1 -0
  151. package/server/applications/files/modules/only-office/only-office-environment.decorator.js +1 -5
  152. package/server/applications/files/modules/only-office/only-office-environment.decorator.js.map +1 -1
  153. package/server/applications/files/modules/only-office/only-office-manager.service.js +57 -19
  154. package/server/applications/files/modules/only-office/only-office-manager.service.js.map +1 -1
  155. package/server/applications/files/modules/only-office/only-office-manager.service.spec.js +1 -5
  156. package/server/applications/files/modules/only-office/only-office-manager.service.spec.js.map +1 -1
  157. package/server/applications/files/modules/only-office/only-office.config.js +1 -5
  158. package/server/applications/files/modules/only-office/only-office.config.js.map +1 -1
  159. package/server/applications/files/modules/only-office/only-office.constants.js +1 -5
  160. package/server/applications/files/modules/only-office/only-office.constants.js.map +1 -1
  161. package/server/applications/files/modules/only-office/only-office.controller.js +1 -5
  162. package/server/applications/files/modules/only-office/only-office.controller.js.map +1 -1
  163. package/server/applications/files/modules/only-office/only-office.controller.spec.js +1 -5
  164. package/server/applications/files/modules/only-office/only-office.controller.spec.js.map +1 -1
  165. package/server/applications/files/modules/only-office/only-office.dtos.js +1 -5
  166. package/server/applications/files/modules/only-office/only-office.dtos.js.map +1 -1
  167. package/server/applications/files/modules/only-office/only-office.guard.js +1 -5
  168. package/server/applications/files/modules/only-office/only-office.guard.js.map +1 -1
  169. package/server/applications/files/modules/only-office/only-office.guard.spec.js +1 -5
  170. package/server/applications/files/modules/only-office/only-office.guard.spec.js.map +1 -1
  171. package/server/applications/files/modules/only-office/only-office.interface.js +1 -5
  172. package/server/applications/files/modules/only-office/only-office.interface.js.map +1 -1
  173. package/server/applications/files/modules/only-office/only-office.module.js +1 -5
  174. package/server/applications/files/modules/only-office/only-office.module.js.map +1 -1
  175. package/server/applications/files/modules/only-office/only-office.routes.js +1 -5
  176. package/server/applications/files/modules/only-office/only-office.routes.js.map +1 -1
  177. package/server/applications/files/modules/only-office/only-office.strategy.js +1 -5
  178. package/server/applications/files/modules/only-office/only-office.strategy.js.map +1 -1
  179. package/server/applications/files/schemas/file-content.interface.js +1 -5
  180. package/server/applications/files/schemas/file-content.interface.js.map +1 -1
  181. package/server/applications/files/schemas/file-recent.interface.js +1 -5
  182. package/server/applications/files/schemas/file-recent.interface.js.map +1 -1
  183. package/server/applications/files/schemas/file.interface.js +1 -5
  184. package/server/applications/files/schemas/file.interface.js.map +1 -1
  185. package/server/applications/files/schemas/files-content.schema.js +1 -5
  186. package/server/applications/files/schemas/files-content.schema.js.map +1 -1
  187. package/server/applications/files/schemas/files-recents.schema.js +1 -5
  188. package/server/applications/files/schemas/files-recents.schema.js.map +1 -1
  189. package/server/applications/files/schemas/files.schema.js +1 -5
  190. package/server/applications/files/schemas/files.schema.js.map +1 -1
  191. package/server/applications/files/services/files-content-manager.service.js +45 -16
  192. package/server/applications/files/services/files-content-manager.service.js.map +1 -1
  193. package/server/applications/files/services/files-lock-manager.service.js +53 -18
  194. package/server/applications/files/services/files-lock-manager.service.js.map +1 -1
  195. package/server/applications/files/services/files-lock-manager.service.spec.js +1 -5
  196. package/server/applications/files/services/files-lock-manager.service.spec.js.map +1 -1
  197. package/server/applications/files/services/files-manager.service.js +77 -24
  198. package/server/applications/files/services/files-manager.service.js.map +1 -1
  199. package/server/applications/files/services/files-manager.service.spec.js +1 -5
  200. package/server/applications/files/services/files-manager.service.spec.js.map +1 -1
  201. package/server/applications/files/services/files-methods.service.js +5 -6
  202. package/server/applications/files/services/files-methods.service.js.map +1 -1
  203. package/server/applications/files/services/files-methods.service.spec.js +1 -5
  204. package/server/applications/files/services/files-methods.service.spec.js.map +1 -1
  205. package/server/applications/files/services/files-parser.service.js +13 -8
  206. package/server/applications/files/services/files-parser.service.js.map +1 -1
  207. package/server/applications/files/services/files-parser.service.spec.js +1 -5
  208. package/server/applications/files/services/files-parser.service.spec.js.map +1 -1
  209. package/server/applications/files/services/files-queries.service.js +29 -12
  210. package/server/applications/files/services/files-queries.service.js.map +1 -1
  211. package/server/applications/files/services/files-recents.service.js +1 -5
  212. package/server/applications/files/services/files-recents.service.js.map +1 -1
  213. package/server/applications/files/services/files-recents.service.spec.js +1 -5
  214. package/server/applications/files/services/files-recents.service.spec.js.map +1 -1
  215. package/server/applications/files/services/files-scheduler.service.js +77 -24
  216. package/server/applications/files/services/files-scheduler.service.js.map +1 -1
  217. package/server/applications/files/services/files-search-manager.service.js +9 -7
  218. package/server/applications/files/services/files-search-manager.service.js.map +1 -1
  219. package/server/applications/files/services/files-search-manager.service.spec.js +1 -5
  220. package/server/applications/files/services/files-search-manager.service.spec.js.map +1 -1
  221. package/server/applications/files/services/files-tasks-manager.service.js +77 -24
  222. package/server/applications/files/services/files-tasks-manager.service.js.map +1 -1
  223. package/server/applications/files/services/files-tasks-manager.service.spec.js +1 -5
  224. package/server/applications/files/services/files-tasks-manager.service.spec.js.map +1 -1
  225. package/server/applications/files/utils/doc-textify/adapters/excel.js +1 -5
  226. package/server/applications/files/utils/doc-textify/adapters/excel.js.map +1 -1
  227. package/server/applications/files/utils/doc-textify/adapters/html.js +1 -5
  228. package/server/applications/files/utils/doc-textify/adapters/html.js.map +1 -1
  229. package/server/applications/files/utils/doc-textify/adapters/open-office.js +1 -5
  230. package/server/applications/files/utils/doc-textify/adapters/open-office.js.map +1 -1
  231. package/server/applications/files/utils/doc-textify/adapters/pdf.js +1 -5
  232. package/server/applications/files/utils/doc-textify/adapters/pdf.js.map +1 -1
  233. package/server/applications/files/utils/doc-textify/adapters/power-point.js +1 -5
  234. package/server/applications/files/utils/doc-textify/adapters/power-point.js.map +1 -1
  235. package/server/applications/files/utils/doc-textify/adapters/text.js +1 -5
  236. package/server/applications/files/utils/doc-textify/adapters/text.js.map +1 -1
  237. package/server/applications/files/utils/doc-textify/adapters/word.js +1 -5
  238. package/server/applications/files/utils/doc-textify/adapters/word.js.map +1 -1
  239. package/server/applications/files/utils/doc-textify/doc-textify.js +1 -5
  240. package/server/applications/files/utils/doc-textify/doc-textify.js.map +1 -1
  241. package/server/applications/files/utils/doc-textify/interfaces/doc-textify.interfaces.js +1 -5
  242. package/server/applications/files/utils/doc-textify/interfaces/doc-textify.interfaces.js.map +1 -1
  243. package/server/applications/files/utils/doc-textify/utils/clean.js +1 -5
  244. package/server/applications/files/utils/doc-textify/utils/clean.js.map +1 -1
  245. package/server/applications/files/utils/files-search.js +1 -5
  246. package/server/applications/files/utils/files-search.js.map +1 -1
  247. package/server/applications/files/utils/files-tree.js +1 -5
  248. package/server/applications/files/utils/files-tree.js.map +1 -1
  249. package/server/applications/files/utils/files.js +1 -5
  250. package/server/applications/files/utils/files.js.map +1 -1
  251. package/server/applications/files/utils/send-file.js +1 -5
  252. package/server/applications/files/utils/send-file.js.map +1 -1
  253. package/server/applications/files/utils/unzip-file.js +1 -5
  254. package/server/applications/files/utils/unzip-file.js.map +1 -1
  255. package/server/applications/files/utils/url-file.js +1 -5
  256. package/server/applications/files/utils/url-file.js.map +1 -1
  257. package/server/applications/links/constants/cache.js +1 -5
  258. package/server/applications/links/constants/cache.js.map +1 -1
  259. package/server/applications/links/constants/links.js +1 -5
  260. package/server/applications/links/constants/links.js.map +1 -1
  261. package/server/applications/links/constants/routes.js +1 -5
  262. package/server/applications/links/constants/routes.js.map +1 -1
  263. package/server/applications/links/dto/create-or-update-link.dto.js +1 -5
  264. package/server/applications/links/dto/create-or-update-link.dto.js.map +1 -1
  265. package/server/applications/links/interfaces/link-guest.interface.js +1 -5
  266. package/server/applications/links/interfaces/link-guest.interface.js.map +1 -1
  267. package/server/applications/links/interfaces/link-space.interface.js +1 -5
  268. package/server/applications/links/interfaces/link-space.interface.js.map +1 -1
  269. package/server/applications/links/links.controller.js +1 -5
  270. package/server/applications/links/links.controller.js.map +1 -1
  271. package/server/applications/links/links.controller.spec.js +1 -5
  272. package/server/applications/links/links.controller.spec.js.map +1 -1
  273. package/server/applications/links/schemas/link.interface.js +1 -5
  274. package/server/applications/links/schemas/link.interface.js.map +1 -1
  275. package/server/applications/links/schemas/links.schema.js +1 -5
  276. package/server/applications/links/schemas/links.schema.js.map +1 -1
  277. package/server/applications/links/services/links-manager.service.js +55 -20
  278. package/server/applications/links/services/links-manager.service.js.map +1 -1
  279. package/server/applications/links/services/links-manager.service.spec.js +3 -7
  280. package/server/applications/links/services/links-manager.service.spec.js.map +1 -1
  281. package/server/applications/links/services/links-queries.service.js +1 -5
  282. package/server/applications/links/services/links-queries.service.js.map +1 -1
  283. package/server/applications/notifications/constants/notifications.js +1 -5
  284. package/server/applications/notifications/constants/notifications.js.map +1 -1
  285. package/server/applications/notifications/constants/routes.js +1 -5
  286. package/server/applications/notifications/constants/routes.js.map +1 -1
  287. package/server/applications/notifications/constants/websocket.js +1 -5
  288. package/server/applications/notifications/constants/websocket.js.map +1 -1
  289. package/server/applications/notifications/i18n/de.js +1 -9
  290. package/server/applications/notifications/i18n/de.js.map +1 -1
  291. package/server/applications/notifications/i18n/es.js +1 -5
  292. package/server/applications/notifications/i18n/es.js.map +1 -1
  293. package/server/applications/notifications/i18n/fr.js +1 -5
  294. package/server/applications/notifications/i18n/fr.js.map +1 -1
  295. package/server/applications/notifications/i18n/hi.js +1 -5
  296. package/server/applications/notifications/i18n/hi.js.map +1 -1
  297. package/server/applications/notifications/i18n/index.js +1 -5
  298. package/server/applications/notifications/i18n/index.js.map +1 -1
  299. package/server/applications/notifications/i18n/it.js +1 -5
  300. package/server/applications/notifications/i18n/it.js.map +1 -1
  301. package/server/applications/notifications/i18n/ja.js +1 -5
  302. package/server/applications/notifications/i18n/ja.js.map +1 -1
  303. package/server/applications/notifications/i18n/ko.js +1 -5
  304. package/server/applications/notifications/i18n/ko.js.map +1 -1
  305. package/server/applications/notifications/i18n/pl.js +1 -5
  306. package/server/applications/notifications/i18n/pl.js.map +1 -1
  307. package/server/applications/notifications/i18n/pt.js +1 -5
  308. package/server/applications/notifications/i18n/pt.js.map +1 -1
  309. package/server/applications/notifications/i18n/pt_br.js +1 -5
  310. package/server/applications/notifications/i18n/pt_br.js.map +1 -1
  311. package/server/applications/notifications/i18n/ru.js +1 -5
  312. package/server/applications/notifications/i18n/ru.js.map +1 -1
  313. package/server/applications/notifications/i18n/tr.js +1 -5
  314. package/server/applications/notifications/i18n/tr.js.map +1 -1
  315. package/server/applications/notifications/i18n/zh.js +1 -5
  316. package/server/applications/notifications/i18n/zh.js.map +1 -1
  317. package/server/applications/notifications/interfaces/notification-properties.interface.js +1 -5
  318. package/server/applications/notifications/interfaces/notification-properties.interface.js.map +1 -1
  319. package/server/applications/notifications/interfaces/user-mail-notification.interface.js +1 -5
  320. package/server/applications/notifications/interfaces/user-mail-notification.interface.js.map +1 -1
  321. package/server/applications/notifications/mails/models.js +1 -5
  322. package/server/applications/notifications/mails/models.js.map +1 -1
  323. package/server/applications/notifications/mails/templates.js +1 -5
  324. package/server/applications/notifications/mails/templates.js.map +1 -1
  325. package/server/applications/notifications/mails/urls.js +1 -5
  326. package/server/applications/notifications/mails/urls.js.map +1 -1
  327. package/server/applications/notifications/notifications.controller.js +1 -5
  328. package/server/applications/notifications/notifications.controller.js.map +1 -1
  329. package/server/applications/notifications/notifications.controller.spec.js +1 -5
  330. package/server/applications/notifications/notifications.controller.spec.js.map +1 -1
  331. package/server/applications/notifications/notifications.gateway.js +1 -5
  332. package/server/applications/notifications/notifications.gateway.js.map +1 -1
  333. package/server/applications/notifications/notifications.module.js +1 -5
  334. package/server/applications/notifications/notifications.module.js.map +1 -1
  335. package/server/applications/notifications/schemas/notification.interface.js +1 -5
  336. package/server/applications/notifications/schemas/notification.interface.js.map +1 -1
  337. package/server/applications/notifications/schemas/notifications.schema.js +1 -5
  338. package/server/applications/notifications/schemas/notifications.schema.js.map +1 -1
  339. package/server/applications/notifications/services/notifications-manager.service.js +25 -11
  340. package/server/applications/notifications/services/notifications-manager.service.js.map +1 -1
  341. package/server/applications/notifications/services/notifications-manager.service.spec.js +20 -11
  342. package/server/applications/notifications/services/notifications-manager.service.spec.js.map +1 -1
  343. package/server/applications/notifications/services/notifications-queries.service.js +1 -5
  344. package/server/applications/notifications/services/notifications-queries.service.js.map +1 -1
  345. package/server/applications/shares/constants/routes.js +1 -5
  346. package/server/applications/shares/constants/routes.js.map +1 -1
  347. package/server/applications/shares/constants/shares.js +1 -5
  348. package/server/applications/shares/constants/shares.js.map +1 -1
  349. package/server/applications/shares/dto/create-or-update-share.dto.js +1 -5
  350. package/server/applications/shares/dto/create-or-update-share.dto.js.map +1 -1
  351. package/server/applications/shares/interfaces/share-child.interface.js +1 -5
  352. package/server/applications/shares/interfaces/share-child.interface.js.map +1 -1
  353. package/server/applications/shares/interfaces/share-env.interface.js +1 -5
  354. package/server/applications/shares/interfaces/share-env.interface.js.map +1 -1
  355. package/server/applications/shares/interfaces/share-file.interface.js +1 -5
  356. package/server/applications/shares/interfaces/share-file.interface.js.map +1 -1
  357. package/server/applications/shares/interfaces/share-link.interface.js +1 -5
  358. package/server/applications/shares/interfaces/share-link.interface.js.map +1 -1
  359. package/server/applications/shares/interfaces/share-props.interface.js +1 -5
  360. package/server/applications/shares/interfaces/share-props.interface.js.map +1 -1
  361. package/server/applications/shares/models/share-child.model.js +1 -5
  362. package/server/applications/shares/models/share-child.model.js.map +1 -1
  363. package/server/applications/shares/schemas/share-members.interface.js +1 -5
  364. package/server/applications/shares/schemas/share-members.interface.js.map +1 -1
  365. package/server/applications/shares/schemas/share.interface.js +1 -5
  366. package/server/applications/shares/schemas/share.interface.js.map +1 -1
  367. package/server/applications/shares/schemas/shares-members.schema.js +1 -5
  368. package/server/applications/shares/schemas/shares-members.schema.js.map +1 -1
  369. package/server/applications/shares/schemas/shares.schema.js +1 -5
  370. package/server/applications/shares/schemas/shares.schema.js.map +1 -1
  371. package/server/applications/shares/services/shares-manager.service.js +214 -68
  372. package/server/applications/shares/services/shares-manager.service.js.map +1 -1
  373. package/server/applications/shares/services/shares-manager.service.spec.js +1 -5
  374. package/server/applications/shares/services/shares-manager.service.spec.js.map +1 -1
  375. package/server/applications/shares/services/shares-queries.service.js +49 -17
  376. package/server/applications/shares/services/shares-queries.service.js.map +1 -1
  377. package/server/applications/shares/shares.controller.js +1 -5
  378. package/server/applications/shares/shares.controller.js.map +1 -1
  379. package/server/applications/shares/shares.controller.spec.js +1 -5
  380. package/server/applications/shares/shares.controller.spec.js.map +1 -1
  381. package/server/applications/shares/shares.module.js +1 -5
  382. package/server/applications/shares/shares.module.js.map +1 -1
  383. package/server/applications/spaces/constants/cache.js +1 -5
  384. package/server/applications/spaces/constants/cache.js.map +1 -1
  385. package/server/applications/spaces/constants/routes.js +1 -5
  386. package/server/applications/spaces/constants/routes.js.map +1 -1
  387. package/server/applications/spaces/constants/spaces.js +1 -5
  388. package/server/applications/spaces/constants/spaces.js.map +1 -1
  389. package/server/applications/spaces/decorators/space-override-permission.decorator.js +1 -5
  390. package/server/applications/spaces/decorators/space-override-permission.decorator.js.map +1 -1
  391. package/server/applications/spaces/decorators/space-skip-guard.decorator.js +1 -5
  392. package/server/applications/spaces/decorators/space-skip-guard.decorator.js.map +1 -1
  393. package/server/applications/spaces/decorators/space-skip-permissions.decorator.js +1 -5
  394. package/server/applications/spaces/decorators/space-skip-permissions.decorator.js.map +1 -1
  395. package/server/applications/spaces/decorators/space.decorator.js +1 -5
  396. package/server/applications/spaces/decorators/space.decorator.js.map +1 -1
  397. package/server/applications/spaces/dto/create-or-update-space.dto.js +1 -5
  398. package/server/applications/spaces/dto/create-or-update-space.dto.js.map +1 -1
  399. package/server/applications/spaces/dto/delete-space.dto.js +1 -5
  400. package/server/applications/spaces/dto/delete-space.dto.js.map +1 -1
  401. package/server/applications/spaces/dto/search-space.dto.js +1 -5
  402. package/server/applications/spaces/dto/search-space.dto.js.map +1 -1
  403. package/server/applications/spaces/dto/space-roots.dto.js +1 -5
  404. package/server/applications/spaces/dto/space-roots.dto.js.map +1 -1
  405. package/server/applications/spaces/guards/space.guard.js +17 -9
  406. package/server/applications/spaces/guards/space.guard.js.map +1 -1
  407. package/server/applications/spaces/guards/space.guard.spec.js +1 -5
  408. package/server/applications/spaces/guards/space.guard.spec.js.map +1 -1
  409. package/server/applications/spaces/interfaces/space-diff.interface.js +1 -5
  410. package/server/applications/spaces/interfaces/space-diff.interface.js.map +1 -1
  411. package/server/applications/spaces/interfaces/space-files.interface.js +1 -5
  412. package/server/applications/spaces/interfaces/space-files.interface.js.map +1 -1
  413. package/server/applications/spaces/interfaces/space-request.interface.js +1 -5
  414. package/server/applications/spaces/interfaces/space-request.interface.js.map +1 -1
  415. package/server/applications/spaces/interfaces/space-trash.interface.js +1 -5
  416. package/server/applications/spaces/interfaces/space-trash.interface.js.map +1 -1
  417. package/server/applications/spaces/models/space-env.model.js +1 -5
  418. package/server/applications/spaces/models/space-env.model.js.map +1 -1
  419. package/server/applications/spaces/models/space-props.model.js +1 -5
  420. package/server/applications/spaces/models/space-props.model.js.map +1 -1
  421. package/server/applications/spaces/models/space-root-props.model.js +1 -5
  422. package/server/applications/spaces/models/space-root-props.model.js.map +1 -1
  423. package/server/applications/spaces/models/space.model.js +1 -5
  424. package/server/applications/spaces/models/space.model.js.map +1 -1
  425. package/server/applications/spaces/schemas/space-members.interface.js +1 -5
  426. package/server/applications/spaces/schemas/space-members.interface.js.map +1 -1
  427. package/server/applications/spaces/schemas/space-root.interface.js +1 -5
  428. package/server/applications/spaces/schemas/space-root.interface.js.map +1 -1
  429. package/server/applications/spaces/schemas/space.interface.js +1 -5
  430. package/server/applications/spaces/schemas/space.interface.js.map +1 -1
  431. package/server/applications/spaces/schemas/spaces-members.schema.js +1 -5
  432. package/server/applications/spaces/schemas/spaces-members.schema.js.map +1 -1
  433. package/server/applications/spaces/schemas/spaces-roots.schema.js +1 -5
  434. package/server/applications/spaces/schemas/spaces-roots.schema.js.map +1 -1
  435. package/server/applications/spaces/schemas/spaces.schema.js +1 -5
  436. package/server/applications/spaces/schemas/spaces.schema.js.map +1 -1
  437. package/server/applications/spaces/services/spaces-browser.service.js +77 -24
  438. package/server/applications/spaces/services/spaces-browser.service.js.map +1 -1
  439. package/server/applications/spaces/services/spaces-browser.service.spec.js +1 -5
  440. package/server/applications/spaces/services/spaces-browser.service.spec.js.map +1 -1
  441. package/server/applications/spaces/services/spaces-manager.service.js +193 -53
  442. package/server/applications/spaces/services/spaces-manager.service.js.map +1 -1
  443. package/server/applications/spaces/services/spaces-manager.service.spec.js +1 -5
  444. package/server/applications/spaces/services/spaces-manager.service.spec.js.map +1 -1
  445. package/server/applications/spaces/services/spaces-queries.service.js +65 -21
  446. package/server/applications/spaces/services/spaces-queries.service.js.map +1 -1
  447. package/server/applications/spaces/services/spaces-scheduler.service.js +49 -17
  448. package/server/applications/spaces/services/spaces-scheduler.service.js.map +1 -1
  449. package/server/applications/spaces/spaces.controller.js +1 -5
  450. package/server/applications/spaces/spaces.controller.js.map +1 -1
  451. package/server/applications/spaces/spaces.controller.spec.js +1 -5
  452. package/server/applications/spaces/spaces.controller.spec.js.map +1 -1
  453. package/server/applications/spaces/spaces.module.js +1 -5
  454. package/server/applications/spaces/spaces.module.js.map +1 -1
  455. package/server/applications/spaces/utils/paths.js +1 -5
  456. package/server/applications/spaces/utils/paths.js.map +1 -1
  457. package/server/applications/spaces/utils/permissions.js +1 -5
  458. package/server/applications/spaces/utils/permissions.js.map +1 -1
  459. package/server/applications/spaces/utils/routes.js +1 -5
  460. package/server/applications/spaces/utils/routes.js.map +1 -1
  461. package/server/applications/sync/constants/auth.js +1 -5
  462. package/server/applications/sync/constants/auth.js.map +1 -1
  463. package/server/applications/sync/constants/routes.js +6 -5
  464. package/server/applications/sync/constants/routes.js.map +1 -1
  465. package/server/applications/sync/constants/store.js +1 -9
  466. package/server/applications/sync/constants/store.js.map +1 -1
  467. package/server/applications/sync/constants/sync.js +2 -6
  468. package/server/applications/sync/constants/sync.js.map +1 -1
  469. package/server/applications/sync/decorators/sync-context.decorator.js +1 -5
  470. package/server/applications/sync/decorators/sync-context.decorator.js.map +1 -1
  471. package/server/applications/sync/decorators/sync-environment.decorator.js +1 -5
  472. package/server/applications/sync/decorators/sync-environment.decorator.js.map +1 -1
  473. package/server/applications/sync/dtos/sync-client-auth.dto.js +12 -8
  474. package/server/applications/sync/dtos/sync-client-auth.dto.js.map +1 -1
  475. package/server/applications/sync/dtos/sync-client-info.dto.js +49 -0
  476. package/server/applications/sync/dtos/sync-client-info.dto.js.map +1 -0
  477. package/server/applications/sync/dtos/sync-client-registration.dto.js +34 -11
  478. package/server/applications/sync/dtos/sync-client-registration.dto.js.map +1 -1
  479. package/server/applications/sync/dtos/sync-operations.dto.js +1 -5
  480. package/server/applications/sync/dtos/sync-operations.dto.js.map +1 -1
  481. package/server/applications/sync/dtos/sync-path.dto.js +1 -5
  482. package/server/applications/sync/dtos/sync-path.dto.js.map +1 -1
  483. package/server/applications/sync/dtos/sync-upload.dto.js +1 -5
  484. package/server/applications/sync/dtos/sync-upload.dto.js.map +1 -1
  485. package/server/applications/sync/interceptors/sync-diff-gzip-body.interceptor.js +1 -5
  486. package/server/applications/sync/interceptors/sync-diff-gzip-body.interceptor.js.map +1 -1
  487. package/server/applications/sync/interceptors/sync-diff-gzip-body.interceptor.spec.js +1 -5
  488. package/server/applications/sync/interceptors/sync-diff-gzip-body.interceptor.spec.js.map +1 -1
  489. package/server/applications/sync/interfaces/store-manifest.interface.js +1 -5
  490. package/server/applications/sync/interfaces/store-manifest.interface.js.map +1 -1
  491. package/server/applications/sync/interfaces/sync-client-auth.interface.js +1 -25
  492. package/server/applications/sync/interfaces/sync-client-auth.interface.js.map +1 -1
  493. package/server/applications/sync/interfaces/sync-client-paths.interface.js +1 -5
  494. package/server/applications/sync/interfaces/sync-client-paths.interface.js.map +1 -1
  495. package/server/applications/sync/interfaces/sync-client.interface.js +1 -5
  496. package/server/applications/sync/interfaces/sync-client.interface.js.map +1 -1
  497. package/server/applications/sync/interfaces/sync-diff.interface.js +1 -5
  498. package/server/applications/sync/interfaces/sync-diff.interface.js.map +1 -1
  499. package/server/applications/sync/interfaces/sync-path.interface.js +1 -5
  500. package/server/applications/sync/interfaces/sync-path.interface.js.map +1 -1
  501. package/server/applications/sync/schemas/sync-client.interface.js +1 -5
  502. package/server/applications/sync/schemas/sync-client.interface.js.map +1 -1
  503. package/server/applications/sync/schemas/sync-clients.schema.js +1 -5
  504. package/server/applications/sync/schemas/sync-clients.schema.js.map +1 -1
  505. package/server/applications/sync/schemas/sync-path.interface.js +1 -5
  506. package/server/applications/sync/schemas/sync-path.interface.js.map +1 -1
  507. package/server/applications/sync/schemas/sync-paths.schema.js +1 -5
  508. package/server/applications/sync/schemas/sync-paths.schema.js.map +1 -1
  509. package/server/applications/sync/services/sync-clients-manager.service.js +108 -44
  510. package/server/applications/sync/services/sync-clients-manager.service.js.map +1 -1
  511. package/server/applications/sync/services/sync-clients-manager.service.spec.js +14 -17
  512. package/server/applications/sync/services/sync-clients-manager.service.spec.js.map +1 -1
  513. package/server/applications/sync/services/sync-manager.service.js +29 -12
  514. package/server/applications/sync/services/sync-manager.service.js.map +1 -1
  515. package/server/applications/sync/services/sync-manager.service.spec.js +1 -5
  516. package/server/applications/sync/services/sync-manager.service.spec.js.map +1 -1
  517. package/server/applications/sync/services/sync-paths-manager.service.js +27 -17
  518. package/server/applications/sync/services/sync-paths-manager.service.js.map +1 -1
  519. package/server/applications/sync/services/sync-paths-manager.service.spec.js +11 -15
  520. package/server/applications/sync/services/sync-paths-manager.service.spec.js.map +1 -1
  521. package/server/applications/sync/services/sync-queries.service.js +1 -5
  522. package/server/applications/sync/services/sync-queries.service.js.map +1 -1
  523. package/server/applications/sync/sync.config.js +1 -5
  524. package/server/applications/sync/sync.config.js.map +1 -1
  525. package/server/applications/sync/sync.controller.js +21 -6
  526. package/server/applications/sync/sync.controller.js.map +1 -1
  527. package/server/applications/sync/sync.controller.spec.js +1 -5
  528. package/server/applications/sync/sync.controller.spec.js.map +1 -1
  529. package/server/applications/sync/sync.module.js +1 -5
  530. package/server/applications/sync/sync.module.js.map +1 -1
  531. package/server/applications/sync/utils/functions.js +1 -5
  532. package/server/applications/sync/utils/functions.js.map +1 -1
  533. package/server/applications/sync/utils/normalizedMap.js +1 -5
  534. package/server/applications/sync/utils/normalizedMap.js.map +1 -1
  535. package/server/applications/sync/utils/routes.js +1 -5
  536. package/server/applications/sync/utils/routes.js.map +1 -1
  537. package/server/applications/users/admin-users.controller.js +2 -6
  538. package/server/applications/users/admin-users.controller.js.map +1 -1
  539. package/server/applications/users/admin-users.controller.spec.js +6 -10
  540. package/server/applications/users/admin-users.controller.spec.js.map +1 -1
  541. package/server/applications/users/constants/group.js +1 -5
  542. package/server/applications/users/constants/group.js.map +1 -1
  543. package/server/applications/users/constants/member.js +1 -5
  544. package/server/applications/users/constants/member.js.map +1 -1
  545. package/server/applications/users/constants/routes.js +1 -5
  546. package/server/applications/users/constants/routes.js.map +1 -1
  547. package/server/applications/users/constants/user.js +1 -5
  548. package/server/applications/users/constants/user.js.map +1 -1
  549. package/server/applications/users/constants/websocket.js +1 -5
  550. package/server/applications/users/constants/websocket.js.map +1 -1
  551. package/server/applications/users/decorators/permissions.decorator.js +1 -5
  552. package/server/applications/users/decorators/permissions.decorator.js.map +1 -1
  553. package/server/applications/users/decorators/roles.decorator.js +1 -5
  554. package/server/applications/users/decorators/roles.decorator.js.map +1 -1
  555. package/server/applications/users/decorators/user.decorator.js +1 -5
  556. package/server/applications/users/decorators/user.decorator.js.map +1 -1
  557. package/server/applications/users/dto/create-or-update-group.dto.js +1 -5
  558. package/server/applications/users/dto/create-or-update-group.dto.js.map +1 -1
  559. package/server/applications/users/dto/create-or-update-user.dto.js +1 -5
  560. package/server/applications/users/dto/create-or-update-user.dto.js.map +1 -1
  561. package/server/applications/users/dto/delete-user.dto.js +1 -5
  562. package/server/applications/users/dto/delete-user.dto.js.map +1 -1
  563. package/server/applications/users/dto/search-members.dto.js +1 -5
  564. package/server/applications/users/dto/search-members.dto.js.map +1 -1
  565. package/server/applications/users/dto/user-properties.dto.js +1 -5
  566. package/server/applications/users/dto/user-properties.dto.js.map +1 -1
  567. package/server/applications/users/guards/permissions.guard.js +1 -5
  568. package/server/applications/users/guards/permissions.guard.js.map +1 -1
  569. package/server/applications/users/guards/permissions.guard.spec.js +1 -5
  570. package/server/applications/users/guards/permissions.guard.spec.js.map +1 -1
  571. package/server/applications/users/guards/roles.guard.js +1 -5
  572. package/server/applications/users/guards/roles.guard.js.map +1 -1
  573. package/server/applications/users/guards/roles.guard.spec.js +1 -5
  574. package/server/applications/users/guards/roles.guard.spec.js.map +1 -1
  575. package/server/applications/users/interfaces/admin-group.interface.js +1 -5
  576. package/server/applications/users/interfaces/admin-group.interface.js.map +1 -1
  577. package/server/applications/users/interfaces/admin-user.interface.js +1 -5
  578. package/server/applications/users/interfaces/admin-user.interface.js.map +1 -1
  579. package/server/applications/users/interfaces/group-browse.interface.js +1 -5
  580. package/server/applications/users/interfaces/group-browse.interface.js.map +1 -1
  581. package/server/applications/users/interfaces/group-member.js +1 -5
  582. package/server/applications/users/interfaces/group-member.js.map +1 -1
  583. package/server/applications/users/interfaces/guest-user.interface.js +1 -5
  584. package/server/applications/users/interfaces/guest-user.interface.js.map +1 -1
  585. package/server/applications/users/interfaces/member.interface.js +1 -5
  586. package/server/applications/users/interfaces/member.interface.js.map +1 -1
  587. package/server/applications/users/interfaces/owner.interface.js +1 -5
  588. package/server/applications/users/interfaces/owner.interface.js.map +1 -1
  589. package/server/applications/users/interfaces/user-secrets.interface.js +1 -5
  590. package/server/applications/users/interfaces/user-secrets.interface.js.map +1 -1
  591. package/server/applications/users/interfaces/websocket.interface.js +1 -5
  592. package/server/applications/users/interfaces/websocket.interface.js.map +1 -1
  593. package/server/applications/users/models/user.model.js +1 -5
  594. package/server/applications/users/models/user.model.js.map +1 -1
  595. package/server/applications/users/schemas/group.interface.js +1 -5
  596. package/server/applications/users/schemas/group.interface.js.map +1 -1
  597. package/server/applications/users/schemas/groups.schema.js +1 -5
  598. package/server/applications/users/schemas/groups.schema.js.map +1 -1
  599. package/server/applications/users/schemas/user-group.interface.js +1 -5
  600. package/server/applications/users/schemas/user-group.interface.js.map +1 -1
  601. package/server/applications/users/schemas/user.interface.js +1 -5
  602. package/server/applications/users/schemas/user.interface.js.map +1 -1
  603. package/server/applications/users/schemas/users-groups.schema.js +1 -5
  604. package/server/applications/users/schemas/users-groups.schema.js.map +1 -1
  605. package/server/applications/users/schemas/users-guests.schema.js +1 -5
  606. package/server/applications/users/schemas/users-guests.schema.js.map +1 -1
  607. package/server/applications/users/schemas/users.schema.js +1 -5
  608. package/server/applications/users/schemas/users.schema.js.map +1 -1
  609. package/server/applications/users/services/admin-users-manager.service.js +67 -23
  610. package/server/applications/users/services/admin-users-manager.service.js.map +1 -1
  611. package/server/applications/users/services/admin-users-manager.service.spec.js +3 -7
  612. package/server/applications/users/services/admin-users-manager.service.spec.js.map +1 -1
  613. package/server/applications/users/services/admin-users-queries.service.js +65 -21
  614. package/server/applications/users/services/admin-users-queries.service.js.map +1 -1
  615. package/server/applications/users/services/users-manager.service.js +81 -25
  616. package/server/applications/users/services/users-manager.service.js.map +1 -1
  617. package/server/applications/users/services/users-manager.service.spec.js +14 -12
  618. package/server/applications/users/services/users-manager.service.spec.js.map +1 -1
  619. package/server/applications/users/services/users-queries.service.js +49 -17
  620. package/server/applications/users/services/users-queries.service.js.map +1 -1
  621. package/server/applications/users/users.controller.js +2 -6
  622. package/server/applications/users/users.controller.js.map +1 -1
  623. package/server/applications/users/users.controller.spec.js +5 -9
  624. package/server/applications/users/users.controller.spec.js.map +1 -1
  625. package/server/applications/users/users.e2e-spec.js +3 -7
  626. package/server/applications/users/users.e2e-spec.js.map +1 -1
  627. package/server/applications/users/users.gateway.js +29 -12
  628. package/server/applications/users/users.gateway.js.map +1 -1
  629. package/server/applications/users/users.gateway.spec.js +1 -5
  630. package/server/applications/users/users.gateway.spec.js.map +1 -1
  631. package/server/applications/users/users.module.js +1 -5
  632. package/server/applications/users/users.module.js.map +1 -1
  633. package/server/applications/users/utils/avatar.js +1 -5
  634. package/server/applications/users/utils/avatar.js.map +1 -1
  635. package/server/applications/users/utils/test.js +1 -5
  636. package/server/applications/users/utils/test.js.map +1 -1
  637. package/server/applications/webdav/constants/routes.js +1 -5
  638. package/server/applications/webdav/constants/routes.js.map +1 -1
  639. package/server/applications/webdav/constants/webdav.js +1 -5
  640. package/server/applications/webdav/constants/webdav.js.map +1 -1
  641. package/server/applications/webdav/decorators/if-header.decorator.js +1 -5
  642. package/server/applications/webdav/decorators/if-header.decorator.js.map +1 -1
  643. package/server/applications/webdav/decorators/webdav-context.decorator.js +1 -5
  644. package/server/applications/webdav/decorators/webdav-context.decorator.js.map +1 -1
  645. package/server/applications/webdav/filters/webdav.filter.js +1 -5
  646. package/server/applications/webdav/filters/webdav.filter.js.map +1 -1
  647. package/server/applications/webdav/filters/webdav.filter.spec.js +1 -5
  648. package/server/applications/webdav/filters/webdav.filter.spec.js.map +1 -1
  649. package/server/applications/webdav/guards/webdav-protocol.guard.js +54 -20
  650. package/server/applications/webdav/guards/webdav-protocol.guard.js.map +1 -1
  651. package/server/applications/webdav/guards/webdav-protocol.guard.spec.js +54 -0
  652. package/server/applications/webdav/guards/webdav-protocol.guard.spec.js.map +1 -1
  653. package/server/applications/webdav/interfaces/if-header.interface.js +1 -5
  654. package/server/applications/webdav/interfaces/if-header.interface.js.map +1 -1
  655. package/server/applications/webdav/interfaces/webdav.interface.js +1 -5
  656. package/server/applications/webdav/interfaces/webdav.interface.js.map +1 -1
  657. package/server/applications/webdav/models/webdav-file.model.js +1 -5
  658. package/server/applications/webdav/models/webdav-file.model.js.map +1 -1
  659. package/server/applications/webdav/services/webdav-methods.service.js +74 -26
  660. package/server/applications/webdav/services/webdav-methods.service.js.map +1 -1
  661. package/server/applications/webdav/services/webdav-methods.service.spec.js +15 -18
  662. package/server/applications/webdav/services/webdav-methods.service.spec.js.map +1 -1
  663. package/server/applications/webdav/services/webdav-spaces.service.js +17 -9
  664. package/server/applications/webdav/services/webdav-spaces.service.js.map +1 -1
  665. package/server/applications/webdav/services/webdav-spaces.service.spec.js +1 -5
  666. package/server/applications/webdav/services/webdav-spaces.service.spec.js.map +1 -1
  667. package/server/applications/webdav/utils/bootstrap.js +1 -5
  668. package/server/applications/webdav/utils/bootstrap.js.map +1 -1
  669. package/server/applications/webdav/utils/if-header.js +1 -5
  670. package/server/applications/webdav/utils/if-header.js.map +1 -1
  671. package/server/applications/webdav/utils/routes.js +1 -5
  672. package/server/applications/webdav/utils/routes.js.map +1 -1
  673. package/server/applications/webdav/utils/webdav.js +1 -5
  674. package/server/applications/webdav/utils/webdav.js.map +1 -1
  675. package/server/applications/webdav/utils/xml.js +1 -5
  676. package/server/applications/webdav/utils/xml.js.map +1 -1
  677. package/server/applications/webdav/webdav.controller.js +1 -5
  678. package/server/applications/webdav/webdav.controller.js.map +1 -1
  679. package/server/applications/webdav/webdav.controller.spec.js +1 -5
  680. package/server/applications/webdav/webdav.controller.spec.js.map +1 -1
  681. package/server/applications/webdav/webdav.e2e-spec.js +1 -5
  682. package/server/applications/webdav/webdav.e2e-spec.js.map +1 -1
  683. package/server/applications/webdav/webdav.module.js +1 -5
  684. package/server/applications/webdav/webdav.module.js.map +1 -1
  685. package/server/authentication/auth.config.js +23 -123
  686. package/server/authentication/auth.config.js.map +1 -1
  687. package/server/authentication/auth.controller.js +27 -21
  688. package/server/authentication/auth.controller.js.map +1 -1
  689. package/server/authentication/auth.controller.spec.js +6 -10
  690. package/server/authentication/auth.controller.spec.js.map +1 -1
  691. package/server/authentication/auth.e2e-spec.js +1 -5
  692. package/server/authentication/auth.e2e-spec.js.map +1 -1
  693. package/server/authentication/auth.module.js +17 -20
  694. package/server/authentication/auth.module.js.map +1 -1
  695. package/server/authentication/{services/auth-manager.service.js → auth.service.js} +41 -18
  696. package/server/authentication/auth.service.js.map +1 -0
  697. package/server/authentication/{services/auth-manager.service.spec.js → auth.service.spec.js} +6 -10
  698. package/server/authentication/auth.service.spec.js.map +1 -0
  699. package/server/authentication/constants/auth.js +1 -5
  700. package/server/authentication/constants/auth.js.map +1 -1
  701. package/server/authentication/constants/routes.js +41 -30
  702. package/server/authentication/constants/routes.js.map +1 -1
  703. package/server/authentication/constants/scope.js +2 -5
  704. package/server/authentication/constants/scope.js.map +1 -1
  705. package/server/authentication/decorators/auth-token-optional.decorator.js +1 -5
  706. package/server/authentication/decorators/auth-token-optional.decorator.js.map +1 -1
  707. package/server/authentication/decorators/auth-token-skip.decorator.js +1 -5
  708. package/server/authentication/decorators/auth-token-skip.decorator.js.map +1 -1
  709. package/server/authentication/dto/login-response.dto.js +1 -10
  710. package/server/authentication/dto/login-response.dto.js.map +1 -1
  711. package/server/authentication/dto/token-response.dto.js +1 -5
  712. package/server/authentication/dto/token-response.dto.js.map +1 -1
  713. package/server/authentication/guards/auth-anonymous.guard.js +1 -5
  714. package/server/authentication/guards/auth-anonymous.guard.js.map +1 -1
  715. package/server/authentication/guards/auth-anonymous.guard.spec.js +1 -5
  716. package/server/authentication/guards/auth-anonymous.guard.spec.js.map +1 -1
  717. package/server/authentication/guards/auth-anonymous.strategy.js +1 -5
  718. package/server/authentication/guards/auth-anonymous.strategy.js.map +1 -1
  719. package/server/authentication/guards/auth-basic.guard.js +1 -5
  720. package/server/authentication/guards/auth-basic.guard.js.map +1 -1
  721. package/server/authentication/guards/auth-basic.guard.spec.js +13 -14
  722. package/server/authentication/guards/auth-basic.guard.spec.js.map +1 -1
  723. package/server/authentication/guards/auth-basic.strategy.js +10 -11
  724. package/server/authentication/guards/auth-basic.strategy.js.map +1 -1
  725. package/server/authentication/guards/auth-digest.guard.js +1 -5
  726. package/server/authentication/guards/auth-digest.guard.js.map +1 -1
  727. package/server/authentication/guards/auth-digest.strategy.js +1 -5
  728. package/server/authentication/guards/auth-digest.strategy.js.map +1 -1
  729. package/server/authentication/guards/auth-local.guard.js +1 -5
  730. package/server/authentication/guards/auth-local.guard.js.map +1 -1
  731. package/server/authentication/guards/auth-local.guard.spec.js +9 -13
  732. package/server/authentication/guards/auth-local.guard.spec.js.map +1 -1
  733. package/server/authentication/guards/auth-local.strategy.js +6 -10
  734. package/server/authentication/guards/auth-local.strategy.js.map +1 -1
  735. package/server/authentication/guards/auth-token-access.guard.js +1 -5
  736. package/server/authentication/guards/auth-token-access.guard.js.map +1 -1
  737. package/server/authentication/guards/auth-token-access.guard.spec.js +3 -7
  738. package/server/authentication/guards/auth-token-access.guard.spec.js.map +1 -1
  739. package/server/authentication/guards/auth-token-access.strategy.js +3 -7
  740. package/server/authentication/guards/auth-token-access.strategy.js.map +1 -1
  741. package/server/authentication/guards/auth-token-refresh.guard.js +1 -5
  742. package/server/authentication/guards/auth-token-refresh.guard.js.map +1 -1
  743. package/server/authentication/guards/auth-token-refresh.guard.spec.js +3 -7
  744. package/server/authentication/guards/auth-token-refresh.guard.spec.js.map +1 -1
  745. package/server/authentication/guards/auth-token-refresh.strategy.js +3 -7
  746. package/server/authentication/guards/auth-token-refresh.strategy.js.map +1 -1
  747. package/server/authentication/guards/implementations/http-basic.strategy.js +1 -5
  748. package/server/authentication/guards/implementations/http-basic.strategy.js.map +1 -1
  749. package/server/authentication/guards/implementations/http-digest.strategy.js +1 -5
  750. package/server/authentication/guards/implementations/http-digest.strategy.js.map +1 -1
  751. package/server/authentication/interfaces/auth-request.interface.js +1 -5
  752. package/server/authentication/interfaces/auth-request.interface.js.map +1 -1
  753. package/server/authentication/interfaces/jwt-payload.interface.js +1 -5
  754. package/server/authentication/interfaces/jwt-payload.interface.js.map +1 -1
  755. package/server/authentication/interfaces/token.interface.js +1 -5
  756. package/server/authentication/interfaces/token.interface.js.map +1 -1
  757. package/server/authentication/providers/auth-providers.constants.js +18 -0
  758. package/server/authentication/providers/auth-providers.constants.js.map +1 -0
  759. package/server/authentication/providers/auth-providers.models.js +14 -0
  760. package/server/authentication/providers/auth-providers.models.js.map +1 -0
  761. package/server/authentication/providers/auth-providers.utils.js +42 -0
  762. package/server/authentication/providers/auth-providers.utils.js.map +1 -0
  763. package/server/authentication/providers/ldap/auth-ldap.config.js +143 -0
  764. package/server/authentication/providers/ldap/auth-ldap.config.js.map +1 -0
  765. package/server/authentication/{constants/auth-ldap.js → providers/ldap/auth-ldap.constants.js} +12 -6
  766. package/server/authentication/providers/ldap/auth-ldap.constants.js.map +1 -0
  767. package/server/authentication/providers/ldap/auth-provider-ldap.service.js +506 -0
  768. package/server/authentication/providers/ldap/auth-provider-ldap.service.js.map +1 -0
  769. package/server/authentication/providers/ldap/auth-provider-ldap.service.spec.js +674 -0
  770. package/server/authentication/providers/ldap/auth-provider-ldap.service.spec.js.map +1 -0
  771. package/server/authentication/{services/auth-methods/auth-method-database.service.js → providers/mysql/auth-provider-mysql.service.js} +16 -14
  772. package/server/authentication/providers/mysql/auth-provider-mysql.service.js.map +1 -0
  773. package/server/authentication/{services/auth-methods/auth-method-database.service.spec.js → providers/mysql/auth-provider-mysql.service.spec.js} +15 -19
  774. package/server/authentication/providers/mysql/auth-provider-mysql.service.spec.js.map +1 -0
  775. package/server/authentication/providers/oidc/auth-oidc-desktop.constants.js +30 -0
  776. package/server/authentication/providers/oidc/auth-oidc-desktop.constants.js.map +1 -0
  777. package/server/authentication/providers/oidc/auth-oidc.config.js +149 -0
  778. package/server/authentication/providers/oidc/auth-oidc.config.js.map +1 -0
  779. package/server/authentication/providers/oidc/auth-oidc.constants.js +39 -0
  780. package/server/authentication/providers/oidc/auth-oidc.constants.js.map +1 -0
  781. package/server/authentication/providers/oidc/auth-oidc.controller.js +83 -0
  782. package/server/authentication/providers/oidc/auth-oidc.controller.js.map +1 -0
  783. package/server/authentication/providers/oidc/auth-oidc.interfaces.js +6 -0
  784. package/server/authentication/providers/oidc/auth-oidc.interfaces.js.map +1 -0
  785. package/server/authentication/providers/oidc/auth-provider-oidc.module.js +36 -0
  786. package/server/authentication/providers/oidc/auth-provider-oidc.module.js.map +1 -0
  787. package/server/authentication/providers/oidc/auth-provider-oidc.service.js +373 -0
  788. package/server/authentication/providers/oidc/auth-provider-oidc.service.js.map +1 -0
  789. package/server/authentication/providers/oidc/auth-provider-oidc.service.spec.js +270 -0
  790. package/server/authentication/providers/oidc/auth-provider-oidc.service.spec.js.map +1 -0
  791. package/server/authentication/{services/auth-methods/auth-method-two-fa.service.js → providers/two-fa/auth-provider-two-fa.service.js} +56 -38
  792. package/server/authentication/providers/two-fa/auth-provider-two-fa.service.js.map +1 -0
  793. package/server/authentication/{services/auth-methods/auth-method-two-fa.service.spec.js → providers/two-fa/auth-provider-two-fa.service.spec.js} +6 -10
  794. package/server/authentication/providers/two-fa/auth-provider-two-fa.service.spec.js.map +1 -0
  795. package/server/authentication/{guards → providers/two-fa}/auth-two-fa-guard.js +10 -14
  796. package/server/authentication/providers/two-fa/auth-two-fa-guard.js.map +1 -0
  797. package/server/authentication/providers/two-fa/auth-two-fa.config.js +57 -0
  798. package/server/authentication/providers/two-fa/auth-two-fa.config.js.map +1 -0
  799. package/server/authentication/{dto/two-fa-verify.dto.js → providers/two-fa/auth-two-fa.dtos.js} +8 -6
  800. package/server/authentication/providers/two-fa/auth-two-fa.dtos.js.map +1 -0
  801. package/server/authentication/providers/two-fa/auth-two-fa.interfaces.js +6 -0
  802. package/server/authentication/providers/two-fa/auth-two-fa.interfaces.js.map +1 -0
  803. package/server/authentication/utils/crypt-secret.js +1 -5
  804. package/server/authentication/utils/crypt-secret.js.map +1 -1
  805. package/server/common/constants.js +1 -5
  806. package/server/common/constants.js.map +1 -1
  807. package/server/common/decorators.js +1 -5
  808. package/server/common/decorators.js.map +1 -1
  809. package/server/common/functions.js +25 -9
  810. package/server/common/functions.js.map +1 -1
  811. package/server/common/i18n.js +1 -5
  812. package/server/common/i18n.js.map +1 -1
  813. package/server/common/image.js +1 -5
  814. package/server/common/image.js.map +1 -1
  815. package/server/common/interfaces.js +1 -5
  816. package/server/common/interfaces.js.map +1 -1
  817. package/server/common/qrcode.js +1 -5
  818. package/server/common/qrcode.js.map +1 -1
  819. package/server/common/shared.js +6 -6
  820. package/server/common/shared.js.map +1 -1
  821. package/server/configuration/config.constants.js +1 -5
  822. package/server/configuration/config.constants.js.map +1 -1
  823. package/server/configuration/config.environment.js +2 -6
  824. package/server/configuration/config.environment.js.map +1 -1
  825. package/server/configuration/config.interfaces.js +1 -5
  826. package/server/configuration/config.interfaces.js.map +1 -1
  827. package/server/configuration/config.loader.js +1 -5
  828. package/server/configuration/config.loader.js.map +1 -1
  829. package/server/configuration/config.logger.js +4 -8
  830. package/server/configuration/config.logger.js.map +1 -1
  831. package/server/configuration/config.validation.js +7 -5
  832. package/server/configuration/config.validation.js.map +1 -1
  833. package/server/infrastructure/cache/adapters/mysql-cache.adapter.js +9 -7
  834. package/server/infrastructure/cache/adapters/mysql-cache.adapter.js.map +1 -1
  835. package/server/infrastructure/cache/adapters/redis-cache.adapter.js +1 -5
  836. package/server/infrastructure/cache/adapters/redis-cache.adapter.js.map +1 -1
  837. package/server/infrastructure/cache/cache.config.js +1 -5
  838. package/server/infrastructure/cache/cache.config.js.map +1 -1
  839. package/server/infrastructure/cache/cache.decorator.js +9 -7
  840. package/server/infrastructure/cache/cache.decorator.js.map +1 -1
  841. package/server/infrastructure/cache/cache.e2e-spec.js +1 -5
  842. package/server/infrastructure/cache/cache.e2e-spec.js.map +1 -1
  843. package/server/infrastructure/cache/cache.module.js +1 -5
  844. package/server/infrastructure/cache/cache.module.js.map +1 -1
  845. package/server/infrastructure/cache/schemas/mysql-cache.interface.js +1 -5
  846. package/server/infrastructure/cache/schemas/mysql-cache.interface.js.map +1 -1
  847. package/server/infrastructure/cache/schemas/mysql-cache.schema.js +1 -5
  848. package/server/infrastructure/cache/schemas/mysql-cache.schema.js.map +1 -1
  849. package/server/infrastructure/cache/services/cache.service.js +1 -5
  850. package/server/infrastructure/cache/services/cache.service.js.map +1 -1
  851. package/server/infrastructure/context/context.module.js +1 -5
  852. package/server/infrastructure/context/context.module.js.map +1 -1
  853. package/server/infrastructure/context/interceptors/context.interceptor.js +1 -5
  854. package/server/infrastructure/context/interceptors/context.interceptor.js.map +1 -1
  855. package/server/infrastructure/context/interceptors/context.interceptor.spec.js +2 -6
  856. package/server/infrastructure/context/interceptors/context.interceptor.spec.js.map +1 -1
  857. package/server/infrastructure/context/interfaces/context-store.interface.js +1 -5
  858. package/server/infrastructure/context/interfaces/context-store.interface.js.map +1 -1
  859. package/server/infrastructure/context/services/context-manager.service.js +1 -5
  860. package/server/infrastructure/context/services/context-manager.service.js.map +1 -1
  861. package/server/infrastructure/context/services/context-manager.service.spec.js +1 -5
  862. package/server/infrastructure/context/services/context-manager.service.spec.js.map +1 -1
  863. package/server/infrastructure/database/columns.js +1 -5
  864. package/server/infrastructure/database/columns.js.map +1 -1
  865. package/server/infrastructure/database/configuration.js +1 -5
  866. package/server/infrastructure/database/configuration.js.map +1 -1
  867. package/server/infrastructure/database/constants.js +2 -6
  868. package/server/infrastructure/database/constants.js.map +1 -1
  869. package/server/infrastructure/database/database.config.js +1 -5
  870. package/server/infrastructure/database/database.config.js.map +1 -1
  871. package/server/infrastructure/database/database.logger.js +1 -5
  872. package/server/infrastructure/database/database.logger.js.map +1 -1
  873. package/server/infrastructure/database/database.module.js +1 -5
  874. package/server/infrastructure/database/database.module.js.map +1 -1
  875. package/server/infrastructure/database/interfaces/database.interface.js +1 -5
  876. package/server/infrastructure/database/interfaces/database.interface.js.map +1 -1
  877. package/server/infrastructure/database/schema.js +1 -5
  878. package/server/infrastructure/database/schema.js.map +1 -1
  879. package/server/infrastructure/database/scripts/create-user.js +1 -5
  880. package/server/infrastructure/database/scripts/create-user.js.map +1 -1
  881. package/server/infrastructure/database/scripts/db.js +1 -5
  882. package/server/infrastructure/database/scripts/db.js.map +1 -1
  883. package/server/infrastructure/database/scripts/seed/main.js +1 -5
  884. package/server/infrastructure/database/scripts/seed/main.js.map +1 -1
  885. package/server/infrastructure/database/scripts/seed/usersgroups.js +1 -5
  886. package/server/infrastructure/database/scripts/seed/usersgroups.js.map +1 -1
  887. package/server/infrastructure/database/utils.js +1 -5
  888. package/server/infrastructure/database/utils.js.map +1 -1
  889. package/server/infrastructure/mailer/interfaces/mail.interface.js +1 -5
  890. package/server/infrastructure/mailer/interfaces/mail.interface.js.map +1 -1
  891. package/server/infrastructure/mailer/mailer.config.js +1 -5
  892. package/server/infrastructure/mailer/mailer.config.js.map +1 -1
  893. package/server/infrastructure/mailer/mailer.module.js +1 -5
  894. package/server/infrastructure/mailer/mailer.module.js.map +1 -1
  895. package/server/infrastructure/mailer/mailer.service.js +1 -5
  896. package/server/infrastructure/mailer/mailer.service.js.map +1 -1
  897. package/server/infrastructure/mailer/mailer.service.spec.js +2 -6
  898. package/server/infrastructure/mailer/mailer.service.spec.js.map +1 -1
  899. package/server/infrastructure/scheduler/scheduler.constants.js +1 -5
  900. package/server/infrastructure/scheduler/scheduler.constants.js.map +1 -1
  901. package/server/infrastructure/scheduler/scheduler.module.js +1 -5
  902. package/server/infrastructure/scheduler/scheduler.module.js.map +1 -1
  903. package/server/infrastructure/websocket/adapters/cluster.adapter.js +1 -5
  904. package/server/infrastructure/websocket/adapters/cluster.adapter.js.map +1 -1
  905. package/server/infrastructure/websocket/adapters/redis.adapter.js +1 -5
  906. package/server/infrastructure/websocket/adapters/redis.adapter.js.map +1 -1
  907. package/server/infrastructure/websocket/adapters/web-socket.adapter.js +1 -5
  908. package/server/infrastructure/websocket/adapters/web-socket.adapter.js.map +1 -1
  909. package/server/infrastructure/websocket/decorators/web-socket-user.decorator.js +1 -5
  910. package/server/infrastructure/websocket/decorators/web-socket-user.decorator.js.map +1 -1
  911. package/server/infrastructure/websocket/interfaces/auth-socket-io.interface.js +1 -5
  912. package/server/infrastructure/websocket/interfaces/auth-socket-io.interface.js.map +1 -1
  913. package/server/infrastructure/websocket/utils.js +1 -5
  914. package/server/infrastructure/websocket/utils.js.map +1 -1
  915. package/server/infrastructure/websocket/web-socket.config.js +1 -5
  916. package/server/infrastructure/websocket/web-socket.config.js.map +1 -1
  917. package/server/main.js +5 -0
  918. package/server/main.js.map +1 -1
  919. package/static/assets/pdfjs/build/pdf.mjs +724 -745
  920. package/static/assets/pdfjs/build/pdf.mjs.map +1 -1
  921. package/static/assets/pdfjs/build/pdf.sandbox.mjs +2 -2
  922. package/static/assets/pdfjs/build/pdf.worker.mjs +706 -193
  923. package/static/assets/pdfjs/build/pdf.worker.mjs.map +1 -1
  924. package/static/assets/pdfjs/version +1 -1
  925. package/static/assets/pdfjs/web/locale/dsb/viewer.ftl +5 -5
  926. package/static/assets/pdfjs/web/locale/en-US/viewer.ftl +1 -0
  927. package/static/assets/pdfjs/web/locale/fur/viewer.ftl +5 -0
  928. package/static/assets/pdfjs/web/locale/kk/viewer.ftl +28 -0
  929. package/static/assets/pdfjs/web/locale/ml/viewer.ftl +4 -0
  930. package/static/assets/pdfjs/web/locale/ru/viewer.ftl +3 -3
  931. package/static/assets/pdfjs/web/viewer.css +207 -65
  932. package/static/assets/pdfjs/web/viewer.html +11 -10
  933. package/static/assets/pdfjs/web/viewer.mjs +850 -270
  934. package/static/assets/pdfjs/web/viewer.mjs.map +1 -1
  935. package/static/assets/pdfjs/web/wasm/LICENSE_JBIG2 +196 -0
  936. package/static/assets/pdfjs/web/wasm/LICENSE_PDFJS_JBIG2 +13 -0
  937. package/static/assets/pdfjs/web/wasm/jbig2.wasm +0 -0
  938. package/static/chunk-22TZP6HW.js +1 -0
  939. package/static/{chunk-U5E5H2DD.js → chunk-27ATUHBH.js} +1 -1
  940. package/static/{chunk-HZAB6F4Q.js → chunk-2CKLZ3FM.js} +1 -1
  941. package/static/{chunk-XZHWESIY.js → chunk-2QZPX7LO.js} +1 -1
  942. package/static/{chunk-UOK3LKSX.js → chunk-2R6IBBPZ.js} +1 -1
  943. package/static/{chunk-DVCN3P7Q.js → chunk-4FIGEBNL.js} +1 -1
  944. package/static/chunk-4P3JABAP.js +13 -0
  945. package/static/chunk-5CZOSAMZ.js +1 -0
  946. package/static/{chunk-RBTLSPYJ.js → chunk-677WUBCT.js} +1 -1
  947. package/static/{chunk-KEZNIIFH.js → chunk-74CAHBFM.js} +1 -1
  948. package/static/{chunk-WRK2FTKU.js → chunk-7GWW6MJO.js} +1 -1
  949. package/static/{chunk-EKWB5W72.js → chunk-7WOPGQXB.js} +1 -1
  950. package/static/{chunk-IMFO2MI7.js → chunk-A4UGPSWX.js} +1 -1
  951. package/static/{chunk-KDUAB76O.js → chunk-AHO37FKW.js} +1 -1
  952. package/static/chunk-AQCXMKP3.js +1 -0
  953. package/static/chunk-B6PDYCRO.js +3 -0
  954. package/static/{chunk-PPJCVBJH.js → chunk-CU76ATCF.js} +1 -1
  955. package/static/{chunk-ARS47O5X.js → chunk-CWYHOPOP.js} +1 -1
  956. package/static/{chunk-CSVPAZHK.js → chunk-E5WI5725.js} +1 -1
  957. package/static/{chunk-XX3JPJUM.js → chunk-FC5HTKVM.js} +1 -1
  958. package/static/{chunk-QGHNJVJ6.js → chunk-FOSM7EYI.js} +1 -1
  959. package/static/{chunk-JAJ7VXMB.js → chunk-GAZO25PI.js} +1 -1
  960. package/static/{chunk-IHS5LSJJ.js → chunk-GB7ABR5N.js} +1 -1
  961. package/static/{chunk-27V66YJV.js → chunk-GEHFKZQ5.js} +2 -2
  962. package/static/{chunk-3QTROEHV.js → chunk-GQFMWVFD.js} +1 -1
  963. package/static/{chunk-FWQJ4ZCD.js → chunk-GVNTC564.js} +1 -1
  964. package/static/{chunk-4NIYCYRS.js → chunk-HGL3NYP2.js} +2 -2
  965. package/static/chunk-HLIWPWRA.js +1 -0
  966. package/static/{chunk-3VRUIWQG.js → chunk-HNYB3M4S.js} +1 -1
  967. package/static/{chunk-7HJFIMNF.js → chunk-HUXAUQMN.js} +1 -1
  968. package/static/chunk-I2XA6PPK.js +1 -0
  969. package/static/{chunk-RJULB733.js → chunk-ISV3BO6R.js} +1 -1
  970. package/static/{chunk-R4VYKZVJ.js → chunk-IWWBV6EM.js} +1 -1
  971. package/static/{chunk-TTWMFWEC.js → chunk-JV3AGU5B.js} +1 -1
  972. package/static/{chunk-X7NHX5C7.js → chunk-K25E7YGG.js} +1 -1
  973. package/static/chunk-K46PUTZB.js +1 -0
  974. package/static/{chunk-D2MLAO5N.js → chunk-KERFLJ56.js} +1 -7
  975. package/static/{chunk-LZUHREOF.js → chunk-KJD3KFF3.js} +1 -1
  976. package/static/chunk-KPKSI23S.js +1 -0
  977. package/static/{chunk-CMNMPG6Z.js → chunk-KZS7CTNR.js} +1 -1
  978. package/static/{chunk-RNVPQQKT.js → chunk-L5IHUVXL.js} +1 -1
  979. package/static/{chunk-2GXOVGTD.js → chunk-L7RRX2M3.js} +1 -1
  980. package/static/{chunk-WFMEUST4.js → chunk-LGWJ2WKU.js} +1 -1
  981. package/static/{chunk-ZOMRIN3G.js → chunk-MLC7JK2H.js} +2 -2
  982. package/static/{chunk-76REYAEA.js → chunk-MOHNYW2A.js} +1 -1
  983. package/static/{chunk-ZHUBWKA2.js → chunk-MTRXBVWZ.js} +1 -1
  984. package/static/{chunk-QJ22N76V.js → chunk-MZQK6LNV.js} +1 -1
  985. package/static/{chunk-SDJNZULP.js → chunk-NCDUOVMW.js} +1 -1
  986. package/static/chunk-NGUAJIGI.js +1 -0
  987. package/static/chunk-NIPP6JDI.js +1 -0
  988. package/static/{chunk-VD5JHSDS.js → chunk-NMTBMHUL.js} +1 -1
  989. package/static/chunk-O4XXMZFX.js +4 -0
  990. package/static/{chunk-WZPF4LS2.js → chunk-OANZITPM.js} +1 -1
  991. package/static/{chunk-JNTNMIUH.js → chunk-OGE4SAHU.js} +1 -1
  992. package/static/{chunk-S6H2ELRY.js → chunk-OI3ME22C.js} +1 -1
  993. package/static/{chunk-7KAYOR3A.js → chunk-Q3EGCMF5.js} +1 -1
  994. package/static/chunk-QF2NSHZA.js +1 -0
  995. package/static/{chunk-3ZBAQTHJ.js → chunk-QIGUDEZF.js} +1 -1
  996. package/static/{chunk-76M3BMK6.js → chunk-QJVC3SRJ.js} +11 -11
  997. package/static/{chunk-VBTZDHZ3.js → chunk-QKN6LAAA.js} +1 -1
  998. package/static/{chunk-JRXG43AA.js → chunk-QRFESU5O.js} +2 -2
  999. package/static/chunk-QVRVFYJH.js +1 -0
  1000. package/static/{chunk-BCN4T5DO.js → chunk-RFJIPIOK.js} +2 -2
  1001. package/static/{chunk-2RWLNKZH.js → chunk-RLL634K4.js} +1 -1
  1002. package/static/{chunk-D5FQ72R4.js → chunk-RS2OFKWP.js} +1 -1
  1003. package/static/{chunk-CN5YVRFT.js → chunk-RWAAC3A4.js} +1 -1
  1004. package/static/{chunk-LWSCODLD.js → chunk-RWCNTCU5.js} +1 -1
  1005. package/static/{chunk-FTFEQDWH.js → chunk-S5Y64DDS.js} +1 -1
  1006. package/static/{chunk-J7474P3L.js → chunk-SLG5KDU6.js} +1 -1
  1007. package/static/chunk-TJ4CVFEL.js +1 -0
  1008. package/static/{chunk-KAUCN24H.js → chunk-TWCGKSYE.js} +1 -1
  1009. package/static/{chunk-PDG7DOEF.js → chunk-UMDRE4S7.js} +1 -1
  1010. package/static/chunk-VRIOLRYR.js +5 -0
  1011. package/static/chunk-VS4O2XDP.js +1 -0
  1012. package/static/{chunk-ZEJLIGAY.js → chunk-VSBFNFOM.js} +1 -1
  1013. package/static/{chunk-XSURUW7C.js → chunk-WN4WXCVK.js} +1 -1
  1014. package/static/{chunk-S44QIK3G.js → chunk-WX7RXW7K.js} +1 -1
  1015. package/static/{chunk-3ZLBVUCX.js → chunk-XC4POKR3.js} +2 -2
  1016. package/static/{chunk-TNCKNU6I.js → chunk-Y4AUYQTG.js} +1 -1
  1017. package/static/{chunk-3MVPXC3U.js → chunk-Y67J3BOL.js} +1 -1
  1018. package/static/{chunk-QTPIEEZW.js → chunk-YMIXHRJQ.js} +1 -7
  1019. package/static/{chunk-VZFZUI6D.js → chunk-ZUNKFAKP.js} +1 -1
  1020. package/static/index.html +3 -3
  1021. package/static/main-QN4UCOC5.js +5 -0
  1022. package/static/{styles-XLLEY5Y3.css → styles-46GLIE7Y.css} +1 -1
  1023. package/server/authentication/constants/auth-ldap.js.map +0 -1
  1024. package/server/authentication/dto/two-fa-verify.dto.js.map +0 -1
  1025. package/server/authentication/guards/auth-two-fa-guard.js.map +0 -1
  1026. package/server/authentication/interfaces/two-fa-setup.interface.js +0 -10
  1027. package/server/authentication/interfaces/two-fa-setup.interface.js.map +0 -1
  1028. package/server/authentication/models/auth-method.js +0 -18
  1029. package/server/authentication/models/auth-method.js.map +0 -1
  1030. package/server/authentication/services/auth-manager.service.js.map +0 -1
  1031. package/server/authentication/services/auth-manager.service.spec.js.map +0 -1
  1032. package/server/authentication/services/auth-methods/auth-method-database.service.js.map +0 -1
  1033. package/server/authentication/services/auth-methods/auth-method-database.service.spec.js.map +0 -1
  1034. package/server/authentication/services/auth-methods/auth-method-ldap.service.js +0 -326
  1035. package/server/authentication/services/auth-methods/auth-method-ldap.service.js.map +0 -1
  1036. package/server/authentication/services/auth-methods/auth-method-ldap.service.spec.js +0 -534
  1037. package/server/authentication/services/auth-methods/auth-method-ldap.service.spec.js.map +0 -1
  1038. package/server/authentication/services/auth-methods/auth-method-two-fa.service.js.map +0 -1
  1039. package/server/authentication/services/auth-methods/auth-method-two-fa.service.spec.js.map +0 -1
  1040. package/static/chunk-2YQ4SX3A.js +0 -13
  1041. package/static/chunk-46TJLPJY.js +0 -1
  1042. package/static/chunk-6OEOADR6.js +0 -1
  1043. package/static/chunk-AALPWGPB.js +0 -3
  1044. package/static/chunk-CVXLHSO5.js +0 -1
  1045. package/static/chunk-G7RZN7HN.js +0 -1
  1046. package/static/chunk-LTJNLOX2.js +0 -1
  1047. package/static/chunk-NIKNG2FX.js +0 -1
  1048. package/static/chunk-NNZWSNAW.js +0 -1
  1049. package/static/chunk-NWKBB7J4.js +0 -1
  1050. package/static/chunk-PVYVY3GD.js +0 -1
  1051. package/static/chunk-Q5X5TPAG.js +0 -1
  1052. package/static/chunk-R4VMWCM5.js +0 -1
  1053. package/static/chunk-SNOOCDJD.js +0 -1
  1054. package/static/chunk-SPQH3ATC.js +0 -5
  1055. package/static/chunk-ZCSHU3D7.js +0 -1
  1056. package/static/chunk-ZU5MQTFN.js +0 -4
  1057. package/static/main-5O3KLGIR.js +0 -11
@@ -1,8 +1,4 @@
1
- /*
2
- * Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com>
3
- * This file is part of Sync-in | The open source file sync and share solution
4
- * See the LICENSE file for licensing details
5
- */ "use strict";
1
+ "use strict";
6
2
  Object.defineProperty(exports, "__esModule", {
7
3
  value: true
8
4
  });
@@ -15,6 +11,7 @@ Object.defineProperty(exports, "WebDAVMethods", {
15
11
  const _common = require("@nestjs/common");
16
12
  const _fastify = require("fastify");
17
13
  const _shared = require("../../../common/shared");
14
+ const _applicationsconstants = require("../../applications.constants");
18
15
  const _fileerror = require("../../files/models/file-error");
19
16
  const _filelockerror = require("../../files/models/file-lock-error");
20
17
  const _fileslockmanagerservice = require("../../files/services/files-lock-manager.service");
@@ -54,7 +51,10 @@ let WebDAVMethods = class WebDAVMethods {
54
51
  return this.handleError(req, res, e);
55
52
  }
56
53
  }
57
- this.logger.warn(`Not allowed on this resource : ${repository}`);
54
+ this.logger.warn({
55
+ tag: this.headOrGet.name,
56
+ msg: `Not allowed on this resource : ${repository}`
57
+ });
58
58
  return res.status(_common.HttpStatus.FORBIDDEN).send('Not allowed on this resource');
59
59
  }
60
60
  async lock(req, res) {
@@ -63,14 +63,20 @@ let WebDAVMethods = class WebDAVMethods {
63
63
  if (isLockRefresh) {
64
64
  // if the body has no content, the request must refresh the lock
65
65
  if (!rExists) {
66
- this.logger.warn('Lock refresh must specify an existing resource');
66
+ this.logger.warn({
67
+ tag: this.lock.name,
68
+ msg: 'Lock refresh must specify an existing resource'
69
+ });
67
70
  return res.status(_common.HttpStatus.BAD_REQUEST).send('Lock refresh must specify an existing resource');
68
71
  }
69
72
  return this.lockRefresh(req, res, req.space.dbFile.path);
70
73
  }
71
74
  if (!rExists) {
72
75
  if (!(0, _permissions.haveSpaceEnvPermissions)(req.space, _spaces.SPACE_OPERATION.ADD)) {
73
- this.logger.warn(`is not allowed to create on this space : *${req.space.alias}* (${req.space.id}) : ${req.space.url}`);
76
+ this.logger.warn({
77
+ tag: this.lock.name,
78
+ msg: `is not allowed to create on this space : *${req.space.alias}* (${req.space.id}) : ${req.space.url}`
79
+ });
74
80
  return res.status(_common.HttpStatus.FORBIDDEN).send('You are not allowed to do this action');
75
81
  }
76
82
  if (!await (0, _files.isPathExists)((0, _files.dirName)(req.space.realPath))) {
@@ -105,12 +111,18 @@ let WebDAVMethods = class WebDAVMethods {
105
111
  }
106
112
  async unlock(req, res) {
107
113
  if (!await (0, _files.isPathExists)(req.space.realPath)) {
108
- this.logger.warn(`Unable to unlock: ${req.dav.url} - resource does not exist`);
114
+ this.logger.warn({
115
+ tag: this.unlock.name,
116
+ msg: `Unable to unlock: ${req.dav.url} - resource does not exist`
117
+ });
109
118
  return res.status(_common.HttpStatus.NOT_FOUND).send(req.dav.url);
110
119
  }
111
120
  const lock = await this.filesLockManager.isLockedWithToken(req.dav.lock.token, req.space.dbFile.path);
112
121
  if (!lock) {
113
- this.logger.warn(`Lock token does not exist or not match URL : ${req.dav.lock.token}`);
122
+ this.logger.warn({
123
+ tag: this.unlock.name,
124
+ msg: `Lock token does not exist or not match URL : ${req.dav.lock.token}`
125
+ });
114
126
  return (0, _webdav1.DAV_ERROR_RES)(_common.HttpStatus.CONFLICT, _webdav.PRECONDITION.LOCK_TOKEN_MISMATCH, res);
115
127
  }
116
128
  if (req.user.id !== lock.owner.id) {
@@ -181,7 +193,7 @@ let WebDAVMethods = class WebDAVMethods {
181
193
  if (fP !== undefined) prop[`${_webdav.NS_PREFIX}:${p}`] = fP;
182
194
  }
183
195
  }
184
- responses.push((0, _webdav1.PROP_STAT)(f.href, (0, _webdav1.PROP)(prop, req.dav.httpVersion, _common.HttpStatus.OK)));
196
+ responses.push((0, _webdav1.PROP_STAT)(f.href, (0, _webdav1.PROP)(prop, _applicationsconstants.HTTP_VERSION, _common.HttpStatus.OK)));
185
197
  }
186
198
  const propfind = (0, _xml.xmlBuild)((0, _webdav1.MULTI_STATUS)(responses));
187
199
  return res.type(_webdav.XML_CONTENT_TYPE).status(_common.HttpStatus.MULTI_STATUS).send(propfind);
@@ -231,7 +243,10 @@ let WebDAVMethods = class WebDAVMethods {
231
243
  for (const action of Object.keys(req.dav.body[_webdav.PROPPATCH_PROP_UPDATE])){
232
244
  if (Object.values(_webdav.PROPPATCH_METHOD).indexOf(action) === -1) {
233
245
  const msg = `Unknown tag : expected ${_webdav.PROPPATCH_METHOD.SET} or ${_webdav.PROPPATCH_METHOD.REMOVE}`;
234
- this.logger.debug(msg);
246
+ this.logger.debug({
247
+ tag: this.proppatch.name,
248
+ msg: msg
249
+ });
235
250
  return res.status(_common.HttpStatus.BAD_REQUEST).send(msg);
236
251
  }
237
252
  if (Array.isArray(req.dav.body[_webdav.PROPPATCH_PROP_UPDATE][action])) {
@@ -243,7 +258,10 @@ let WebDAVMethods = class WebDAVMethods {
243
258
  }
244
259
  if (Object.keys(req.dav.body[_webdav.PROPPATCH_PROP_UPDATE][action])[0] !== _webdav.PROPSTAT.PROP) {
245
260
  const msg = `Unknown tag : expected ${_webdav.PROPSTAT.PROP}`;
246
- this.logger.debug(msg);
261
+ this.logger.debug({
262
+ tag: this.proppatch.name,
263
+ msg: msg
264
+ });
247
265
  return res.status(_common.HttpStatus.BAD_REQUEST).send(msg);
248
266
  }
249
267
  if (!Array.isArray(req.dav.body[_webdav.PROPPATCH_PROP_UPDATE][action][_webdav.PROPSTAT.PROP])) {
@@ -255,12 +273,15 @@ let WebDAVMethods = class WebDAVMethods {
255
273
  for (let [name, value] of Object.entries(prop)){
256
274
  if (action === _webdav.PROPPATCH_METHOD.REMOVE) {
257
275
  value = null;
258
- this.logger.debug(`Proppatch remove method not handled : ${name} -> ${value}`);
276
+ this.logger.debug({
277
+ tag: this.proppatch.name,
278
+ msg: `Proppatch remove method not handled : ${name} -> ${value}`
279
+ });
259
280
  }
260
281
  if (_webdav.PROPPATCH_SUPPORTED_PROPS.indexOf(name) === -1) {
261
282
  req.dav.proppatch.errors.push((0, _webdav1.PROP)({
262
283
  [`${_webdav.NS_PREFIX}:${name}`]: null
263
- }, req.dav.httpVersion, _common.HttpStatus.FORBIDDEN, _webdav.STANDARD_PROPS.indexOf(name) > -1 ? _webdav.PRECONDITION.PROTECTED_PROPERTY : undefined));
284
+ }, _applicationsconstants.HTTP_VERSION, _common.HttpStatus.FORBIDDEN, _webdav.STANDARD_PROPS.indexOf(name) > -1 ? _webdav.PRECONDITION.PROTECTED_PROPERTY : undefined));
264
285
  continue;
265
286
  }
266
287
  req.dav.proppatch.props[name] = value;
@@ -272,7 +293,7 @@ let WebDAVMethods = class WebDAVMethods {
272
293
  for (const name of Object.keys(req.dav.proppatch.props)){
273
294
  req.dav.proppatch.errors.push((0, _webdav1.PROP)({
274
295
  [`${_webdav.NS_PREFIX}:${name}`]: null
275
- }, req.dav.httpVersion, _common.HttpStatus.FAILED_DEPENDENCY));
296
+ }, _applicationsconstants.HTTP_VERSION, _common.HttpStatus.FAILED_DEPENDENCY));
276
297
  }
277
298
  const proppatch = (0, _xml.xmlBuild)((0, _webdav1.MULTI_STATUS)((0, _webdav1.PROP_STAT)((0, _shared.encodeUrl)(req.dav.url), req.dav.proppatch.errors)));
278
299
  return res.status(_common.HttpStatus.MULTI_STATUS).type(_webdav.XML_CONTENT_TYPE).send(proppatch);
@@ -285,7 +306,10 @@ let WebDAVMethods = class WebDAVMethods {
285
306
  try {
286
307
  await this.filesManager.touch(req.user, req.space, (0, _shared.currentTimeStamp)(new Date(value)), false);
287
308
  } catch (e) {
288
- this.logger.error(`${this.proppatch.name} - unable to modify mtime on ${req.dav.url} : ${e}`);
309
+ this.logger.error({
310
+ tag: this.proppatch.name,
311
+ msg: `unable to modify mtime on ${req.dav.url} : ${e}`
312
+ });
289
313
  states[name] = false;
290
314
  atLeastOneError = true;
291
315
  }
@@ -297,7 +321,7 @@ let WebDAVMethods = class WebDAVMethods {
297
321
  for (const [name, state] of Object.entries(states)){
298
322
  props.push((0, _webdav1.PROP)({
299
323
  [`${_webdav.NS_PREFIX}:${name}`]: null
300
- }, req.dav.httpVersion, state ? atLeastOneError ? _common.HttpStatus.FAILED_DEPENDENCY : _common.HttpStatus.OK : _common.HttpStatus.BAD_REQUEST));
324
+ }, _applicationsconstants.HTTP_VERSION, state ? atLeastOneError ? _common.HttpStatus.FAILED_DEPENDENCY : _common.HttpStatus.OK : _common.HttpStatus.BAD_REQUEST));
301
325
  }
302
326
  const proppatch = (0, _xml.xmlBuild)((0, _webdav1.MULTI_STATUS)((0, _webdav1.PROP_STAT)((0, _shared.encodeUrl)(req.dav.url), props)));
303
327
  return res.type(_webdav.XML_CONTENT_TYPE).status(_common.HttpStatus.MULTI_STATUS).send(proppatch);
@@ -316,7 +340,10 @@ let WebDAVMethods = class WebDAVMethods {
316
340
  async copyMove(req, res) {
317
341
  const dstSpace = await this.webDAVHandler.spaceEnv(req.user, req.dav.copyMove.destination);
318
342
  if (!dstSpace) {
319
- this.logger.warn(`Space not found for destination : ${req.dav.copyMove.destination}`);
343
+ this.logger.warn({
344
+ tag: this.copyMove.name,
345
+ msg: `Space not found for destination : ${req.dav.copyMove.destination}`
346
+ });
320
347
  return res.status(_common.HttpStatus.NOT_FOUND).send(req.dav.copyMove.destination);
321
348
  }
322
349
  const dstExisted = await (0, _files.isPathExists)(dstSpace.realPath);
@@ -360,7 +387,10 @@ let WebDAVMethods = class WebDAVMethods {
360
387
  }
361
388
  // the path will be the same across conditions
362
389
  if (!lastSpaceEnv) {
363
- this.logger.warn(`If Header : path mismatch (${condition.path})`);
390
+ this.logger.warn({
391
+ tag: this.evaluateIfHeaders.name,
392
+ msg: `If Header : path mismatch (${condition.path})`
393
+ });
364
394
  return false;
365
395
  }
366
396
  } else {
@@ -409,30 +439,45 @@ let WebDAVMethods = class WebDAVMethods {
409
439
  break;
410
440
  }
411
441
  if (!atLeastOneOk) {
412
- this.logger.warn(`If header condition failed : ${errors.join(', ')}`);
442
+ this.logger.warn({
443
+ tag: this.evaluateIfHeaders.name,
444
+ msg: `If header condition failed : ${errors.join(', ')}`
445
+ });
413
446
  res.status(_common.HttpStatus.PRECONDITION_FAILED).send('If header condition failed');
414
447
  }
415
448
  return atLeastOneOk;
416
449
  }
417
450
  async lockRefresh(req, res, dbFilePath) {
418
451
  if (req.dav?.ifHeaders?.length !== 1) {
419
- this.logger.warn('Expected a lock token (only one lock may be refreshed at a time)');
452
+ this.logger.warn({
453
+ tag: this.lockRefresh.name,
454
+ msg: 'Expected a lock token (only one lock may be refreshed at a time)'
455
+ });
420
456
  return res.status(_common.HttpStatus.BAD_REQUEST).send('Expected a lock token (only one lock may be refreshed at a time)');
421
457
  }
422
458
  let token;
423
459
  try {
424
460
  token = (0, _ifheader.extractOneToken)(req.dav.ifHeaders);
425
461
  } catch (e) {
426
- this.logger.warn(`${this.lockRefresh.name} - unable to extract token : ${JSON.stringify(req.dav.ifHeaders)} (${e})`);
462
+ this.logger.warn({
463
+ tag: this.lockRefresh.name,
464
+ msg: `unable to extract token : ${JSON.stringify(req.dav.ifHeaders)} (${e})`
465
+ });
427
466
  return res.status(_common.HttpStatus.BAD_REQUEST).send('Unable to extract token');
428
467
  }
429
468
  const lock = await this.filesLockManager.isLockedWithToken(token, dbFilePath);
430
469
  if (!lock) {
431
- this.logger.warn(`Lock token does not exist or not match URL : ${token}`);
470
+ this.logger.warn({
471
+ tag: this.lockRefresh.name,
472
+ msg: `Lock token does not exist or not match URL : ${token}`
473
+ });
432
474
  return (0, _webdav1.DAV_ERROR_RES)(_common.HttpStatus.PRECONDITION_FAILED, _webdav.PRECONDITION.LOCK_TOKEN_MISMATCH, res);
433
475
  }
434
476
  if (lock.owner.id !== req.user.id) {
435
- this.logger.warn(`Lock token does not match owner : ${lock.owner.login} != ${req.user.login}`);
477
+ this.logger.warn({
478
+ tag: this.lockRefresh.name,
479
+ msg: `Lock token does not match owner : ${lock.owner.login} != ${req.user.login}`
480
+ });
436
481
  return res.status(_common.HttpStatus.FORBIDDEN).send('Lock token does not match owner');
437
482
  }
438
483
  await this.filesLockManager.refreshLockTimeout(lock, req.dav.lock.timeout);
@@ -442,7 +487,10 @@ let WebDAVMethods = class WebDAVMethods {
442
487
  return res.type(_webdav.XML_CONTENT_TYPE).status(_common.HttpStatus.OK).send((0, _xml.xmlBuild)(lockProp));
443
488
  }
444
489
  handleError(req, res, e, toUrl) {
445
- this.logger.error(`Unable to ${req.method} ${req.dav.url}${toUrl ? ` -> ${toUrl}` : ''} : ${e.message}`);
490
+ this.logger.error({
491
+ tag: this.handleError.name,
492
+ msg: `Unable to ${req.method} ${req.dav.url}${toUrl ? ` -> ${toUrl}` : ''} : ${e.message}`
493
+ });
446
494
  // Remove the last part to avoid exposing the path
447
495
  const errorMsg = e.message.split(',')[0];
448
496
  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, FileLockOptions } 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, fileName, genEtag, isPathExists, isPathIsDir } 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 HEADER,\n LOCK_DISCOVERY_PROP,\n NS_PREFIX,\n OPTIONS_HEADERS,\n PRECONDITION,\n PROPPATCH_METHOD,\n PROPPATCH_MODIFIED_PROPS,\n PROPPATCH_PROP_UPDATE,\n PROPPATCH_SUPPORTED_PROPS,\n PROPSTAT,\n STANDARD_PROPS,\n WEBDAV_APP_LOCK,\n XML_CONTENT_TYPE\n} from '../constants/webdav'\nimport { IfHeaderDecorator } from '../decorators/if-header.decorator'\nimport { FastifyDAVRequest } 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 if ((await isPathExists(req.space.realPath)) && (await isPathIsDir(req.space.realPath))) {\n // Directory case\n return res\n .header('DAV', OPTIONS_HEADERS.DAV)\n .header('Content-Type', 'httpd/unix-directory')\n .header('Content-Length', '0')\n .status(HttpStatus.OK)\n .send()\n }\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 lockOptions: FileLockOptions = {\n lockRoot: req.dav.url,\n lockToken: this.filesLockManager.genDAVToken(),\n lockScope: req.dav.lock.lockscope,\n lockInfo: req.dav.lock?.owner\n }\n\n const [ok, fileLock] = await this.filesLockManager.create(\n req.user,\n req.space.dbFile,\n WEBDAV_APP_LOCK,\n req.dav.depth,\n lockOptions,\n req.dav.lock.timeout\n )\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 the `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(HEADER.LOCK_TOKEN, `<${lockOptions.lockToken}>`)\n .type(XML_CONTENT_TYPE)\n .status(rExists ? HttpStatus.OK : HttpStatus.CREATED)\n .send(xmlBuild(lockProp))\n }\n if (fileLock) {\n const lockProp = LOCK_PROP([fileLock])\n return res.type(XML_CONTENT_TYPE).status(HttpStatus.LOCKED).send(xmlBuild(lockProp))\n }\n return DAV_ERROR_RES(HttpStatus.LOCKED, PRECONDITION.LOCK_CONFLICT, res, fileLock.options?.lockRoot || fileLock.dbFilePath)\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 let lockDiscovery: any[] = null\n if (repository === SPACE_REPOSITORY.FILES) {\n if (f.name in locks) {\n lockDiscovery = LOCK_DISCOVERY([locks[f.name]])\n } else {\n // The lock name may correspond to the original file at the space root.\n const fName = fileName(req.space.dbFile.path)\n if (fName in locks) {\n lockDiscovery = LOCK_DISCOVERY([locks[fName]])\n }\n }\n }\n fP = lockDiscovery\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.options?.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.options?.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 // Remove the last part to avoid exposing the path\n const errorMsg = e.message.split(',')[0]\n if (e instanceof LockConflict) {\n return DAV_ERROR_RES(HttpStatus.LOCKED, PRECONDITION.LOCK_CONFLICT, res, e.lock.options?.lockRoot || e.lock.dbFilePath)\n } else if (e instanceof FileError) {\n return res.status(e.httpCode).send(errorMsg)\n }\n throw new HttpException(errorMsg, HttpStatus.INTERNAL_SERVER_ERROR)\n }\n}\n"],"names":["WebDAVMethods","headOrGet","req","res","repository","SPACE_REPOSITORY","FILES","space","inSharesList","isPathExists","realPath","isPathIsDir","header","OPTIONS_HEADERS","DAV","status","HttpStatus","OK","send","sendFile","filesManager","sendFileFromSpace","checks","stream","e","handleError","logger","warn","FORBIDDEN","lock","isLockRefresh","dav","body","rExists","BAD_REQUEST","lockRefresh","dbFile","path","haveSpaceEnvPermissions","SPACE_OPERATION","ADD","alias","id","url","dirName","CONFLICT","lockOptions","lockRoot","lockToken","filesLockManager","genDAVToken","lockScope","lockscope","lockInfo","owner","ok","fileLock","create","user","WEBDAV_APP_LOCK","depth","timeout","mkFile","lockProp","LOCK_PROP","HEADER","LOCK_TOKEN","type","XML_CONTENT_TYPE","CREATED","xmlBuild","LOCKED","DAV_ERROR_RES","PRECONDITION","LOCK_CONFLICT","options","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","lockDiscovery","name","LOCK_DISCOVERY","fName","fileName","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","errorMsg","split","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":["import { HttpException, HttpStatus, Injectable, Logger, StreamableFile } from '@nestjs/common'\nimport { FastifyReply } from 'fastify'\nimport { currentTimeStamp, encodeUrl } from '../../../common/shared'\nimport { HTTP_VERSION } from '../../applications.constants'\nimport { FileLock, FileLockOptions } 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, fileName, genEtag, isPathExists, isPathIsDir } 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 HEADER,\n LOCK_DISCOVERY_PROP,\n NS_PREFIX,\n OPTIONS_HEADERS,\n PRECONDITION,\n PROPPATCH_METHOD,\n PROPPATCH_MODIFIED_PROPS,\n PROPPATCH_PROP_UPDATE,\n PROPPATCH_SUPPORTED_PROPS,\n PROPSTAT,\n STANDARD_PROPS,\n WEBDAV_APP_LOCK,\n XML_CONTENT_TYPE\n} from '../constants/webdav'\nimport { IfHeaderDecorator } from '../decorators/if-header.decorator'\nimport { FastifyDAVRequest } 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 if ((await isPathExists(req.space.realPath)) && (await isPathIsDir(req.space.realPath))) {\n // Directory case\n return res\n .header('DAV', OPTIONS_HEADERS.DAV)\n .header('Content-Type', 'httpd/unix-directory')\n .header('Content-Length', '0')\n .status(HttpStatus.OK)\n .send()\n }\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({ tag: this.headOrGet.name, msg: `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({ tag: this.lock.name, msg: '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({\n tag: this.lock.name,\n msg: `is not allowed to create on this space : *${req.space.alias}* (${req.space.id}) : ${req.space.url}`\n })\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 lockOptions: FileLockOptions = {\n lockRoot: req.dav.url,\n lockToken: this.filesLockManager.genDAVToken(),\n lockScope: req.dav.lock.lockscope,\n lockInfo: req.dav.lock?.owner\n }\n\n const [ok, fileLock] = await this.filesLockManager.create(\n req.user,\n req.space.dbFile,\n WEBDAV_APP_LOCK,\n req.dav.depth,\n lockOptions,\n req.dav.lock.timeout\n )\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 the `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(HEADER.LOCK_TOKEN, `<${lockOptions.lockToken}>`)\n .type(XML_CONTENT_TYPE)\n .status(rExists ? HttpStatus.OK : HttpStatus.CREATED)\n .send(xmlBuild(lockProp))\n }\n if (fileLock) {\n const lockProp = LOCK_PROP([fileLock])\n return res.type(XML_CONTENT_TYPE).status(HttpStatus.LOCKED).send(xmlBuild(lockProp))\n }\n return DAV_ERROR_RES(HttpStatus.LOCKED, PRECONDITION.LOCK_CONFLICT, res, fileLock.options?.lockRoot || fileLock.dbFilePath)\n }\n\n @IfHeaderDecorator()\n async unlock(req: FastifyDAVRequest, res: FastifyReply) {\n if (!(await isPathExists(req.space.realPath))) {\n this.logger.warn({ tag: this.unlock.name, msg: `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({ tag: this.unlock.name, msg: `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 let lockDiscovery: any[] = null\n if (repository === SPACE_REPOSITORY.FILES) {\n if (f.name in locks) {\n lockDiscovery = LOCK_DISCOVERY([locks[f.name]])\n } else {\n // The lock name may correspond to the original file at the space root.\n const fName = fileName(req.space.dbFile.path)\n if (fName in locks) {\n lockDiscovery = LOCK_DISCOVERY([locks[fName]])\n }\n }\n }\n fP = lockDiscovery\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, HTTP_VERSION, 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({ tag: this.proppatch.name, msg: 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({ tag: this.proppatch.name, msg: 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({ tag: this.proppatch.name, msg: `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 HTTP_VERSION,\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 }, HTTP_VERSION, 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({ tag: this.proppatch.name, msg: `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 HTTP_VERSION,\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({ tag: this.copyMove.name, msg: `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({ tag: this.evaluateIfHeaders.name, msg: `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.options?.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.options?.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({ tag: this.evaluateIfHeaders.name, msg: `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({ tag: this.lockRefresh.name, msg: '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({ tag: this.lockRefresh.name, msg: `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({ tag: this.lockRefresh.name, msg: `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({ tag: this.lockRefresh.name, msg: `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({ tag: this.handleError.name, msg: `Unable to ${req.method} ${req.dav.url}${toUrl ? ` -> ${toUrl}` : ''} : ${e.message}` })\n // Remove the last part to avoid exposing the path\n const errorMsg = e.message.split(',')[0]\n if (e instanceof LockConflict) {\n return DAV_ERROR_RES(HttpStatus.LOCKED, PRECONDITION.LOCK_CONFLICT, res, e.lock.options?.lockRoot || e.lock.dbFilePath)\n } else if (e instanceof FileError) {\n return res.status(e.httpCode).send(errorMsg)\n }\n throw new HttpException(errorMsg, HttpStatus.INTERNAL_SERVER_ERROR)\n }\n}\n"],"names":["WebDAVMethods","headOrGet","req","res","repository","SPACE_REPOSITORY","FILES","space","inSharesList","isPathExists","realPath","isPathIsDir","header","OPTIONS_HEADERS","DAV","status","HttpStatus","OK","send","sendFile","filesManager","sendFileFromSpace","checks","stream","e","handleError","logger","warn","tag","name","msg","FORBIDDEN","lock","isLockRefresh","dav","body","rExists","BAD_REQUEST","lockRefresh","dbFile","path","haveSpaceEnvPermissions","SPACE_OPERATION","ADD","alias","id","url","dirName","CONFLICT","lockOptions","lockRoot","lockToken","filesLockManager","genDAVToken","lockScope","lockscope","lockInfo","owner","ok","fileLock","create","user","WEBDAV_APP_LOCK","depth","timeout","mkFile","lockProp","LOCK_PROP","HEADER","LOCK_TOKEN","type","XML_CONTENT_TYPE","CREATED","xmlBuild","LOCKED","DAV_ERROR_RES","PRECONDITION","LOCK_CONFLICT","options","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","lockDiscovery","LOCK_DISCOVERY","fName","fileName","undefined","push","PROP_STAT","href","HTTP_VERSION","MULTI_STATUS","put","saveStream","lockTokens","extractAllTokens","ifHeaders","genEtag","delete","proppatch","checkConflicts","userId","props","errors","action","PROPPATCH_PROP_UPDATE","values","PROPPATCH_METHOD","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","errorMsg","split","LockConflict","FileError","httpCode","HttpException","INTERNAL_SERVER_ERROR","Logger"],"mappings":"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"}
@@ -1,13 +1,10 @@
1
- /*
2
- * Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com>
3
- * This file is part of Sync-in | The open source file sync and share solution
4
- * See the LICENSE file for licensing details
5
- */ "use strict";
1
+ "use strict";
6
2
  Object.defineProperty(exports, "__esModule", {
7
3
  value: true
8
4
  });
9
5
  const _common = require("@nestjs/common");
10
6
  const _testing = require("@nestjs/testing");
7
+ const _applicationsconstants = require("../../applications.constants");
11
8
  const _fileerror = require("../../files/models/file-error");
12
9
  const _filelockerror = require("../../files/models/file-lock-error");
13
10
  const _fileslockmanagerservice = require("../../files/services/files-lock-manager.service");
@@ -125,7 +122,7 @@ describe('WebDAVMethods', ()=>{
125
122
  dav: {
126
123
  url: '/webdav/test/file.txt',
127
124
  depth: '0',
128
- httpVersion: 'HTTP/1.1',
125
+ httpVersion: _applicationsconstants.HTTP_VERSION,
129
126
  body: '<lockinfo/>',
130
127
  lock: {
131
128
  timeout: 60,
@@ -938,7 +935,7 @@ describe('WebDAVMethods', ()=>{
938
935
  method: 'PROPPATCH',
939
936
  dav: {
940
937
  ...createBaseRequest().dav,
941
- httpVersion: 'HTTP/1.1',
938
+ httpVersion: _applicationsconstants.HTTP_VERSION,
942
939
  body: {
943
940
  propertyupdate: {
944
941
  set: {
@@ -969,7 +966,7 @@ describe('WebDAVMethods', ()=>{
969
966
  method: 'PROPPATCH',
970
967
  dav: {
971
968
  ...createBaseRequest().dav,
972
- httpVersion: 'HTTP/1.1',
969
+ httpVersion: _applicationsconstants.HTTP_VERSION,
973
970
  body: {
974
971
  propertyupdate: {
975
972
  set: {
@@ -997,7 +994,7 @@ describe('WebDAVMethods', ()=>{
997
994
  method: 'PROPPATCH',
998
995
  dav: {
999
996
  ...createBaseRequest().dav,
1000
- httpVersion: 'HTTP/1.1',
997
+ httpVersion: _applicationsconstants.HTTP_VERSION,
1001
998
  body: {
1002
999
  propertyupdate: {
1003
1000
  set: {
@@ -1027,7 +1024,7 @@ describe('WebDAVMethods', ()=>{
1027
1024
  method: 'PROPPATCH',
1028
1025
  dav: {
1029
1026
  ...createBaseRequest().dav,
1030
- httpVersion: 'HTTP/1.1',
1027
+ httpVersion: _applicationsconstants.HTTP_VERSION,
1031
1028
  body: {
1032
1029
  propertyupdate: {
1033
1030
  set: {
@@ -1054,7 +1051,7 @@ describe('WebDAVMethods', ()=>{
1054
1051
  method: 'PROPPATCH',
1055
1052
  dav: {
1056
1053
  ...createBaseRequest().dav,
1057
- httpVersion: 'HTTP/1.1',
1054
+ httpVersion: _applicationsconstants.HTTP_VERSION,
1058
1055
  body: {
1059
1056
  propertyupdate: {
1060
1057
  set: {
@@ -1089,7 +1086,7 @@ describe('WebDAVMethods', ()=>{
1089
1086
  method: 'PROPPATCH',
1090
1087
  dav: {
1091
1088
  ...createBaseRequest().dav,
1092
- httpVersion: 'HTTP/1.1',
1089
+ httpVersion: _applicationsconstants.HTTP_VERSION,
1093
1090
  body: {
1094
1091
  propertyupdate: {
1095
1092
  remove: {
@@ -1121,7 +1118,7 @@ describe('WebDAVMethods', ()=>{
1121
1118
  method: 'PROPPATCH',
1122
1119
  dav: {
1123
1120
  ...createBaseRequest().dav,
1124
- httpVersion: 'HTTP/1.1',
1121
+ httpVersion: _applicationsconstants.HTTP_VERSION,
1125
1122
  body: {
1126
1123
  propertyupdate: {
1127
1124
  set: [
@@ -1155,7 +1152,7 @@ describe('WebDAVMethods', ()=>{
1155
1152
  method: 'PROPPATCH',
1156
1153
  dav: {
1157
1154
  ...createBaseRequest().dav,
1158
- httpVersion: 'HTTP/1.1',
1155
+ httpVersion: _applicationsconstants.HTTP_VERSION,
1159
1156
  body: {
1160
1157
  propertyupdate: {
1161
1158
  set: {
@@ -1682,7 +1679,7 @@ describe('WebDAVMethods', ()=>{
1682
1679
  } catch {
1683
1680
  // Expected to throw
1684
1681
  }
1685
- expect(logSpy).toHaveBeenCalledWith(expect.stringContaining(' -> /webdav/test/dest.txt'));
1682
+ expect(logSpy.mock.calls.some(([payload])=>payload?.msg?.includes(' -> /webdav/test/dest.txt'))).toBe(true);
1686
1683
  });
1687
1684
  });
1688
1685
  });
@@ -2463,8 +2460,8 @@ describe('WebDAVMethods', ()=>{
2463
2460
  } catch {
2464
2461
  // Expected to throw
2465
2462
  }
2466
- expect(logSpy).toHaveBeenCalledWith(expect.stringContaining('PUT'));
2467
- expect(logSpy).toHaveBeenCalledWith(expect.stringContaining('/webdav/test.txt'));
2463
+ expect(logSpy.mock.calls.some(([payload])=>payload?.msg?.includes('PUT'))).toBe(true);
2464
+ expect(logSpy.mock.calls.some(([payload])=>payload?.msg?.includes('/webdav/test.txt'))).toBe(true);
2468
2465
  });
2469
2466
  it('should include destination URL in log when provided', ()=>{
2470
2467
  const logSpy = jest.spyOn(service['logger'], 'error').mockImplementation(()=>undefined);
@@ -2479,7 +2476,7 @@ describe('WebDAVMethods', ()=>{
2479
2476
  } catch {
2480
2477
  // Expected to throw
2481
2478
  }
2482
- expect(logSpy).toHaveBeenCalledWith(expect.stringContaining(' -> /webdav/destination.txt'));
2479
+ expect(logSpy.mock.calls.some(([payload])=>payload?.msg?.includes(' -> /webdav/destination.txt'))).toBe(true);
2483
2480
  });
2484
2481
  });
2485
2482
  });