@sync-in/server 1.11.0 → 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 (1040) hide show
  1. package/CHANGELOG.md +37 -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 +17 -16
  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-G7TLKY5X.js → chunk-27ATUHBH.js} +1 -1
  940. package/static/{chunk-CQOQXVYG.js → chunk-2CKLZ3FM.js} +1 -1
  941. package/static/{chunk-FVFOX6OP.js → chunk-2QZPX7LO.js} +1 -1
  942. package/static/{chunk-32AVRWC3.js → chunk-2R6IBBPZ.js} +1 -1
  943. package/static/{chunk-76JDXKD7.js → chunk-4FIGEBNL.js} +1 -1
  944. package/static/{chunk-ACCGBDUZ.js → chunk-4P3JABAP.js} +4 -4
  945. package/static/chunk-5CZOSAMZ.js +1 -0
  946. package/static/{chunk-2PDTP6N4.js → chunk-677WUBCT.js} +1 -1
  947. package/static/{chunk-K5VO5XTG.js → chunk-74CAHBFM.js} +1 -1
  948. package/static/{chunk-WTWGBCFO.js → chunk-7GWW6MJO.js} +1 -1
  949. package/static/{chunk-JXZOYX4N.js → chunk-A4UGPSWX.js} +1 -1
  950. package/static/{chunk-44D7RWET.js → chunk-AHO37FKW.js} +1 -1
  951. package/static/{chunk-WB2DECOA.js → chunk-AQCXMKP3.js} +1 -1
  952. package/static/chunk-B6PDYCRO.js +3 -0
  953. package/static/{chunk-JVGN5V5E.js → chunk-CU76ATCF.js} +1 -1
  954. package/static/{chunk-Q5K4ZUHK.js → chunk-CWYHOPOP.js} +1 -1
  955. package/static/{chunk-IOX3ANJR.js → chunk-E5WI5725.js} +1 -1
  956. package/static/{chunk-NUG54Y65.js → chunk-FC5HTKVM.js} +1 -1
  957. package/static/{chunk-LRK6RNPR.js → chunk-FOSM7EYI.js} +1 -1
  958. package/static/{chunk-B4UP2EQM.js → chunk-GAZO25PI.js} +1 -1
  959. package/static/{chunk-3WBCGTYW.js → chunk-GB7ABR5N.js} +1 -1
  960. package/static/{chunk-XFZ37WVK.js → chunk-GEHFKZQ5.js} +1 -1
  961. package/static/{chunk-4CQLN5HL.js → chunk-GQFMWVFD.js} +1 -1
  962. package/static/{chunk-YBEH442D.js → chunk-GVNTC564.js} +1 -1
  963. package/static/{chunk-WO6GBHBZ.js → chunk-HGL3NYP2.js} +2 -2
  964. package/static/{chunk-IAWRRL6J.js → chunk-HLIWPWRA.js} +1 -1
  965. package/static/{chunk-6LHJBXUE.js → chunk-HNYB3M4S.js} +1 -1
  966. package/static/{chunk-5WTIUYFF.js → chunk-HUXAUQMN.js} +1 -1
  967. package/static/{chunk-VBH3Y2M5.js → chunk-I2XA6PPK.js} +1 -1
  968. package/static/{chunk-I3XI72AV.js → chunk-ISV3BO6R.js} +1 -1
  969. package/static/{chunk-P7X53PEP.js → chunk-JV3AGU5B.js} +1 -1
  970. package/static/{chunk-ZFAXICUH.js → chunk-K25E7YGG.js} +1 -1
  971. package/static/{chunk-CAD3RHAY.js → chunk-K46PUTZB.js} +1 -1
  972. package/static/{chunk-GYFLVCFN.js → chunk-KERFLJ56.js} +1 -7
  973. package/static/{chunk-WSTGWBVW.js → chunk-KJD3KFF3.js} +1 -1
  974. package/static/{chunk-R4P4NBUL.js → chunk-KPKSI23S.js} +1 -1
  975. package/static/{chunk-M7IFVC5D.js → chunk-KZS7CTNR.js} +1 -1
  976. package/static/{chunk-P2IJCGWD.js → chunk-L5IHUVXL.js} +1 -1
  977. package/static/{chunk-DXESTGOH.js → chunk-L7RRX2M3.js} +1 -1
  978. package/static/{chunk-WE3ISL7O.js → chunk-LGWJ2WKU.js} +1 -1
  979. package/static/{chunk-OKI3N5AI.js → chunk-MLC7JK2H.js} +2 -2
  980. package/static/{chunk-NG7QWUFM.js → chunk-MOHNYW2A.js} +1 -1
  981. package/static/{chunk-SQYWQUL4.js → chunk-NCDUOVMW.js} +1 -1
  982. package/static/chunk-NGUAJIGI.js +1 -0
  983. package/static/{chunk-OYPJUVD6.js → chunk-NIPP6JDI.js} +1 -1
  984. package/static/{chunk-Y433XOAJ.js → chunk-NMTBMHUL.js} +1 -1
  985. package/static/chunk-O4XXMZFX.js +4 -0
  986. package/static/{chunk-IOP3ON2H.js → chunk-OANZITPM.js} +1 -1
  987. package/static/{chunk-WJFKUJJX.js → chunk-OGE4SAHU.js} +1 -1
  988. package/static/{chunk-7EHP6HO3.js → chunk-OI3ME22C.js} +1 -1
  989. package/static/{chunk-D4XDSS6P.js → chunk-Q3EGCMF5.js} +1 -1
  990. package/static/{chunk-TQBCGNFG.js → chunk-QF2NSHZA.js} +1 -1
  991. package/static/{chunk-RBBMH2FM.js → chunk-QKN6LAAA.js} +1 -1
  992. package/static/{chunk-J45SD6RC.js → chunk-QRFESU5O.js} +2 -2
  993. package/static/chunk-QVRVFYJH.js +1 -0
  994. package/static/{chunk-BAHNSFET.js → chunk-RFJIPIOK.js} +1 -1
  995. package/static/{chunk-IZ7TCHUW.js → chunk-RLL634K4.js} +1 -1
  996. package/static/{chunk-MOWL3ILT.js → chunk-RS2OFKWP.js} +1 -1
  997. package/static/{chunk-WM56LPJ3.js → chunk-RWAAC3A4.js} +1 -1
  998. package/static/{chunk-F3GMI6OL.js → chunk-S5Y64DDS.js} +1 -1
  999. package/static/{chunk-VNNLMUK7.js → chunk-SLG5KDU6.js} +1 -1
  1000. package/static/chunk-TJ4CVFEL.js +1 -0
  1001. package/static/{chunk-SAN35XTD.js → chunk-TWCGKSYE.js} +1 -1
  1002. package/static/{chunk-EUKVDBBK.js → chunk-UMDRE4S7.js} +1 -1
  1003. package/static/{chunk-YKCUUBZP.js → chunk-VRIOLRYR.js} +4 -4
  1004. package/static/chunk-VS4O2XDP.js +1 -0
  1005. package/static/{chunk-2MRTBCSV.js → chunk-VSBFNFOM.js} +1 -1
  1006. package/static/{chunk-CTPKDDVI.js → chunk-WN4WXCVK.js} +1 -1
  1007. package/static/{chunk-2AA3WMW5.js → chunk-WX7RXW7K.js} +1 -1
  1008. package/static/{chunk-J2BUPRCZ.js → chunk-XC4POKR3.js} +2 -2
  1009. package/static/{chunk-AXLDYLIO.js → chunk-Y4AUYQTG.js} +1 -1
  1010. package/static/{chunk-RPHWIW7S.js → chunk-YMIXHRJQ.js} +1 -7
  1011. package/static/{chunk-AFNUBQMD.js → chunk-ZUNKFAKP.js} +1 -1
  1012. package/static/index.html +3 -3
  1013. package/static/main-QN4UCOC5.js +5 -0
  1014. package/static/{styles-PD6764CP.css → styles-46GLIE7Y.css} +1 -1
  1015. package/server/authentication/constants/auth-ldap.js.map +0 -1
  1016. package/server/authentication/dto/two-fa-verify.dto.js.map +0 -1
  1017. package/server/authentication/guards/auth-two-fa-guard.js.map +0 -1
  1018. package/server/authentication/interfaces/two-fa-setup.interface.js +0 -10
  1019. package/server/authentication/interfaces/two-fa-setup.interface.js.map +0 -1
  1020. package/server/authentication/models/auth-method.js +0 -18
  1021. package/server/authentication/models/auth-method.js.map +0 -1
  1022. package/server/authentication/services/auth-manager.service.js.map +0 -1
  1023. package/server/authentication/services/auth-manager.service.spec.js.map +0 -1
  1024. package/server/authentication/services/auth-methods/auth-method-database.service.js.map +0 -1
  1025. package/server/authentication/services/auth-methods/auth-method-database.service.spec.js.map +0 -1
  1026. package/server/authentication/services/auth-methods/auth-method-ldap.service.js +0 -326
  1027. package/server/authentication/services/auth-methods/auth-method-ldap.service.js.map +0 -1
  1028. package/server/authentication/services/auth-methods/auth-method-ldap.service.spec.js +0 -534
  1029. package/server/authentication/services/auth-methods/auth-method-ldap.service.spec.js.map +0 -1
  1030. package/server/authentication/services/auth-methods/auth-method-two-fa.service.js.map +0 -1
  1031. package/server/authentication/services/auth-methods/auth-method-two-fa.service.spec.js.map +0 -1
  1032. package/static/chunk-3I6NPM62.js +0 -1
  1033. package/static/chunk-GCPX3EFC.js +0 -1
  1034. package/static/chunk-KBUIDMCK.js +0 -1
  1035. package/static/chunk-KY6MNZLC.js +0 -1
  1036. package/static/chunk-MPWD4VMY.js +0 -1
  1037. package/static/chunk-QQAF3MLL.js +0 -1
  1038. package/static/chunk-VHZKPUWE.js +0 -4
  1039. package/static/chunk-YWLMFOB4.js +0 -3
  1040. package/static/main-ZXEMCBMI.js +0 -11
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../backend/src/applications/files/adapters/files-indexer-mysql.service.spec.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 { Test, TestingModule } from '@nestjs/testing'\nimport { Cache } from '../../../infrastructure/cache/services/cache.service'\nimport { DB_TOKEN_PROVIDER } from '../../../infrastructure/database/constants'\nimport { FilesIndexerMySQL } from './files-indexer-mysql.service'\n\ndescribe(FilesIndexerMySQL.name, () => {\n let module: TestingModule\n let filesIndexerMySQL: FilesIndexerMySQL\n let db: { execute: jest.Mock }\n let cache: { genSlugKey: jest.Mock; get: jest.Mock; set: jest.Mock }\n\n beforeAll(async () => {\n db = { execute: jest.fn() }\n cache = {\n genSlugKey: jest.fn(() => 'cache:indexesList:key'),\n get: jest.fn(),\n set: jest.fn().mockResolvedValue(undefined)\n }\n\n module = await Test.createTestingModule({\n providers: [FilesIndexerMySQL, { provide: DB_TOKEN_PROVIDER, useValue: db }, { provide: Cache, useValue: cache }]\n }).compile()\n\n module.useLogger(['fatal'])\n filesIndexerMySQL = module.get<FilesIndexerMySQL>(FilesIndexerMySQL)\n })\n\n afterAll(async () => {\n await module.close()\n })\n\n beforeEach(() => {\n jest.clearAllMocks()\n })\n\n it('should be defined', () => {\n expect(filesIndexerMySQL).toBeDefined()\n })\n\n describe('indexesList', () => {\n it('should list tables starting with prefix', async () => {\n // Force a cache hit to avoid decorator calling the original method with a bad `this`\n cache.get.mockResolvedValueOnce(['files_content_u_1', 'files_content_s_2'])\n\n const res = await filesIndexerMySQL.indexesList()\n expect(res).toEqual(['files_content_u_1', 'files_content_s_2'])\n expect(cache.genSlugKey).toHaveBeenCalled()\n expect(cache.get).toHaveBeenCalled()\n // DB should not be called on cache hit\n expect(db.execute).not.toHaveBeenCalled()\n })\n })\n\n describe('getIndexName', () => {\n it('should build table name with prefix', () => {\n expect(filesIndexerMySQL.getIndexName('u_123')).toBe('files_content_u_123')\n })\n })\n\n describe('existingIndexes', () => {\n it('should filter suffixes to existing tables', async () => {\n db.execute.mockResolvedValueOnce([[{ t: 'files_content_u_1' }, { t: 'files_content_s_2' }]])\n const res = await filesIndexerMySQL.existingIndexes(['u_1', 's_3', 's_2'])\n expect(res.sort()).toEqual(['files_content_s_2', 'files_content_u_1'].sort())\n })\n })\n\n describe('createIndex', () => {\n it('should return true when creation succeeds', async () => {\n db.execute.mockResolvedValueOnce([{}])\n await expect(filesIndexerMySQL.createIndex('files_content_u_1')).resolves.toBe(true)\n expect(db.execute).toHaveBeenCalledTimes(1)\n })\n\n it('should return false when creation fails', async () => {\n db.execute.mockRejectedValueOnce(new Error('boom'))\n await expect(filesIndexerMySQL.createIndex('files_content_u_1')).resolves.toBe(false)\n })\n })\n\n describe('dropIndex', () => {\n it('should return true when drop succeeds', async () => {\n db.execute.mockResolvedValueOnce([{}])\n await expect(filesIndexerMySQL.dropIndex('files_content_u_1')).resolves.toBe(true)\n expect(db.execute).toHaveBeenCalledTimes(1)\n })\n\n it('should return false when drop fails', async () => {\n db.execute.mockRejectedValueOnce(new Error('boom'))\n await expect(filesIndexerMySQL.dropIndex('files_content_u_1')).resolves.toBe(false)\n })\n })\n\n describe('insertRecord', () => {\n it('should insert or update a record without throwing', async () => {\n db.execute.mockResolvedValueOnce([{}])\n await expect(\n filesIndexerMySQL.insertRecord('files_content_u_1', {\n id: 42,\n path: '/docs',\n name: 'file.txt',\n mime: 'text/plain',\n size: 12,\n mtime: 1730000000000,\n content: 'hello world'\n })\n ).resolves.toBeUndefined()\n expect(db.execute).toHaveBeenCalledTimes(1)\n })\n\n it('should catch and log errors', async () => {\n db.execute.mockRejectedValueOnce(new Error('insert failed'))\n await expect(\n filesIndexerMySQL.insertRecord('files_content_u_1', {\n id: 1,\n path: '/',\n name: 'a',\n mime: 'text/plain',\n size: 1,\n mtime: Date.now(),\n content: 'x'\n })\n ).resolves.toBeUndefined()\n expect(db.execute).toHaveBeenCalledTimes(1)\n })\n })\n\n describe('getRecordStats', () => {\n it('should return a map of id to basic stats without path filter', async () => {\n db.execute.mockResolvedValueOnce([\n [\n { id: 1, path: '/a', name: 'a.txt', size: 10 },\n { id: 2, path: '/b', name: 'b.txt', size: 20 }\n ]\n ])\n\n const map = await filesIndexerMySQL.getRecordStats('files_content_u_1')\n expect(map.get(1)).toEqual({ path: '/a', name: 'a.txt', size: 10 })\n expect(map.get(2)).toEqual({ path: '/b', name: 'b.txt', size: 20 })\n expect(db.execute).toHaveBeenCalledTimes(1)\n })\n\n it('should append WHERE clause when path filter is provided', async () => {\n db.execute.mockResolvedValueOnce([[{ id: 3, path: '/docs', name: 'c.txt', size: 30 }]])\n\n const map = await filesIndexerMySQL.getRecordStats('files_content_u_1', '/docs')\n expect(map.get(3)).toEqual({ path: '/docs', name: 'c.txt', size: 30 })\n expect(db.execute).toHaveBeenCalledTimes(1)\n })\n })\n\n describe('deleteRecords', () => {\n it('should delete ids and warn if affectedRows mismatch', async () => {\n db.execute.mockResolvedValueOnce([{ affectedRows: 1 }]) // ask delete 2 but only 1 deleted\n await filesIndexerMySQL.deleteRecords('files_content_u_1', [1, 2])\n expect(db.execute).toHaveBeenCalledTimes(1)\n })\n\n it('should not warn when all requested ids are deleted', async () => {\n const warnSpy = jest.spyOn(filesIndexerMySQL['logger'], 'warn').mockImplementation(() => undefined)\n db.execute.mockResolvedValueOnce([{ affectedRows: 2 }])\n\n await filesIndexerMySQL.deleteRecords('files_content_u_1', [1, 2])\n\n expect(db.execute).toHaveBeenCalledTimes(1)\n expect(warnSpy).not.toHaveBeenCalled()\n warnSpy.mockRestore()\n })\n\n it('should catch errors', async () => {\n db.execute.mockRejectedValueOnce(new Error('delete failed'))\n await filesIndexerMySQL.deleteRecords('files_content_u_1', [1])\n expect(db.execute).toHaveBeenCalledTimes(1)\n })\n })\n\n describe('searchRecords', () => {\n it('should return empty array when no terms', async () => {\n const res = await filesIndexerMySQL.searchRecords(['files_content_u_1'], ' ', 10)\n expect(res).toEqual([])\n expect(db.execute).toHaveBeenCalledTimes(0)\n })\n\n it('should return empty array when DB returns no records', async () => {\n db.execute.mockResolvedValueOnce([[]])\n\n const res = await filesIndexerMySQL.searchRecords(['files_content_u_1'], 'foo', 10)\n\n expect(db.execute).toHaveBeenCalledTimes(1)\n expect(res).toEqual([])\n })\n\n it('should search across tables, sort by score, and highlight matches', async () => {\n // fabricate records returned by DB. Only first array (rows) is used.\n const rows = [\n {\n id: 1,\n path: '/docs',\n name: 'alpha.txt',\n mime: 'text/plain',\n mtime: 1730000000000,\n content: 'Alpha foo bar. Something about Foo again; BAR appears too.',\n score: 10\n },\n {\n id: 2,\n path: '/docs',\n name: 'beta.txt',\n mime: 'text/plain',\n mtime: 1730000000001,\n content: 'Nothing to see here except foo once.',\n score: 5\n }\n ]\n db.execute.mockResolvedValueOnce([rows])\n\n const res = await filesIndexerMySQL.searchRecords(['files_content_u_1', 'files_content_s_2'], 'foo bar', 10)\n\n expect(db.execute).toHaveBeenCalledTimes(1)\n expect(res.length).toBe(2)\n // content must be cleared\n expect(res[0].content).toBeUndefined()\n expect(Array.isArray(res[0].matches)).toBe(true)\n expect(res[0].matches!.length).toBeGreaterThan(0)\n // highlighted with <mark> tags\n expect(res[0].matches!.join(' ')).toMatch(/<mark>foo<\\/mark>|<mark>bar<\\/mark>/i)\n })\n })\n\n describe('cleanIndexes', () => {\n it('should drop tables that are not in provided suffixes', async () => {\n // existing tables\n db.execute.mockResolvedValueOnce([[{ t: 'files_content_u_1' }, { t: 'files_content_u_2' }, { t: 'files_content_s_1' }]])\n // each drop returns something\n db.execute.mockResolvedValue([{}])\n\n await filesIndexerMySQL.cleanIndexes(['u_1']) // keep only files_content_u_1; drop the others\n\n // 1 call for indexesList + 2 drops expected\n expect(db.execute).toHaveBeenCalledTimes(3)\n })\n\n it('should do nothing when no suffixes provided', async () => {\n await filesIndexerMySQL.cleanIndexes([])\n expect(db.execute).toHaveBeenCalledTimes(0)\n })\n })\n})\n"],"names":["describe","FilesIndexerMySQL","name","module","filesIndexerMySQL","db","cache","beforeAll","execute","jest","fn","genSlugKey","get","set","mockResolvedValue","undefined","Test","createTestingModule","providers","provide","DB_TOKEN_PROVIDER","useValue","Cache","compile","useLogger","afterAll","close","beforeEach","clearAllMocks","it","expect","toBeDefined","mockResolvedValueOnce","res","indexesList","toEqual","toHaveBeenCalled","not","getIndexName","toBe","t","existingIndexes","sort","createIndex","resolves","toHaveBeenCalledTimes","mockRejectedValueOnce","Error","dropIndex","insertRecord","id","path","mime","size","mtime","content","toBeUndefined","Date","now","map","getRecordStats","affectedRows","deleteRecords","warnSpy","spyOn","mockImplementation","mockRestore","searchRecords","rows","score","length","Array","isArray","matches","toBeGreaterThan","join","toMatch","cleanIndexes"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../backend/src/applications/files/adapters/files-indexer-mysql.service.spec.ts"],"sourcesContent":["import { Test, TestingModule } from '@nestjs/testing'\nimport { Cache } from '../../../infrastructure/cache/services/cache.service'\nimport { DB_TOKEN_PROVIDER } from '../../../infrastructure/database/constants'\nimport { FilesIndexerMySQL } from './files-indexer-mysql.service'\n\ndescribe(FilesIndexerMySQL.name, () => {\n let module: TestingModule\n let filesIndexerMySQL: FilesIndexerMySQL\n let db: { execute: jest.Mock }\n let cache: { genSlugKey: jest.Mock; get: jest.Mock; set: jest.Mock }\n\n beforeAll(async () => {\n db = { execute: jest.fn() }\n cache = {\n genSlugKey: jest.fn(() => 'cache:indexesList:key'),\n get: jest.fn(),\n set: jest.fn().mockResolvedValue(undefined)\n }\n\n module = await Test.createTestingModule({\n providers: [FilesIndexerMySQL, { provide: DB_TOKEN_PROVIDER, useValue: db }, { provide: Cache, useValue: cache }]\n }).compile()\n\n module.useLogger(['fatal'])\n filesIndexerMySQL = module.get<FilesIndexerMySQL>(FilesIndexerMySQL)\n })\n\n afterAll(async () => {\n await module.close()\n })\n\n beforeEach(() => {\n jest.clearAllMocks()\n })\n\n it('should be defined', () => {\n expect(filesIndexerMySQL).toBeDefined()\n })\n\n describe('indexesList', () => {\n it('should list tables starting with prefix', async () => {\n // Force a cache hit to avoid decorator calling the original method with a bad `this`\n cache.get.mockResolvedValueOnce(['files_content_u_1', 'files_content_s_2'])\n\n const res = await filesIndexerMySQL.indexesList()\n expect(res).toEqual(['files_content_u_1', 'files_content_s_2'])\n expect(cache.genSlugKey).toHaveBeenCalled()\n expect(cache.get).toHaveBeenCalled()\n // DB should not be called on cache hit\n expect(db.execute).not.toHaveBeenCalled()\n })\n })\n\n describe('getIndexName', () => {\n it('should build table name with prefix', () => {\n expect(filesIndexerMySQL.getIndexName('u_123')).toBe('files_content_u_123')\n })\n })\n\n describe('existingIndexes', () => {\n it('should filter suffixes to existing tables', async () => {\n db.execute.mockResolvedValueOnce([[{ t: 'files_content_u_1' }, { t: 'files_content_s_2' }]])\n const res = await filesIndexerMySQL.existingIndexes(['u_1', 's_3', 's_2'])\n expect(res.sort()).toEqual(['files_content_s_2', 'files_content_u_1'].sort())\n })\n })\n\n describe('createIndex', () => {\n it('should return true when creation succeeds', async () => {\n db.execute.mockResolvedValueOnce([{}])\n await expect(filesIndexerMySQL.createIndex('files_content_u_1')).resolves.toBe(true)\n expect(db.execute).toHaveBeenCalledTimes(1)\n })\n\n it('should return false when creation fails', async () => {\n db.execute.mockRejectedValueOnce(new Error('boom'))\n await expect(filesIndexerMySQL.createIndex('files_content_u_1')).resolves.toBe(false)\n })\n })\n\n describe('dropIndex', () => {\n it('should return true when drop succeeds', async () => {\n db.execute.mockResolvedValueOnce([{}])\n await expect(filesIndexerMySQL.dropIndex('files_content_u_1')).resolves.toBe(true)\n expect(db.execute).toHaveBeenCalledTimes(1)\n })\n\n it('should return false when drop fails', async () => {\n db.execute.mockRejectedValueOnce(new Error('boom'))\n await expect(filesIndexerMySQL.dropIndex('files_content_u_1')).resolves.toBe(false)\n })\n })\n\n describe('insertRecord', () => {\n it('should insert or update a record without throwing', async () => {\n db.execute.mockResolvedValueOnce([{}])\n await expect(\n filesIndexerMySQL.insertRecord('files_content_u_1', {\n id: 42,\n path: '/docs',\n name: 'file.txt',\n mime: 'text/plain',\n size: 12,\n mtime: 1730000000000,\n content: 'hello world'\n })\n ).resolves.toBeUndefined()\n expect(db.execute).toHaveBeenCalledTimes(1)\n })\n\n it('should catch and log errors', async () => {\n db.execute.mockRejectedValueOnce(new Error('insert failed'))\n await expect(\n filesIndexerMySQL.insertRecord('files_content_u_1', {\n id: 1,\n path: '/',\n name: 'a',\n mime: 'text/plain',\n size: 1,\n mtime: Date.now(),\n content: 'x'\n })\n ).resolves.toBeUndefined()\n expect(db.execute).toHaveBeenCalledTimes(1)\n })\n })\n\n describe('getRecordStats', () => {\n it('should return a map of id to basic stats without path filter', async () => {\n db.execute.mockResolvedValueOnce([\n [\n { id: 1, path: '/a', name: 'a.txt', size: 10 },\n { id: 2, path: '/b', name: 'b.txt', size: 20 }\n ]\n ])\n\n const map = await filesIndexerMySQL.getRecordStats('files_content_u_1')\n expect(map.get(1)).toEqual({ path: '/a', name: 'a.txt', size: 10 })\n expect(map.get(2)).toEqual({ path: '/b', name: 'b.txt', size: 20 })\n expect(db.execute).toHaveBeenCalledTimes(1)\n })\n\n it('should append WHERE clause when path filter is provided', async () => {\n db.execute.mockResolvedValueOnce([[{ id: 3, path: '/docs', name: 'c.txt', size: 30 }]])\n\n const map = await filesIndexerMySQL.getRecordStats('files_content_u_1', '/docs')\n expect(map.get(3)).toEqual({ path: '/docs', name: 'c.txt', size: 30 })\n expect(db.execute).toHaveBeenCalledTimes(1)\n })\n })\n\n describe('deleteRecords', () => {\n it('should delete ids and warn if affectedRows mismatch', async () => {\n db.execute.mockResolvedValueOnce([{ affectedRows: 1 }]) // ask delete 2 but only 1 deleted\n await filesIndexerMySQL.deleteRecords('files_content_u_1', [1, 2])\n expect(db.execute).toHaveBeenCalledTimes(1)\n })\n\n it('should not warn when all requested ids are deleted', async () => {\n const warnSpy = jest.spyOn(filesIndexerMySQL['logger'], 'warn').mockImplementation(() => undefined)\n db.execute.mockResolvedValueOnce([{ affectedRows: 2 }])\n\n await filesIndexerMySQL.deleteRecords('files_content_u_1', [1, 2])\n\n expect(db.execute).toHaveBeenCalledTimes(1)\n expect(warnSpy).not.toHaveBeenCalled()\n warnSpy.mockRestore()\n })\n\n it('should catch errors', async () => {\n db.execute.mockRejectedValueOnce(new Error('delete failed'))\n await filesIndexerMySQL.deleteRecords('files_content_u_1', [1])\n expect(db.execute).toHaveBeenCalledTimes(1)\n })\n })\n\n describe('searchRecords', () => {\n it('should return empty array when no terms', async () => {\n const res = await filesIndexerMySQL.searchRecords(['files_content_u_1'], ' ', 10)\n expect(res).toEqual([])\n expect(db.execute).toHaveBeenCalledTimes(0)\n })\n\n it('should return empty array when DB returns no records', async () => {\n db.execute.mockResolvedValueOnce([[]])\n\n const res = await filesIndexerMySQL.searchRecords(['files_content_u_1'], 'foo', 10)\n\n expect(db.execute).toHaveBeenCalledTimes(1)\n expect(res).toEqual([])\n })\n\n it('should search across tables, sort by score, and highlight matches', async () => {\n // fabricate records returned by DB. Only first array (rows) is used.\n const rows = [\n {\n id: 1,\n path: '/docs',\n name: 'alpha.txt',\n mime: 'text/plain',\n mtime: 1730000000000,\n content: 'Alpha foo bar. Something about Foo again; BAR appears too.',\n score: 10\n },\n {\n id: 2,\n path: '/docs',\n name: 'beta.txt',\n mime: 'text/plain',\n mtime: 1730000000001,\n content: 'Nothing to see here except foo once.',\n score: 5\n }\n ]\n db.execute.mockResolvedValueOnce([rows])\n\n const res = await filesIndexerMySQL.searchRecords(['files_content_u_1', 'files_content_s_2'], 'foo bar', 10)\n\n expect(db.execute).toHaveBeenCalledTimes(1)\n expect(res.length).toBe(2)\n // content must be cleared\n expect(res[0].content).toBeUndefined()\n expect(Array.isArray(res[0].matches)).toBe(true)\n expect(res[0].matches!.length).toBeGreaterThan(0)\n // highlighted with <mark> tags\n expect(res[0].matches!.join(' ')).toMatch(/<mark>foo<\\/mark>|<mark>bar<\\/mark>/i)\n })\n })\n\n describe('cleanIndexes', () => {\n it('should drop tables that are not in provided suffixes', async () => {\n // existing tables\n db.execute.mockResolvedValueOnce([[{ t: 'files_content_u_1' }, { t: 'files_content_u_2' }, { t: 'files_content_s_1' }]])\n // each drop returns something\n db.execute.mockResolvedValue([{}])\n\n await filesIndexerMySQL.cleanIndexes(['u_1']) // keep only files_content_u_1; drop the others\n\n // 1 call for indexesList + 2 drops expected\n expect(db.execute).toHaveBeenCalledTimes(3)\n })\n\n it('should do nothing when no suffixes provided', async () => {\n await filesIndexerMySQL.cleanIndexes([])\n expect(db.execute).toHaveBeenCalledTimes(0)\n })\n })\n})\n"],"names":["describe","FilesIndexerMySQL","name","module","filesIndexerMySQL","db","cache","beforeAll","execute","jest","fn","genSlugKey","get","set","mockResolvedValue","undefined","Test","createTestingModule","providers","provide","DB_TOKEN_PROVIDER","useValue","Cache","compile","useLogger","afterAll","close","beforeEach","clearAllMocks","it","expect","toBeDefined","mockResolvedValueOnce","res","indexesList","toEqual","toHaveBeenCalled","not","getIndexName","toBe","t","existingIndexes","sort","createIndex","resolves","toHaveBeenCalledTimes","mockRejectedValueOnce","Error","dropIndex","insertRecord","id","path","mime","size","mtime","content","toBeUndefined","Date","now","map","getRecordStats","affectedRows","deleteRecords","warnSpy","spyOn","mockImplementation","mockRestore","searchRecords","rows","score","length","Array","isArray","matches","toBeGreaterThan","join","toMatch","cleanIndexes"],"mappings":"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"}
@@ -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
- */ // cache task key = `ftask-$(userId}-${taskId}` => FileTask
1
+ // cache task key = `ftask-$(userId}-${taskId}` => FileTask
6
2
  "use strict";
7
3
  Object.defineProperty(exports, "__esModule", {
8
4
  value: true
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../backend/src/applications/files/constants/cache.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\n// cache task key = `ftask-$(userId}-${taskId}` => FileTask\nexport const CACHE_TASK_PREFIX = 'ftask' as const\nexport const CACHE_TASK_TTL = 86400 as const // one day\n// cache token key = `flock|token?:${uuid}|path:${path}|ownerId?:${number}|spaceId?:${number}|...props` => FileLock\nexport const CACHE_LOCK_PREFIX = 'flock' as const\nexport const CACHE_LOCK_DEFAULT_TTL = 28800 as const // 8 hours in seconds\nexport const CACHE_LOCK_FILE_TTL = 3600 as const\n// cache only office = `office|${fileId}` => docKey\n"],"names":["CACHE_LOCK_DEFAULT_TTL","CACHE_LOCK_FILE_TTL","CACHE_LOCK_PREFIX","CACHE_TASK_PREFIX","CACHE_TASK_TTL"],"mappings":"AAAA;;;;CAIC,GAED,2DAA2D;;;;;;;;;;;;QAK9CA;eAAAA;;QACAC;eAAAA;;QAFAC;eAAAA;;QAHAC;eAAAA;;QACAC;eAAAA;;;AADN,MAAMD,oBAAoB;AAC1B,MAAMC,iBAAiB,KAAe,UAAU;;AAEhD,MAAMF,oBAAoB;AAC1B,MAAMF,yBAAyB,KAAe,qBAAqB;;AACnE,MAAMC,sBAAsB,IACnC,mDAAmD"}
1
+ {"version":3,"sources":["../../../../../backend/src/applications/files/constants/cache.ts"],"sourcesContent":["// cache task key = `ftask-$(userId}-${taskId}` => FileTask\nexport const CACHE_TASK_PREFIX = 'ftask' as const\nexport const CACHE_TASK_TTL = 86400 as const // one day\n// cache token key = `flock|token?:${uuid}|path:${path}|ownerId?:${number}|spaceId?:${number}|...props` => FileLock\nexport const CACHE_LOCK_PREFIX = 'flock' as const\nexport const CACHE_LOCK_DEFAULT_TTL = 28800 as const // 8 hours in seconds\nexport const CACHE_LOCK_FILE_TTL = 3600 as const\n// cache only office = `office|${fileId}` => docKey\n"],"names":["CACHE_LOCK_DEFAULT_TTL","CACHE_LOCK_FILE_TTL","CACHE_LOCK_PREFIX","CACHE_TASK_PREFIX","CACHE_TASK_TTL"],"mappings":"AAAA,2DAA2D;;;;;;;;;;;;QAK9CA;eAAAA;;QACAC;eAAAA;;QAFAC;eAAAA;;QAHAC;eAAAA;;QACAC;eAAAA;;;AADN,MAAMD,oBAAoB;AAC1B,MAAMC,iBAAiB,KAAe,UAAU;;AAEhD,MAAMF,oBAAoB;AAC1B,MAAMF,yBAAyB,KAAe,qBAAqB;;AACnE,MAAMC,sBAAsB,IACnC,mDAAmD"}
@@ -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
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../backend/src/applications/files/constants/compress.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\nexport const tarExtension = 'tar'\nexport const tarGzExtension = 'tgz'\n"],"names":["tarExtension","tarGzExtension"],"mappings":"AAAA;;;;CAIC;;;;;;;;;;;QAEYA;eAAAA;;QACAC;eAAAA;;;AADN,MAAMD,eAAe;AACrB,MAAMC,iBAAiB"}
1
+ {"version":3,"sources":["../../../../../backend/src/applications/files/constants/compress.ts"],"sourcesContent":["export const tarExtension = 'tar'\nexport const tarGzExtension = 'tgz'\n"],"names":["tarExtension","tarGzExtension"],"mappings":";;;;;;;;;;;QAAaA;eAAAA;;QACAC;eAAAA;;;AADN,MAAMD,eAAe;AACrB,MAAMC,iBAAiB"}
@@ -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
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../backend/src/applications/files/constants/files.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\nexport const DEFAULT_CHECKSUM_ALGORITHM = 'sha512-256'\nexport const DEFAULT_HIGH_WATER_MARK = 1024 * 1024\nexport const DEFAULT_MIME_TYPE = 'application/octet-stream'\nexport const EXTRA_MIMES_TYPE = new Map([\n ['.ts', 'text-typescript'],\n ['.py', 'text-x-python'],\n ['.tgz', 'application-gzip'],\n ['.gz', 'application-gzip'],\n ['.gzip', 'application-gzip']\n])\nexport const COMPRESSION_EXTENSION = new Map([\n ['.zip', 'zip'],\n ['.gzip', 'gzip'],\n ['.tgz', 'tgz'],\n ['.gz', 'tgz'],\n ['.tar.gz', 'tgz'],\n ['.tar', 'tar']\n])\n"],"names":["COMPRESSION_EXTENSION","DEFAULT_CHECKSUM_ALGORITHM","DEFAULT_HIGH_WATER_MARK","DEFAULT_MIME_TYPE","EXTRA_MIMES_TYPE","Map"],"mappings":"AAAA;;;;CAIC;;;;;;;;;;;QAYYA;eAAAA;;QAVAC;eAAAA;;QACAC;eAAAA;;QACAC;eAAAA;;QACAC;eAAAA;;;AAHN,MAAMH,6BAA6B;AACnC,MAAMC,0BAA0B,OAAO;AACvC,MAAMC,oBAAoB;AAC1B,MAAMC,mBAAmB,IAAIC,IAAI;IACtC;QAAC;QAAO;KAAkB;IAC1B;QAAC;QAAO;KAAgB;IACxB;QAAC;QAAQ;KAAmB;IAC5B;QAAC;QAAO;KAAmB;IAC3B;QAAC;QAAS;KAAmB;CAC9B;AACM,MAAML,wBAAwB,IAAIK,IAAI;IAC3C;QAAC;QAAQ;KAAM;IACf;QAAC;QAAS;KAAO;IACjB;QAAC;QAAQ;KAAM;IACf;QAAC;QAAO;KAAM;IACd;QAAC;QAAW;KAAM;IAClB;QAAC;QAAQ;KAAM;CAChB"}
1
+ {"version":3,"sources":["../../../../../backend/src/applications/files/constants/files.ts"],"sourcesContent":["export const DEFAULT_CHECKSUM_ALGORITHM = 'sha512-256'\nexport const DEFAULT_HIGH_WATER_MARK = 1024 * 1024\nexport const DEFAULT_MIME_TYPE = 'application/octet-stream'\nexport const EXTRA_MIMES_TYPE = new Map([\n ['.ts', 'text-typescript'],\n ['.py', 'text-x-python'],\n ['.tgz', 'application-gzip'],\n ['.gz', 'application-gzip'],\n ['.gzip', 'application-gzip']\n])\nexport const COMPRESSION_EXTENSION = new Map([\n ['.zip', 'zip'],\n ['.gzip', 'gzip'],\n ['.tgz', 'tgz'],\n ['.gz', 'tgz'],\n ['.tar.gz', 'tgz'],\n ['.tar', 'tar']\n])\n"],"names":["COMPRESSION_EXTENSION","DEFAULT_CHECKSUM_ALGORITHM","DEFAULT_HIGH_WATER_MARK","DEFAULT_MIME_TYPE","EXTRA_MIMES_TYPE","Map"],"mappings":";;;;;;;;;;;QAUaA;eAAAA;;QAVAC;eAAAA;;QACAC;eAAAA;;QACAC;eAAAA;;QACAC;eAAAA;;;AAHN,MAAMH,6BAA6B;AACnC,MAAMC,0BAA0B,OAAO;AACvC,MAAMC,oBAAoB;AAC1B,MAAMC,mBAAmB,IAAIC,IAAI;IACtC;QAAC;QAAO;KAAkB;IAC1B;QAAC;QAAO;KAAgB;IACxB;QAAC;QAAQ;KAAmB;IAC5B;QAAC;QAAO;KAAmB;IAC3B;QAAC;QAAS;KAAmB;CAC9B;AACM,MAAML,wBAAwB,IAAIK,IAAI;IAC3C;QAAC;QAAQ;KAAM;IACf;QAAC;QAAS;KAAO;IACjB;QAAC;QAAQ;KAAM;IACf;QAAC;QAAO;KAAM;IACd;QAAC;QAAW;KAAM;IAClB;QAAC;QAAQ;KAAM;CAChB"}
@@ -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
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../backend/src/applications/files/constants/indexing.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\nexport const userIndexPrefix = 'user_'\nexport const spaceIndexPrefix = 'space_'\nexport const shareIndexPrefix = 'share_'\nexport const minCharsToSearch = 3\nexport const indexableExtensions = new Set(['docx', 'pptx', 'xlsx', 'odt', 'odp', 'ods', 'pdf', 'txt', 'html', 'htm'])\n"],"names":["indexableExtensions","minCharsToSearch","shareIndexPrefix","spaceIndexPrefix","userIndexPrefix","Set"],"mappings":"AAAA;;;;CAIC;;;;;;;;;;;QAMYA;eAAAA;;QADAC;eAAAA;;QADAC;eAAAA;;QADAC;eAAAA;;QADAC;eAAAA;;;AAAN,MAAMA,kBAAkB;AACxB,MAAMD,mBAAmB;AACzB,MAAMD,mBAAmB;AACzB,MAAMD,mBAAmB;AACzB,MAAMD,sBAAsB,IAAIK,IAAI;IAAC;IAAQ;IAAQ;IAAQ;IAAO;IAAO;IAAO;IAAO;IAAO;IAAQ;CAAM"}
1
+ {"version":3,"sources":["../../../../../backend/src/applications/files/constants/indexing.ts"],"sourcesContent":["export const userIndexPrefix = 'user_'\nexport const spaceIndexPrefix = 'space_'\nexport const shareIndexPrefix = 'share_'\nexport const minCharsToSearch = 3\nexport const indexableExtensions = new Set(['docx', 'pptx', 'xlsx', 'odt', 'odp', 'ods', 'pdf', 'txt', 'html', 'htm'])\n"],"names":["indexableExtensions","minCharsToSearch","shareIndexPrefix","spaceIndexPrefix","userIndexPrefix","Set"],"mappings":";;;;;;;;;;;QAIaA;eAAAA;;QADAC;eAAAA;;QADAC;eAAAA;;QADAC;eAAAA;;QADAC;eAAAA;;;AAAN,MAAMA,kBAAkB;AACxB,MAAMD,mBAAmB;AACzB,MAAMD,mBAAmB;AACzB,MAAMD,mBAAmB;AACzB,MAAMD,sBAAsB,IAAIK,IAAI;IAAC;IAAQ;IAAQ;IAAQ;IAAO;IAAO;IAAO;IAAO;IAAO;IAAQ;CAAM"}
@@ -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
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../backend/src/applications/files/constants/operations.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\nexport enum FILE_OPERATION {\n MAKE = 'make',\n COPY = 'copy',\n MOVE = 'move',\n DELETE = 'delete',\n COMPRESS = 'compress',\n DECOMPRESS = 'decompress',\n DOWNLOAD = 'download',\n UPLOAD = 'upload',\n TOUCH = 'touch',\n THUMBNAIL = 'thumbnail',\n GET_SIZE = 'getSize',\n LOCK = 'lock',\n UNLOCK = 'unlock',\n UNLOCK_REQUEST = 'unlockRequest'\n}\n\nexport enum FILE_MODE {\n VIEW = 'view',\n EDIT = 'edit'\n}\n\nexport const FORCE_AS_FILE_OWNER = 'forceAsFileOwner' as const\n"],"names":["FILE_MODE","FILE_OPERATION","FORCE_AS_FILE_OWNER"],"mappings":"AAAA;;;;CAIC;;;;;;;;;;;QAmBWA;eAAAA;;QAjBAC;eAAAA;;QAsBCC;eAAAA;;;AAtBN,IAAA,AAAKD,wCAAAA;;;;;;;;;;;;;;;WAAAA;;AAiBL,IAAA,AAAKD,mCAAAA;;;WAAAA;;AAKL,MAAME,sBAAsB"}
1
+ {"version":3,"sources":["../../../../../backend/src/applications/files/constants/operations.ts"],"sourcesContent":["export enum FILE_OPERATION {\n MAKE = 'make',\n COPY = 'copy',\n MOVE = 'move',\n DELETE = 'delete',\n COMPRESS = 'compress',\n DECOMPRESS = 'decompress',\n DOWNLOAD = 'download',\n UPLOAD = 'upload',\n TOUCH = 'touch',\n THUMBNAIL = 'thumbnail',\n GET_SIZE = 'getSize',\n LOCK = 'lock',\n UNLOCK = 'unlock',\n UNLOCK_REQUEST = 'unlockRequest'\n}\n\nexport enum FILE_MODE {\n VIEW = 'view',\n EDIT = 'edit'\n}\n\nexport const FORCE_AS_FILE_OWNER = 'forceAsFileOwner' as const\n"],"names":["FILE_MODE","FILE_OPERATION","FORCE_AS_FILE_OWNER"],"mappings":";;;;;;;;;;;QAiBYA;eAAAA;;QAjBAC;eAAAA;;QAsBCC;eAAAA;;;AAtBN,IAAA,AAAKD,wCAAAA;;;;;;;;;;;;;;;WAAAA;;AAiBL,IAAA,AAAKD,mCAAAA;;;WAAAA;;AAKL,MAAME,sBAAsB"}
@@ -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
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../backend/src/applications/files/constants/routes.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 { SPACES_ROUTE } from '../../spaces/constants/routes'\nimport { FILE_OPERATION } from './operations'\n\nexport const FILES_ROUTE = {\n BASE: SPACES_ROUTE.BASE,\n OPERATION: 'operation',\n TASK_OPERATION: 'task/operation',\n TASKS: 'tasks',\n TASKS_DOWNLOAD: 'download',\n RECENTS: 'recents',\n SEARCH: 'search'\n} as const\n\nexport const API_FILES_OPERATION = `${FILES_ROUTE.BASE}/${FILES_ROUTE.OPERATION}`\nexport const API_FILES_OPERATION_THUMBNAIL = `${API_FILES_OPERATION}/${FILE_OPERATION.THUMBNAIL}`\nexport const API_FILES_OPERATION_MAKE = `${API_FILES_OPERATION}/${FILE_OPERATION.MAKE}`\nexport const API_FILES_OPERATION_UPLOAD = `${API_FILES_OPERATION}/${FILE_OPERATION.UPLOAD}`\nexport const API_FILES_TASK_OPERATION = `${FILES_ROUTE.BASE}/${FILES_ROUTE.TASK_OPERATION}`\nexport const API_FILES_TASK_OPERATION_DOWNLOAD = `${API_FILES_TASK_OPERATION}/${FILE_OPERATION.DOWNLOAD}`\nexport const API_FILES_TASK_OPERATION_COMPRESS = `${API_FILES_TASK_OPERATION}/${FILE_OPERATION.COMPRESS}`\nexport const API_FILES_TASK_OPERATION_DECOMPRESS = `${API_FILES_TASK_OPERATION}/${FILE_OPERATION.DECOMPRESS}`\nexport const API_FILES_TASKS = `${FILES_ROUTE.BASE}/${FILES_ROUTE.TASKS}`\nexport const API_FILES_TASKS_DOWNLOAD = `${FILES_ROUTE.BASE}/${FILES_ROUTE.TASKS}/${FILES_ROUTE.TASKS_DOWNLOAD}`\nexport const API_FILES_RECENTS = `${FILES_ROUTE.BASE}/${FILES_ROUTE.RECENTS}`\nexport const API_FILES_SEARCH = `${FILES_ROUTE.BASE}/${FILES_ROUTE.SEARCH}`\n"],"names":["API_FILES_OPERATION","API_FILES_OPERATION_MAKE","API_FILES_OPERATION_THUMBNAIL","API_FILES_OPERATION_UPLOAD","API_FILES_RECENTS","API_FILES_SEARCH","API_FILES_TASKS","API_FILES_TASKS_DOWNLOAD","API_FILES_TASK_OPERATION","API_FILES_TASK_OPERATION_COMPRESS","API_FILES_TASK_OPERATION_DECOMPRESS","API_FILES_TASK_OPERATION_DOWNLOAD","FILES_ROUTE","BASE","SPACES_ROUTE","OPERATION","TASK_OPERATION","TASKS","TASKS_DOWNLOAD","RECENTS","SEARCH","FILE_OPERATION","THUMBNAIL","MAKE","UPLOAD","DOWNLOAD","COMPRESS","DECOMPRESS"],"mappings":"AAAA;;;;CAIC;;;;;;;;;;;QAeYA;eAAAA;;QAEAC;eAAAA;;QADAC;eAAAA;;QAEAC;eAAAA;;QAOAC;eAAAA;;QACAC;eAAAA;;QAHAC;eAAAA;;QACAC;eAAAA;;QALAC;eAAAA;;QAEAC;eAAAA;;QACAC;eAAAA;;QAFAC;eAAAA;;QAfAC;eAAAA;;;wBAHgB;4BACE;AAExB,MAAMA,cAAc;IACzBC,MAAMC,oBAAY,CAACD,IAAI;IACvBE,WAAW;IACXC,gBAAgB;IAChBC,OAAO;IACPC,gBAAgB;IAChBC,SAAS;IACTC,QAAQ;AACV;AAEO,MAAMpB,sBAAsB,GAAGY,YAAYC,IAAI,CAAC,CAAC,EAAED,YAAYG,SAAS,EAAE;AAC1E,MAAMb,gCAAgC,GAAGF,oBAAoB,CAAC,EAAEqB,0BAAc,CAACC,SAAS,EAAE;AAC1F,MAAMrB,2BAA2B,GAAGD,oBAAoB,CAAC,EAAEqB,0BAAc,CAACE,IAAI,EAAE;AAChF,MAAMpB,6BAA6B,GAAGH,oBAAoB,CAAC,EAAEqB,0BAAc,CAACG,MAAM,EAAE;AACpF,MAAMhB,2BAA2B,GAAGI,YAAYC,IAAI,CAAC,CAAC,EAAED,YAAYI,cAAc,EAAE;AACpF,MAAML,oCAAoC,GAAGH,yBAAyB,CAAC,EAAEa,0BAAc,CAACI,QAAQ,EAAE;AAClG,MAAMhB,oCAAoC,GAAGD,yBAAyB,CAAC,EAAEa,0BAAc,CAACK,QAAQ,EAAE;AAClG,MAAMhB,sCAAsC,GAAGF,yBAAyB,CAAC,EAAEa,0BAAc,CAACM,UAAU,EAAE;AACtG,MAAMrB,kBAAkB,GAAGM,YAAYC,IAAI,CAAC,CAAC,EAAED,YAAYK,KAAK,EAAE;AAClE,MAAMV,2BAA2B,GAAGK,YAAYC,IAAI,CAAC,CAAC,EAAED,YAAYK,KAAK,CAAC,CAAC,EAAEL,YAAYM,cAAc,EAAE;AACzG,MAAMd,oBAAoB,GAAGQ,YAAYC,IAAI,CAAC,CAAC,EAAED,YAAYO,OAAO,EAAE;AACtE,MAAMd,mBAAmB,GAAGO,YAAYC,IAAI,CAAC,CAAC,EAAED,YAAYQ,MAAM,EAAE"}
1
+ {"version":3,"sources":["../../../../../backend/src/applications/files/constants/routes.ts"],"sourcesContent":["import { SPACES_ROUTE } from '../../spaces/constants/routes'\nimport { FILE_OPERATION } from './operations'\n\nexport const FILES_ROUTE = {\n BASE: SPACES_ROUTE.BASE,\n OPERATION: 'operation',\n TASK_OPERATION: 'task/operation',\n TASKS: 'tasks',\n TASKS_DOWNLOAD: 'download',\n RECENTS: 'recents',\n SEARCH: 'search'\n} as const\n\nexport const API_FILES_OPERATION = `${FILES_ROUTE.BASE}/${FILES_ROUTE.OPERATION}`\nexport const API_FILES_OPERATION_THUMBNAIL = `${API_FILES_OPERATION}/${FILE_OPERATION.THUMBNAIL}`\nexport const API_FILES_OPERATION_MAKE = `${API_FILES_OPERATION}/${FILE_OPERATION.MAKE}`\nexport const API_FILES_OPERATION_UPLOAD = `${API_FILES_OPERATION}/${FILE_OPERATION.UPLOAD}`\nexport const API_FILES_TASK_OPERATION = `${FILES_ROUTE.BASE}/${FILES_ROUTE.TASK_OPERATION}`\nexport const API_FILES_TASK_OPERATION_DOWNLOAD = `${API_FILES_TASK_OPERATION}/${FILE_OPERATION.DOWNLOAD}`\nexport const API_FILES_TASK_OPERATION_COMPRESS = `${API_FILES_TASK_OPERATION}/${FILE_OPERATION.COMPRESS}`\nexport const API_FILES_TASK_OPERATION_DECOMPRESS = `${API_FILES_TASK_OPERATION}/${FILE_OPERATION.DECOMPRESS}`\nexport const API_FILES_TASKS = `${FILES_ROUTE.BASE}/${FILES_ROUTE.TASKS}`\nexport const API_FILES_TASKS_DOWNLOAD = `${FILES_ROUTE.BASE}/${FILES_ROUTE.TASKS}/${FILES_ROUTE.TASKS_DOWNLOAD}`\nexport const API_FILES_RECENTS = `${FILES_ROUTE.BASE}/${FILES_ROUTE.RECENTS}`\nexport const API_FILES_SEARCH = `${FILES_ROUTE.BASE}/${FILES_ROUTE.SEARCH}`\n"],"names":["API_FILES_OPERATION","API_FILES_OPERATION_MAKE","API_FILES_OPERATION_THUMBNAIL","API_FILES_OPERATION_UPLOAD","API_FILES_RECENTS","API_FILES_SEARCH","API_FILES_TASKS","API_FILES_TASKS_DOWNLOAD","API_FILES_TASK_OPERATION","API_FILES_TASK_OPERATION_COMPRESS","API_FILES_TASK_OPERATION_DECOMPRESS","API_FILES_TASK_OPERATION_DOWNLOAD","FILES_ROUTE","BASE","SPACES_ROUTE","OPERATION","TASK_OPERATION","TASKS","TASKS_DOWNLOAD","RECENTS","SEARCH","FILE_OPERATION","THUMBNAIL","MAKE","UPLOAD","DOWNLOAD","COMPRESS","DECOMPRESS"],"mappings":";;;;;;;;;;;QAaaA;eAAAA;;QAEAC;eAAAA;;QADAC;eAAAA;;QAEAC;eAAAA;;QAOAC;eAAAA;;QACAC;eAAAA;;QAHAC;eAAAA;;QACAC;eAAAA;;QALAC;eAAAA;;QAEAC;eAAAA;;QACAC;eAAAA;;QAFAC;eAAAA;;QAfAC;eAAAA;;;wBAHgB;4BACE;AAExB,MAAMA,cAAc;IACzBC,MAAMC,oBAAY,CAACD,IAAI;IACvBE,WAAW;IACXC,gBAAgB;IAChBC,OAAO;IACPC,gBAAgB;IAChBC,SAAS;IACTC,QAAQ;AACV;AAEO,MAAMpB,sBAAsB,GAAGY,YAAYC,IAAI,CAAC,CAAC,EAAED,YAAYG,SAAS,EAAE;AAC1E,MAAMb,gCAAgC,GAAGF,oBAAoB,CAAC,EAAEqB,0BAAc,CAACC,SAAS,EAAE;AAC1F,MAAMrB,2BAA2B,GAAGD,oBAAoB,CAAC,EAAEqB,0BAAc,CAACE,IAAI,EAAE;AAChF,MAAMpB,6BAA6B,GAAGH,oBAAoB,CAAC,EAAEqB,0BAAc,CAACG,MAAM,EAAE;AACpF,MAAMhB,2BAA2B,GAAGI,YAAYC,IAAI,CAAC,CAAC,EAAED,YAAYI,cAAc,EAAE;AACpF,MAAML,oCAAoC,GAAGH,yBAAyB,CAAC,EAAEa,0BAAc,CAACI,QAAQ,EAAE;AAClG,MAAMhB,oCAAoC,GAAGD,yBAAyB,CAAC,EAAEa,0BAAc,CAACK,QAAQ,EAAE;AAClG,MAAMhB,sCAAsC,GAAGF,yBAAyB,CAAC,EAAEa,0BAAc,CAACM,UAAU,EAAE;AACtG,MAAMrB,kBAAkB,GAAGM,YAAYC,IAAI,CAAC,CAAC,EAAED,YAAYK,KAAK,EAAE;AAClE,MAAMV,2BAA2B,GAAGK,YAAYC,IAAI,CAAC,CAAC,EAAED,YAAYK,KAAK,CAAC,CAAC,EAAEL,YAAYM,cAAc,EAAE;AACzG,MAAMd,oBAAoB,GAAGQ,YAAYC,IAAI,CAAC,CAAC,EAAED,YAAYO,OAAO,EAAE;AACtE,MAAMd,mBAAmB,GAAGO,YAAYC,IAAI,CAAC,CAAC,EAAED,YAAYQ,MAAM,EAAE"}
@@ -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
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../backend/src/applications/files/constants/samples.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\nexport const SAMPLE_PATH_WITHOUT_EXT = '../assets/samples/sample'\nexport const DOCUMENT_TYPE = {\n 'Microsoft Word': '.docx',\n 'Microsoft Excel': '.xlsx',\n 'Microsoft PowerPoint': '.pptx',\n 'Open Document Text': '.odt',\n 'Open Document Spreadsheet': '.ods',\n 'Open Document Presentation': '.odp',\n 'Rich Text Format': '.rtf',\n Text: '.txt'\n}\n"],"names":["DOCUMENT_TYPE","SAMPLE_PATH_WITHOUT_EXT","Text"],"mappings":"AAAA;;;;CAIC;;;;;;;;;;;QAGYA;eAAAA;;QADAC;eAAAA;;;AAAN,MAAMA,0BAA0B;AAChC,MAAMD,gBAAgB;IAC3B,kBAAkB;IAClB,mBAAmB;IACnB,wBAAwB;IACxB,sBAAsB;IACtB,6BAA6B;IAC7B,8BAA8B;IAC9B,oBAAoB;IACpBE,MAAM;AACR"}
1
+ {"version":3,"sources":["../../../../../backend/src/applications/files/constants/samples.ts"],"sourcesContent":["export const SAMPLE_PATH_WITHOUT_EXT = '../assets/samples/sample'\nexport const DOCUMENT_TYPE = {\n 'Microsoft Word': '.docx',\n 'Microsoft Excel': '.xlsx',\n 'Microsoft PowerPoint': '.pptx',\n 'Open Document Text': '.odt',\n 'Open Document Spreadsheet': '.ods',\n 'Open Document Presentation': '.odp',\n 'Rich Text Format': '.rtf',\n Text: '.txt'\n}\n"],"names":["DOCUMENT_TYPE","SAMPLE_PATH_WITHOUT_EXT","Text"],"mappings":";;;;;;;;;;;QACaA;eAAAA;;QADAC;eAAAA;;;AAAN,MAAMA,0BAA0B;AAChC,MAAMD,gBAAgB;IAC3B,kBAAkB;IAClB,mBAAmB;IACnB,wBAAwB;IACxB,sBAAsB;IACtB,6BAA6B;IAC7B,8BAA8B;IAC9B,oBAAoB;IACpBE,MAAM;AACR"}
@@ -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
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../backend/src/applications/files/dto/file-operations.dto.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 { Transform } from 'class-transformer'\nimport { ArrayMinSize, IsArray, IsBoolean, IsDefined, IsIn, IsInt, IsNotEmpty, IsOptional, IsString, IsUrl } from 'class-validator'\nimport { RejectIfMatch } from '../../../common/decorators'\nimport { regExpInvalidFileName } from '../../../common/shared'\nimport { tarExtension, tarGzExtension } from '../constants/compress'\n\nexport class CopyMoveFileDto {\n @IsNotEmpty()\n @IsString()\n dstDirectory: string\n\n @IsOptional()\n @IsString()\n @RejectIfMatch(regExpInvalidFileName, { message: 'Forbidden characters' })\n // Renaming scenario\n dstName?: string\n\n @IsOptional()\n @IsBoolean()\n overwrite? = false\n}\n\nexport class DownloadFileDto {\n @IsNotEmpty()\n @IsUrl({\n // only allow HTTP(S)\n protocols: ['http', 'https'],\n require_protocol: true,\n require_valid_protocol: true,\n // reject exotic schemes and underscores\n allow_underscores: false,\n allow_trailing_dot: false\n })\n url: string\n}\n\nexport class MakeFileDto {\n @IsNotEmpty()\n @IsString()\n @IsIn(['file', 'directory'])\n type: 'file' | 'directory'\n}\n\nexport class CompressFileDto {\n @IsOptional()\n @IsString()\n @RejectIfMatch(regExpInvalidFileName, { message: 'Forbidden characters' })\n name?: string // only used on frontend\n\n @IsDefined()\n @IsBoolean()\n compressInDirectory: boolean\n\n @IsNotEmpty({ each: true })\n @IsArray()\n @ArrayMinSize(1)\n files: { name: string; rootAlias: string; path?: string }[]\n\n @IsNotEmpty()\n @IsString()\n @IsIn([tarExtension, tarGzExtension])\n extension: typeof tarExtension | typeof tarGzExtension\n}\n\nexport class SearchFilesDto {\n @IsNotEmpty()\n @IsString()\n @Transform(({ value }) => (value ? value.trim() : null))\n content: string\n\n @IsOptional()\n @IsBoolean()\n fullText?: boolean = false\n\n @IsOptional()\n @IsInt()\n limit?: number = 100\n}\n"],"names":["CompressFileDto","CopyMoveFileDto","DownloadFileDto","MakeFileDto","SearchFilesDto","overwrite","message","protocols","require_protocol","require_valid_protocol","allow_underscores","allow_trailing_dot","each","tarExtension","tarGzExtension","fullText","limit","value","trim"],"mappings":"AAAA;;;;CAIC;;;;;;;;;;;QA6CYA;eAAAA;;QArCAC;eAAAA;;QAgBAC;eAAAA;;QAcAC;eAAAA;;QA4BAC;eAAAA;;;kCAhEa;gCACwF;4BACpF;wBACQ;0BACO;;;;;;;;;;AAEtC,IAAA,AAAMH,kBAAN,MAAMA;;aAaXI,YAAa;;AACf;;;;;;;;;;QAP0CC,SAAS;;;;;;;;AAS5C,IAAA,AAAMJ,kBAAN,MAAMA;AAYb;;;;QATI,qBAAqB;QACrBK,WAAW;YAAC;YAAQ;SAAQ;QAC5BC,kBAAkB;QAClBC,wBAAwB;QACxB,wCAAwC;QACxCC,mBAAmB;QACnBC,oBAAoB;;;;AAKjB,IAAA,AAAMR,cAAN,MAAMA;AAKb;;;;;QAFS;QAAQ;;;;AAIV,IAAA,AAAMH,kBAAN,MAAMA;AAmBb;;;;;QAhB0CM,SAAS;;;;;;;;;;;QAOnCM,MAAM;;;;;;;;;;QAObC,sBAAY;QAAEC,wBAAc;;;;AAI9B,IAAA,AAAMV,iBAAN,MAAMA;;aAQXW,WAAqB;aAIrBC,QAAiB;;AACnB;;;;sCAVc,EAAEC,KAAK,EAAE,GAAMA,QAAQA,MAAMC,IAAI,KAAK"}
1
+ {"version":3,"sources":["../../../../../backend/src/applications/files/dto/file-operations.dto.ts"],"sourcesContent":["import { Transform } from 'class-transformer'\nimport { ArrayMinSize, IsArray, IsBoolean, IsDefined, IsIn, IsInt, IsNotEmpty, IsOptional, IsString, IsUrl } from 'class-validator'\nimport { RejectIfMatch } from '../../../common/decorators'\nimport { regExpInvalidFileName } from '../../../common/shared'\nimport { tarExtension, tarGzExtension } from '../constants/compress'\n\nexport class CopyMoveFileDto {\n @IsNotEmpty()\n @IsString()\n dstDirectory: string\n\n @IsOptional()\n @IsString()\n @RejectIfMatch(regExpInvalidFileName, { message: 'Forbidden characters' })\n // Renaming scenario\n dstName?: string\n\n @IsOptional()\n @IsBoolean()\n overwrite? = false\n}\n\nexport class DownloadFileDto {\n @IsNotEmpty()\n @IsUrl({\n // only allow HTTP(S)\n protocols: ['http', 'https'],\n require_protocol: true,\n require_valid_protocol: true,\n // reject exotic schemes and underscores\n allow_underscores: false,\n allow_trailing_dot: false\n })\n url: string\n}\n\nexport class MakeFileDto {\n @IsNotEmpty()\n @IsString()\n @IsIn(['file', 'directory'])\n type: 'file' | 'directory'\n}\n\nexport class CompressFileDto {\n @IsOptional()\n @IsString()\n @RejectIfMatch(regExpInvalidFileName, { message: 'Forbidden characters' })\n name?: string // only used on frontend\n\n @IsDefined()\n @IsBoolean()\n compressInDirectory: boolean\n\n @IsNotEmpty({ each: true })\n @IsArray()\n @ArrayMinSize(1)\n files: { name: string; rootAlias: string; path?: string }[]\n\n @IsNotEmpty()\n @IsString()\n @IsIn([tarExtension, tarGzExtension])\n extension: typeof tarExtension | typeof tarGzExtension\n}\n\nexport class SearchFilesDto {\n @IsNotEmpty()\n @IsString()\n @Transform(({ value }) => (value ? value.trim() : null))\n content: string\n\n @IsOptional()\n @IsBoolean()\n fullText?: boolean = false\n\n @IsOptional()\n @IsInt()\n limit?: number = 100\n}\n"],"names":["CompressFileDto","CopyMoveFileDto","DownloadFileDto","MakeFileDto","SearchFilesDto","overwrite","message","protocols","require_protocol","require_valid_protocol","allow_underscores","allow_trailing_dot","each","tarExtension","tarGzExtension","fullText","limit","value","trim"],"mappings":";;;;;;;;;;;QA2CaA;eAAAA;;QArCAC;eAAAA;;QAgBAC;eAAAA;;QAcAC;eAAAA;;QA4BAC;eAAAA;;;kCAhEa;gCACwF;4BACpF;wBACQ;0BACO;;;;;;;;;;AAEtC,IAAA,AAAMH,kBAAN,MAAMA;;aAaXI,YAAa;;AACf;;;;;;;;;;QAP0CC,SAAS;;;;;;;;AAS5C,IAAA,AAAMJ,kBAAN,MAAMA;AAYb;;;;QATI,qBAAqB;QACrBK,WAAW;YAAC;YAAQ;SAAQ;QAC5BC,kBAAkB;QAClBC,wBAAwB;QACxB,wCAAwC;QACxCC,mBAAmB;QACnBC,oBAAoB;;;;AAKjB,IAAA,AAAMR,cAAN,MAAMA;AAKb;;;;;QAFS;QAAQ;;;;AAIV,IAAA,AAAMH,kBAAN,MAAMA;AAmBb;;;;;QAhB0CM,SAAS;;;;;;;;;;;QAOnCM,MAAM;;;;;;;;;;QAObC,sBAAY;QAAEC,wBAAc;;;;AAI9B,IAAA,AAAMV,iBAAN,MAAMA;;aAQXW,WAAqB;aAIrBC,QAAiB;;AACnB;;;;sCAVc,EAAEC,KAAK,EAAE,GAAMA,QAAQA,MAAMC,IAAI,KAAK"}
@@ -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
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../backend/src/applications/files/events/file-task-event.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 EventEmitter from 'node:events'\n\nexport const FileTaskEvent: EventEmitter = new EventEmitter()\n"],"names":["FileTaskEvent","EventEmitter"],"mappings":"AAAA;;;;CAIC;;;;+BAIYA;;;eAAAA;;;mEAFY;;;;;;AAElB,MAAMA,gBAA8B,IAAIC,mBAAY"}
1
+ {"version":3,"sources":["../../../../../backend/src/applications/files/events/file-task-event.ts"],"sourcesContent":["import EventEmitter from 'node:events'\n\nexport const FileTaskEvent: EventEmitter = new EventEmitter()\n"],"names":["FileTaskEvent","EventEmitter"],"mappings":";;;;+BAEaA;;;eAAAA;;;mEAFY;;;;;;AAElB,MAAMA,gBAA8B,IAAIC,mBAAY"}
@@ -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
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../backend/src/applications/files/files-tasks.controller.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 { Controller, Delete, Get, Param, Req, Res, StreamableFile } from '@nestjs/common'\nimport { FastifyReply } from 'fastify'\nimport { FastifySpaceRequest } from '../spaces/interfaces/space-request.interface'\nimport { GetUser } from '../users/decorators/user.decorator'\nimport { UserModel } from '../users/models/user.model'\nimport { API_FILES_TASKS, FILES_ROUTE } from './constants/routes'\nimport { FilesTasksManager } from './services/files-tasks-manager.service'\n\n@Controller(API_FILES_TASKS)\nexport class FilesTasksController {\n constructor(private readonly filesTasksManager: FilesTasksManager) {}\n\n @Get(':id?')\n getTasks(@GetUser() user: UserModel, @Param('id') taskId?: string) {\n return this.filesTasksManager.getTasks(user.id, taskId)\n }\n\n @Delete(':id?')\n deleteTasks(@GetUser() user: UserModel, @Param('id') taskId?: string) {\n return this.filesTasksManager.deleteTasks(user, taskId)\n }\n\n @Get(`${FILES_ROUTE.TASKS_DOWNLOAD}/:id`)\n downloadTaskFile(\n @GetUser() user: UserModel,\n @Param('id') taskId: string,\n @Req() req: FastifySpaceRequest,\n @Res({ passthrough: true }) res: FastifyReply\n ): Promise<StreamableFile> {\n return this.filesTasksManager.downloadArchive(user, taskId, req, res)\n }\n}\n"],"names":["FilesTasksController","getTasks","user","taskId","filesTasksManager","id","deleteTasks","downloadTaskFile","req","res","downloadArchive","FILES_ROUTE","TASKS_DOWNLOAD","passthrough"],"mappings":"AAAA;;;;CAIC;;;;+BAWYA;;;eAAAA;;;wBAT4D;yBAC5C;uCACO;+BACZ;2BACE;wBACmB;0CACX;;;;;;;;;;;;;;;AAG3B,IAAA,AAAMA,uBAAN,MAAMA;IAIXC,SAAS,AAAWC,IAAe,EAAE,AAAaC,MAAe,EAAE;QACjE,OAAO,IAAI,CAACC,iBAAiB,CAACH,QAAQ,CAACC,KAAKG,EAAE,EAAEF;IAClD;IAGAG,YAAY,AAAWJ,IAAe,EAAE,AAAaC,MAAe,EAAE;QACpE,OAAO,IAAI,CAACC,iBAAiB,CAACE,WAAW,CAACJ,MAAMC;IAClD;IAGAI,iBACE,AAAWL,IAAe,EAC1B,AAAaC,MAAc,EAC3B,AAAOK,GAAwB,EAC/B,AAA4BC,GAAiB,EACpB;QACzB,OAAO,IAAI,CAACL,iBAAiB,CAACM,eAAe,CAACR,MAAMC,QAAQK,KAAKC;IACnE;IApBA,YAAY,AAAiBL,iBAAoC,CAAE;aAAtCA,oBAAAA;IAAuC;AAqBtE;;;;;;;;;;;;;;;;;;;;;;;;wBATUO,mBAAW,CAACC,cAAc,CAAC,IAAI;;;;;QAK9BC,aAAa"}
1
+ {"version":3,"sources":["../../../../backend/src/applications/files/files-tasks.controller.ts"],"sourcesContent":["import { Controller, Delete, Get, Param, Req, Res, StreamableFile } from '@nestjs/common'\nimport { FastifyReply } from 'fastify'\nimport { FastifySpaceRequest } from '../spaces/interfaces/space-request.interface'\nimport { GetUser } from '../users/decorators/user.decorator'\nimport { UserModel } from '../users/models/user.model'\nimport { API_FILES_TASKS, FILES_ROUTE } from './constants/routes'\nimport { FilesTasksManager } from './services/files-tasks-manager.service'\n\n@Controller(API_FILES_TASKS)\nexport class FilesTasksController {\n constructor(private readonly filesTasksManager: FilesTasksManager) {}\n\n @Get(':id?')\n getTasks(@GetUser() user: UserModel, @Param('id') taskId?: string) {\n return this.filesTasksManager.getTasks(user.id, taskId)\n }\n\n @Delete(':id?')\n deleteTasks(@GetUser() user: UserModel, @Param('id') taskId?: string) {\n return this.filesTasksManager.deleteTasks(user, taskId)\n }\n\n @Get(`${FILES_ROUTE.TASKS_DOWNLOAD}/:id`)\n downloadTaskFile(\n @GetUser() user: UserModel,\n @Param('id') taskId: string,\n @Req() req: FastifySpaceRequest,\n @Res({ passthrough: true }) res: FastifyReply\n ): Promise<StreamableFile> {\n return this.filesTasksManager.downloadArchive(user, taskId, req, res)\n }\n}\n"],"names":["FilesTasksController","getTasks","user","taskId","filesTasksManager","id","deleteTasks","downloadTaskFile","req","res","downloadArchive","FILES_ROUTE","TASKS_DOWNLOAD","passthrough"],"mappings":";;;;+BASaA;;;eAAAA;;;wBAT4D;yBAC5C;uCACO;+BACZ;2BACE;wBACmB;0CACX;;;;;;;;;;;;;;;AAG3B,IAAA,AAAMA,uBAAN,MAAMA;IAIXC,SAAS,AAAWC,IAAe,EAAE,AAAaC,MAAe,EAAE;QACjE,OAAO,IAAI,CAACC,iBAAiB,CAACH,QAAQ,CAACC,KAAKG,EAAE,EAAEF;IAClD;IAGAG,YAAY,AAAWJ,IAAe,EAAE,AAAaC,MAAe,EAAE;QACpE,OAAO,IAAI,CAACC,iBAAiB,CAACE,WAAW,CAACJ,MAAMC;IAClD;IAGAI,iBACE,AAAWL,IAAe,EAC1B,AAAaC,MAAc,EAC3B,AAAOK,GAAwB,EAC/B,AAA4BC,GAAiB,EACpB;QACzB,OAAO,IAAI,CAACL,iBAAiB,CAACM,eAAe,CAACR,MAAMC,QAAQK,KAAKC;IACnE;IApBA,YAAY,AAAiBL,iBAAoC,CAAE;aAAtCA,oBAAAA;IAAuC;AAqBtE;;;;;;;;;;;;;;;;;;;;;;;;wBATUO,mBAAW,CAACC,cAAc,CAAC,IAAI;;;;;QAK9BC,aAAa"}
@@ -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
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../backend/src/applications/files/files-tasks.controller.spec.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 { Test, TestingModule } from '@nestjs/testing'\nimport { Cache } from '../../infrastructure/cache/services/cache.service'\nimport { FilesTasksController } from './files-tasks.controller'\nimport { FilesMethods } from './services/files-methods.service'\nimport { FilesTasksManager } from './services/files-tasks-manager.service'\n\ndescribe(FilesTasksController.name, () => {\n let controller: FilesTasksController\n let filesTasksManager: { getTasks: jest.Mock; deleteTasks: jest.Mock; downloadArchive: jest.Mock }\n\n beforeAll(async () => {\n filesTasksManager = {\n getTasks: jest.fn(),\n deleteTasks: jest.fn(),\n downloadArchive: jest.fn()\n }\n\n const module: TestingModule = await Test.createTestingModule({\n controllers: [FilesTasksController],\n providers: [\n {\n provide: Cache,\n useValue: {}\n },\n { provide: FilesMethods, useValue: {} },\n { provide: FilesTasksManager, useValue: filesTasksManager }\n ]\n }).compile()\n\n controller = module.get<FilesTasksController>(FilesTasksController)\n })\n\n beforeEach(() => {\n jest.clearAllMocks()\n })\n\n it('should be defined', () => {\n expect(controller).toBeDefined()\n })\n\n it('getTasks should call FilesTasksManager.getTasks with user.id and taskId and return the value', () => {\n const user = { id: 'user-1' } as any\n const taskId = 'task-123'\n const expected = [{ id: 'task-123' }]\n\n filesTasksManager.getTasks.mockReturnValueOnce(expected)\n\n const result = controller.getTasks(user, taskId)\n\n expect(filesTasksManager.getTasks).toHaveBeenCalledTimes(1)\n expect(filesTasksManager.getTasks).toHaveBeenCalledWith('user-1', 'task-123')\n expect(result).toBe(expected)\n })\n\n it('getTasks without taskId should pass undefined', () => {\n const user = { id: 'user-2' } as any\n const expected = [{ id: 'task-a' }, { id: 'task-b' }]\n\n filesTasksManager.getTasks.mockReturnValueOnce(expected)\n\n const result = controller.getTasks(user)\n\n expect(filesTasksManager.getTasks).toHaveBeenCalledTimes(1)\n expect(filesTasksManager.getTasks).toHaveBeenCalledWith('user-2', undefined)\n expect(result).toBe(expected)\n })\n\n it('deleteTasks should call FilesTasksManager.deleteTasks with user and taskId and return the value', () => {\n const user = { id: 'user-3', name: 'Alice' } as any\n const taskId = 'task-del-1'\n const expected = { deleted: true }\n\n filesTasksManager.deleteTasks.mockReturnValueOnce(expected)\n\n const result = controller.deleteTasks(user, taskId)\n\n expect(filesTasksManager.deleteTasks).toHaveBeenCalledTimes(1)\n expect(filesTasksManager.deleteTasks).toHaveBeenCalledWith(user, 'task-del-1')\n expect(result).toBe(expected)\n })\n\n it('deleteTasks without taskId must pass undefined', () => {\n const user = { id: 'user-4' } as any\n const expected = { deletedAll: true }\n\n filesTasksManager.deleteTasks.mockReturnValueOnce(expected)\n\n const result = controller.deleteTasks(user)\n\n expect(filesTasksManager.deleteTasks).toHaveBeenCalledTimes(1)\n expect(filesTasksManager.deleteTasks).toHaveBeenCalledWith(user, undefined)\n expect(result).toBe(expected)\n })\n\n it('downloadTaskFile should delegate to FilesTasksManager.downloadArchive and return the StreamableFile', async () => {\n const user = { id: 'user-5' } as any\n const taskId = 'task-dl-42'\n const req = {} as any\n const res = {} as any\n const streamable = { some: 'stream' } as any\n\n filesTasksManager.downloadArchive.mockResolvedValueOnce(streamable)\n\n const result = await controller.downloadTaskFile(user, taskId, req, res)\n\n expect(filesTasksManager.downloadArchive).toHaveBeenCalledTimes(1)\n expect(filesTasksManager.downloadArchive).toHaveBeenCalledWith(user, 'task-dl-42', req, res)\n expect(result).toBe(streamable)\n })\n})\n"],"names":["describe","FilesTasksController","name","controller","filesTasksManager","beforeAll","getTasks","jest","fn","deleteTasks","downloadArchive","module","Test","createTestingModule","controllers","providers","provide","Cache","useValue","FilesMethods","FilesTasksManager","compile","get","beforeEach","clearAllMocks","it","expect","toBeDefined","user","id","taskId","expected","mockReturnValueOnce","result","toHaveBeenCalledTimes","toHaveBeenCalledWith","toBe","undefined","deleted","deletedAll","req","res","streamable","some","mockResolvedValueOnce","downloadTaskFile"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../backend/src/applications/files/files-tasks.controller.spec.ts"],"sourcesContent":["import { Test, TestingModule } from '@nestjs/testing'\nimport { Cache } from '../../infrastructure/cache/services/cache.service'\nimport { FilesTasksController } from './files-tasks.controller'\nimport { FilesMethods } from './services/files-methods.service'\nimport { FilesTasksManager } from './services/files-tasks-manager.service'\n\ndescribe(FilesTasksController.name, () => {\n let controller: FilesTasksController\n let filesTasksManager: { getTasks: jest.Mock; deleteTasks: jest.Mock; downloadArchive: jest.Mock }\n\n beforeAll(async () => {\n filesTasksManager = {\n getTasks: jest.fn(),\n deleteTasks: jest.fn(),\n downloadArchive: jest.fn()\n }\n\n const module: TestingModule = await Test.createTestingModule({\n controllers: [FilesTasksController],\n providers: [\n {\n provide: Cache,\n useValue: {}\n },\n { provide: FilesMethods, useValue: {} },\n { provide: FilesTasksManager, useValue: filesTasksManager }\n ]\n }).compile()\n\n controller = module.get<FilesTasksController>(FilesTasksController)\n })\n\n beforeEach(() => {\n jest.clearAllMocks()\n })\n\n it('should be defined', () => {\n expect(controller).toBeDefined()\n })\n\n it('getTasks should call FilesTasksManager.getTasks with user.id and taskId and return the value', () => {\n const user = { id: 'user-1' } as any\n const taskId = 'task-123'\n const expected = [{ id: 'task-123' }]\n\n filesTasksManager.getTasks.mockReturnValueOnce(expected)\n\n const result = controller.getTasks(user, taskId)\n\n expect(filesTasksManager.getTasks).toHaveBeenCalledTimes(1)\n expect(filesTasksManager.getTasks).toHaveBeenCalledWith('user-1', 'task-123')\n expect(result).toBe(expected)\n })\n\n it('getTasks without taskId should pass undefined', () => {\n const user = { id: 'user-2' } as any\n const expected = [{ id: 'task-a' }, { id: 'task-b' }]\n\n filesTasksManager.getTasks.mockReturnValueOnce(expected)\n\n const result = controller.getTasks(user)\n\n expect(filesTasksManager.getTasks).toHaveBeenCalledTimes(1)\n expect(filesTasksManager.getTasks).toHaveBeenCalledWith('user-2', undefined)\n expect(result).toBe(expected)\n })\n\n it('deleteTasks should call FilesTasksManager.deleteTasks with user and taskId and return the value', () => {\n const user = { id: 'user-3', name: 'Alice' } as any\n const taskId = 'task-del-1'\n const expected = { deleted: true }\n\n filesTasksManager.deleteTasks.mockReturnValueOnce(expected)\n\n const result = controller.deleteTasks(user, taskId)\n\n expect(filesTasksManager.deleteTasks).toHaveBeenCalledTimes(1)\n expect(filesTasksManager.deleteTasks).toHaveBeenCalledWith(user, 'task-del-1')\n expect(result).toBe(expected)\n })\n\n it('deleteTasks without taskId must pass undefined', () => {\n const user = { id: 'user-4' } as any\n const expected = { deletedAll: true }\n\n filesTasksManager.deleteTasks.mockReturnValueOnce(expected)\n\n const result = controller.deleteTasks(user)\n\n expect(filesTasksManager.deleteTasks).toHaveBeenCalledTimes(1)\n expect(filesTasksManager.deleteTasks).toHaveBeenCalledWith(user, undefined)\n expect(result).toBe(expected)\n })\n\n it('downloadTaskFile should delegate to FilesTasksManager.downloadArchive and return the StreamableFile', async () => {\n const user = { id: 'user-5' } as any\n const taskId = 'task-dl-42'\n const req = {} as any\n const res = {} as any\n const streamable = { some: 'stream' } as any\n\n filesTasksManager.downloadArchive.mockResolvedValueOnce(streamable)\n\n const result = await controller.downloadTaskFile(user, taskId, req, res)\n\n expect(filesTasksManager.downloadArchive).toHaveBeenCalledTimes(1)\n expect(filesTasksManager.downloadArchive).toHaveBeenCalledWith(user, 'task-dl-42', req, res)\n expect(result).toBe(streamable)\n })\n})\n"],"names":["describe","FilesTasksController","name","controller","filesTasksManager","beforeAll","getTasks","jest","fn","deleteTasks","downloadArchive","module","Test","createTestingModule","controllers","providers","provide","Cache","useValue","FilesMethods","FilesTasksManager","compile","get","beforeEach","clearAllMocks","it","expect","toBeDefined","user","id","taskId","expected","mockReturnValueOnce","result","toHaveBeenCalledTimes","toHaveBeenCalledWith","toBe","undefined","deleted","deletedAll","req","res","streamable","some","mockResolvedValueOnce","downloadTaskFile"],"mappings":";;;;yBAAoC;8BACd;sCACe;qCACR;0CACK;AAElCA,SAASC,0CAAoB,CAACC,IAAI,EAAE;IAClC,IAAIC;IACJ,IAAIC;IAEJC,UAAU;QACRD,oBAAoB;YAClBE,UAAUC,KAAKC,EAAE;YACjBC,aAAaF,KAAKC,EAAE;YACpBE,iBAAiBH,KAAKC,EAAE;QAC1B;QAEA,MAAMG,SAAwB,MAAMC,aAAI,CAACC,mBAAmB,CAAC;YAC3DC,aAAa;gBAACb,0CAAoB;aAAC;YACnCc,WAAW;gBACT;oBACEC,SAASC,mBAAK;oBACdC,UAAU,CAAC;gBACb;gBACA;oBAAEF,SAASG,iCAAY;oBAAED,UAAU,CAAC;gBAAE;gBACtC;oBAAEF,SAASI,2CAAiB;oBAAEF,UAAUd;gBAAkB;aAC3D;QACH,GAAGiB,OAAO;QAEVlB,aAAaQ,OAAOW,GAAG,CAAuBrB,0CAAoB;IACpE;IAEAsB,WAAW;QACThB,KAAKiB,aAAa;IACpB;IAEAC,GAAG,qBAAqB;QACtBC,OAAOvB,YAAYwB,WAAW;IAChC;IAEAF,GAAG,gGAAgG;QACjG,MAAMG,OAAO;YAAEC,IAAI;QAAS;QAC5B,MAAMC,SAAS;QACf,MAAMC,WAAW;YAAC;gBAAEF,IAAI;YAAW;SAAE;QAErCzB,kBAAkBE,QAAQ,CAAC0B,mBAAmB,CAACD;QAE/C,MAAME,SAAS9B,WAAWG,QAAQ,CAACsB,MAAME;QAEzCJ,OAAOtB,kBAAkBE,QAAQ,EAAE4B,qBAAqB,CAAC;QACzDR,OAAOtB,kBAAkBE,QAAQ,EAAE6B,oBAAoB,CAAC,UAAU;QAClET,OAAOO,QAAQG,IAAI,CAACL;IACtB;IAEAN,GAAG,iDAAiD;QAClD,MAAMG,OAAO;YAAEC,IAAI;QAAS;QAC5B,MAAME,WAAW;YAAC;gBAAEF,IAAI;YAAS;YAAG;gBAAEA,IAAI;YAAS;SAAE;QAErDzB,kBAAkBE,QAAQ,CAAC0B,mBAAmB,CAACD;QAE/C,MAAME,SAAS9B,WAAWG,QAAQ,CAACsB;QAEnCF,OAAOtB,kBAAkBE,QAAQ,EAAE4B,qBAAqB,CAAC;QACzDR,OAAOtB,kBAAkBE,QAAQ,EAAE6B,oBAAoB,CAAC,UAAUE;QAClEX,OAAOO,QAAQG,IAAI,CAACL;IACtB;IAEAN,GAAG,mGAAmG;QACpG,MAAMG,OAAO;YAAEC,IAAI;YAAU3B,MAAM;QAAQ;QAC3C,MAAM4B,SAAS;QACf,MAAMC,WAAW;YAAEO,SAAS;QAAK;QAEjClC,kBAAkBK,WAAW,CAACuB,mBAAmB,CAACD;QAElD,MAAME,SAAS9B,WAAWM,WAAW,CAACmB,MAAME;QAE5CJ,OAAOtB,kBAAkBK,WAAW,EAAEyB,qBAAqB,CAAC;QAC5DR,OAAOtB,kBAAkBK,WAAW,EAAE0B,oBAAoB,CAACP,MAAM;QACjEF,OAAOO,QAAQG,IAAI,CAACL;IACtB;IAEAN,GAAG,kDAAkD;QACnD,MAAMG,OAAO;YAAEC,IAAI;QAAS;QAC5B,MAAME,WAAW;YAAEQ,YAAY;QAAK;QAEpCnC,kBAAkBK,WAAW,CAACuB,mBAAmB,CAACD;QAElD,MAAME,SAAS9B,WAAWM,WAAW,CAACmB;QAEtCF,OAAOtB,kBAAkBK,WAAW,EAAEyB,qBAAqB,CAAC;QAC5DR,OAAOtB,kBAAkBK,WAAW,EAAE0B,oBAAoB,CAACP,MAAMS;QACjEX,OAAOO,QAAQG,IAAI,CAACL;IACtB;IAEAN,GAAG,uGAAuG;QACxG,MAAMG,OAAO;YAAEC,IAAI;QAAS;QAC5B,MAAMC,SAAS;QACf,MAAMU,MAAM,CAAC;QACb,MAAMC,MAAM,CAAC;QACb,MAAMC,aAAa;YAAEC,MAAM;QAAS;QAEpCvC,kBAAkBM,eAAe,CAACkC,qBAAqB,CAACF;QAExD,MAAMT,SAAS,MAAM9B,WAAW0C,gBAAgB,CAACjB,MAAME,QAAQU,KAAKC;QAEpEf,OAAOtB,kBAAkBM,eAAe,EAAEwB,qBAAqB,CAAC;QAChER,OAAOtB,kBAAkBM,eAAe,EAAEyB,oBAAoB,CAACP,MAAM,cAAcY,KAAKC;QACxFf,OAAOO,QAAQG,IAAI,CAACM;IACtB;AACF"}
@@ -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
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../backend/src/applications/files/files.config.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 { Type } from 'class-transformer'\nimport { IsBoolean, IsInt, IsNotEmpty, IsNotEmptyObject, IsString, ValidateNested } from 'class-validator'\nimport { CollaboraOnlineConfig } from './modules/collabora-online/collabora-online.config'\nimport { OnlyOfficeConfig } from './modules/only-office/only-office.config'\n\nexport class FilesConfig {\n @IsNotEmpty()\n @IsString()\n dataPath: string\n\n @IsNotEmpty()\n @IsString()\n usersPath: string\n\n @IsNotEmpty()\n @IsString()\n spacesPath: string\n\n @IsNotEmpty()\n @IsString()\n tmpPath: string\n\n @IsInt()\n maxUploadSize: number = 5368709120 // 5 GB\n\n @IsBoolean()\n contentIndexing: boolean = true\n\n @IsBoolean()\n showHiddenFiles: boolean = false\n\n @IsNotEmptyObject()\n @ValidateNested()\n @Type(() => OnlyOfficeConfig)\n onlyoffice: OnlyOfficeConfig = new OnlyOfficeConfig()\n\n @IsNotEmptyObject()\n @ValidateNested()\n @Type(() => CollaboraOnlineConfig)\n collabora: CollaboraOnlineConfig = new CollaboraOnlineConfig()\n}\n"],"names":["FilesConfig","maxUploadSize","contentIndexing","showHiddenFiles","onlyoffice","OnlyOfficeConfig","collabora","CollaboraOnlineConfig"],"mappings":"AAAA;;;;CAIC;;;;+BAOYA;;;eAAAA;;;kCALQ;gCACoE;uCACnD;kCACL;;;;;;;;;;AAE1B,IAAA,AAAMA,cAAN,MAAMA;;aAkBXC,gBAAwB,YAAW,OAAO;aAG1CC,kBAA2B;aAG3BC,kBAA2B;aAK3BC,aAA+B,IAAIC,kCAAgB;aAKnDC,YAAmC,IAAIC,4CAAqB;;AAC9D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oCAPcF,kCAAgB;;;;;;oCAKhBE,4CAAqB"}
1
+ {"version":3,"sources":["../../../../backend/src/applications/files/files.config.ts"],"sourcesContent":["import { Type } from 'class-transformer'\nimport { IsBoolean, IsInt, IsNotEmpty, IsNotEmptyObject, IsString, ValidateNested } from 'class-validator'\nimport { CollaboraOnlineConfig } from './modules/collabora-online/collabora-online.config'\nimport { OnlyOfficeConfig } from './modules/only-office/only-office.config'\n\nexport class FilesConfig {\n @IsNotEmpty()\n @IsString()\n dataPath: string\n\n @IsNotEmpty()\n @IsString()\n usersPath: string\n\n @IsNotEmpty()\n @IsString()\n spacesPath: string\n\n @IsNotEmpty()\n @IsString()\n tmpPath: string\n\n @IsInt()\n maxUploadSize: number = 5368709120 // 5 GB\n\n @IsBoolean()\n contentIndexing: boolean = true\n\n @IsBoolean()\n showHiddenFiles: boolean = false\n\n @IsNotEmptyObject()\n @ValidateNested()\n @Type(() => OnlyOfficeConfig)\n onlyoffice: OnlyOfficeConfig = new OnlyOfficeConfig()\n\n @IsNotEmptyObject()\n @ValidateNested()\n @Type(() => CollaboraOnlineConfig)\n collabora: CollaboraOnlineConfig = new CollaboraOnlineConfig()\n}\n"],"names":["FilesConfig","maxUploadSize","contentIndexing","showHiddenFiles","onlyoffice","OnlyOfficeConfig","collabora","CollaboraOnlineConfig"],"mappings":";;;;+BAKaA;;;eAAAA;;;kCALQ;gCACoE;uCACnD;kCACL;;;;;;;;;;AAE1B,IAAA,AAAMA,cAAN,MAAMA;;aAkBXC,gBAAwB,YAAW,OAAO;aAG1CC,kBAA2B;aAG3BC,kBAA2B;aAK3BC,aAA+B,IAAIC,kCAAgB;aAKnDC,YAAmC,IAAIC,4CAAqB;;AAC9D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oCAPcF,kCAAgB;;;;;;oCAKhBE,4CAAqB"}
@@ -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
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../backend/src/applications/files/files.controller.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 {\n Body,\n Controller,\n Copy,\n Delete,\n Get,\n Head,\n Lock,\n Logger,\n Move,\n ParseBoolPipe,\n ParseIntPipe,\n Patch,\n Post,\n Put,\n Query,\n Req,\n Res,\n Search,\n StreamableFile,\n Unlock,\n UseGuards,\n UseInterceptors\n} from '@nestjs/common'\nimport { FastifyReply } from 'fastify'\nimport { webpMimeType } from '../../common/image'\nimport { ContextInterceptor } from '../../infrastructure/context/interceptors/context.interceptor'\nimport { SkipSpaceGuard } from '../spaces/decorators/space-skip-guard.decorator'\nimport { SkipSpacePermissionsCheck } from '../spaces/decorators/space-skip-permissions.decorator'\nimport { GetSpace } from '../spaces/decorators/space.decorator'\nimport { SpaceGuard } from '../spaces/guards/space.guard'\nimport { FastifySpaceRequest } from '../spaces/interfaces/space-request.interface'\nimport { SpaceEnv } from '../spaces/models/space-env.model'\nimport { GetUser } from '../users/decorators/user.decorator'\nimport { UserModel } from '../users/models/user.model'\nimport { FILE_OPERATION, FORCE_AS_FILE_OWNER } from './constants/operations'\nimport { FILES_ROUTE } from './constants/routes'\nimport { CompressFileDto, CopyMoveFileDto, DownloadFileDto, MakeFileDto, SearchFilesDto } from './dto/file-operations.dto'\nimport { FileLockProps } from './interfaces/file-props.interface'\nimport { FileTask } from './models/file-task'\nimport { FileContent } from './schemas/file-content.interface'\nimport { FileRecent } from './schemas/file-recent.interface'\nimport { FilesMethods } from './services/files-methods.service'\nimport { FilesRecents } from './services/files-recents.service'\nimport { FilesSearchManager } from './services/files-search-manager.service'\nimport { FilesTasksManager } from './services/files-tasks-manager.service'\n\n@Controller(FILES_ROUTE.BASE)\n@UseGuards(SpaceGuard)\nexport class FilesController {\n private readonly logger = new Logger(FilesController.name)\n\n constructor(\n private readonly filesMethods: FilesMethods,\n private readonly filesTasksManager: FilesTasksManager,\n private readonly filesRecents: FilesRecents,\n private readonly filesSearch: FilesSearchManager\n ) {}\n\n // OPERATIONS\n\n @Head(`${FILES_ROUTE.OPERATION}/*`)\n async head(@Req() req: FastifySpaceRequest, @Res({ passthrough: true }) res: FastifyReply): Promise<StreamableFile> {\n return this.filesMethods.headOrGet(req, res)\n }\n\n @Get(`${FILES_ROUTE.OPERATION}/*`)\n async download(@Req() req: FastifySpaceRequest, @Res({ passthrough: true }) res: FastifyReply): Promise<StreamableFile> {\n return this.filesMethods.headOrGet(req, res)\n }\n\n @Post(`${FILES_ROUTE.OPERATION}/${FILE_OPERATION.MAKE}/*`)\n async make(@GetUser() user: UserModel, @GetSpace() space: SpaceEnv, @Body() makeFileDto: MakeFileDto): Promise<void> {\n return this.filesMethods.make(user, space, makeFileDto)\n }\n\n @Post(`${FILES_ROUTE.OPERATION}/${FILE_OPERATION.UPLOAD}/*`)\n async uploadCreate(@Req() req: FastifySpaceRequest): Promise<void> {\n return this.filesMethods.upload(req)\n }\n\n @Put(`${FILES_ROUTE.OPERATION}/${FILE_OPERATION.UPLOAD}/*`)\n async uploadOverwrite(@Req() req: FastifySpaceRequest): Promise<void> {\n return this.filesMethods.upload(req)\n }\n\n @Patch(`${FILES_ROUTE.OPERATION}/${FILE_OPERATION.UPLOAD}/*`)\n async uploadContent(@Req() req: FastifySpaceRequest): Promise<void> {\n return this.filesMethods.upload(req)\n }\n\n @Copy(`${FILES_ROUTE.OPERATION}/*`)\n async copy(\n @GetUser() user: UserModel,\n @GetSpace() space: SpaceEnv,\n @Body() copyMoveFileDto: CopyMoveFileDto\n ): Promise<{\n path: string\n name: string\n }> {\n return this.filesMethods.copy(user, space, copyMoveFileDto)\n }\n\n @Move(`${FILES_ROUTE.OPERATION}/*`)\n async move(\n @GetUser() user: UserModel,\n @GetSpace() space: SpaceEnv,\n @Body() copyMoveFileDto: CopyMoveFileDto\n ): Promise<{\n path: string\n name: string\n }> {\n return this.filesMethods.move(user, space, copyMoveFileDto)\n }\n\n @Delete(`${FILES_ROUTE.OPERATION}/*`)\n async delete(@GetUser() user: UserModel, @GetSpace() space: SpaceEnv): Promise<void> {\n return this.filesMethods.delete(user, space)\n }\n\n @Get(`${FILES_ROUTE.OPERATION}/${FILE_OPERATION.THUMBNAIL}/*`)\n async genThumbnail(\n @GetSpace() space: SpaceEnv,\n @Query('size', new ParseIntPipe({ optional: true })) size = 256,\n @Res() res: FastifyReply\n ): Promise<StreamableFile> {\n if (size > 1024) size = 1024\n const thumb = await this.filesMethods.genThumbnail(space, size)\n res.type(webpMimeType)\n return res.send(thumb)\n }\n\n @Lock(`${FILES_ROUTE.OPERATION}/*`)\n async lock(@GetUser() user: UserModel, @GetSpace() space: SpaceEnv): Promise<FileLockProps> {\n return this.filesMethods.lock(user, space)\n }\n\n @Unlock(`${FILES_ROUTE.OPERATION}/*`)\n async unlock(\n @GetUser() user: UserModel,\n @GetSpace() space: SpaceEnv,\n @Query(FORCE_AS_FILE_OWNER, new ParseBoolPipe({ optional: true })) forceAsFileOwner?: boolean\n ): Promise<void> {\n return this.filesMethods.unlock(user, space, forceAsFileOwner)\n }\n\n @Unlock(`${FILES_ROUTE.OPERATION}/${FILE_OPERATION.UNLOCK_REQUEST}/*`)\n @UseInterceptors(ContextInterceptor)\n async unlockRequest(@GetUser() user: UserModel, @GetSpace() space: SpaceEnv): Promise<void> {\n return this.filesMethods.unlockRequest(user, space)\n }\n\n @Get(`${FILES_ROUTE.OPERATION}/${FILE_OPERATION.GET_SIZE}/*`)\n async getSize(@GetSpace() space: SpaceEnv): Promise<{ size: number }> {\n return this.filesMethods.getSize(space)\n }\n\n // TASKS OPERATIONS\n\n @Post(`${FILES_ROUTE.TASK_OPERATION}/${FILE_OPERATION.DOWNLOAD}/*`)\n async downloadFromUrlAsTask(@GetUser() user: UserModel, @GetSpace() space: SpaceEnv, @Body() downloadFileDto: DownloadFileDto): Promise<FileTask> {\n return this.filesTasksManager.createTask(FILE_OPERATION.DOWNLOAD, user, space, downloadFileDto, this.filesMethods.downloadFromUrl.name)\n }\n\n @Post(`${FILES_ROUTE.TASK_OPERATION}/${FILE_OPERATION.COMPRESS}/*`)\n @SkipSpacePermissionsCheck()\n // Can be used to create or download an archive of files; permissions are checked later\n async compressAsTask(@Req() req: FastifySpaceRequest, @Body() compressFileDto: CompressFileDto): Promise<FileTask> {\n if (compressFileDto.compressInDirectory) {\n await SpaceGuard.checkPermissions(req, this.logger)\n }\n return this.filesTasksManager.createTask(FILE_OPERATION.COMPRESS, req.user, req.space, compressFileDto, this.filesMethods.compress.name)\n }\n\n @Post(`${FILES_ROUTE.TASK_OPERATION}/${FILE_OPERATION.DECOMPRESS}/*`)\n async decompressAsTask(@GetUser() user: UserModel, @GetSpace() space: SpaceEnv): Promise<FileTask> {\n return this.filesTasksManager.createTask(FILE_OPERATION.DECOMPRESS, user, space, null, this.filesMethods.decompress.name)\n }\n\n @Copy(`${FILES_ROUTE.TASK_OPERATION}/*`)\n async copyAsTask(@GetUser() user: UserModel, @GetSpace() space: SpaceEnv, @Body() copyMoveFileDto: CopyMoveFileDto): Promise<FileTask> {\n return this.filesTasksManager.createTask(FILE_OPERATION.COPY, user, space, copyMoveFileDto, this.filesMethods.copy.name)\n }\n\n @Move(`${FILES_ROUTE.TASK_OPERATION}/*`)\n async moveAsTask(@GetUser() user: UserModel, @GetSpace() space: SpaceEnv, @Body() copyMoveFileDto: CopyMoveFileDto): Promise<FileTask> {\n return this.filesTasksManager.createTask(FILE_OPERATION.MOVE, user, space, copyMoveFileDto, this.filesMethods.move.name)\n }\n\n @Delete(`${FILES_ROUTE.TASK_OPERATION}/*`)\n async deleteAsTask(@GetUser() user: UserModel, @GetSpace() space: SpaceEnv): Promise<FileTask> {\n return this.filesTasksManager.createTask(FILE_OPERATION.DELETE, user, space, null, this.filesMethods.delete.name)\n }\n\n // RECENT FILES\n\n @Get(FILES_ROUTE.RECENTS)\n @SkipSpaceGuard()\n getRecents(@GetUser() user: UserModel, @Query('limit') limit: number = 10): Promise<FileRecent[]> {\n return this.filesRecents.getRecents(user, limit)\n }\n\n // SEARCH FILES\n\n @Search(FILES_ROUTE.SEARCH)\n @SkipSpaceGuard()\n search(@GetUser() user: UserModel, @Body() search: SearchFilesDto): Promise<FileContent[]> {\n return this.filesSearch.search(user, search)\n }\n}\n"],"names":["FilesController","head","req","res","filesMethods","headOrGet","download","make","user","space","makeFileDto","uploadCreate","upload","uploadOverwrite","uploadContent","copy","copyMoveFileDto","move","delete","genThumbnail","size","thumb","type","webpMimeType","send","lock","unlock","forceAsFileOwner","unlockRequest","getSize","downloadFromUrlAsTask","downloadFileDto","filesTasksManager","createTask","FILE_OPERATION","DOWNLOAD","downloadFromUrl","name","compressAsTask","compressFileDto","compressInDirectory","SpaceGuard","checkPermissions","logger","COMPRESS","compress","decompressAsTask","DECOMPRESS","decompress","copyAsTask","COPY","moveAsTask","MOVE","deleteAsTask","DELETE","getRecents","limit","filesRecents","search","filesSearch","Logger","FILES_ROUTE","OPERATION","passthrough","MAKE","UPLOAD","THUMBNAIL","ParseIntPipe","optional","ParseBoolPipe","UNLOCK_REQUEST","GET_SIZE","TASK_OPERATION","RECENTS","SEARCH","BASE"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../backend/src/applications/files/files.controller.ts"],"sourcesContent":["import {\n Body,\n Controller,\n Copy,\n Delete,\n Get,\n Head,\n Lock,\n Logger,\n Move,\n ParseBoolPipe,\n ParseIntPipe,\n Patch,\n Post,\n Put,\n Query,\n Req,\n Res,\n Search,\n StreamableFile,\n Unlock,\n UseGuards,\n UseInterceptors\n} from '@nestjs/common'\nimport { FastifyReply } from 'fastify'\nimport { webpMimeType } from '../../common/image'\nimport { ContextInterceptor } from '../../infrastructure/context/interceptors/context.interceptor'\nimport { SkipSpaceGuard } from '../spaces/decorators/space-skip-guard.decorator'\nimport { SkipSpacePermissionsCheck } from '../spaces/decorators/space-skip-permissions.decorator'\nimport { GetSpace } from '../spaces/decorators/space.decorator'\nimport { SpaceGuard } from '../spaces/guards/space.guard'\nimport { FastifySpaceRequest } from '../spaces/interfaces/space-request.interface'\nimport { SpaceEnv } from '../spaces/models/space-env.model'\nimport { GetUser } from '../users/decorators/user.decorator'\nimport { UserModel } from '../users/models/user.model'\nimport { FILE_OPERATION, FORCE_AS_FILE_OWNER } from './constants/operations'\nimport { FILES_ROUTE } from './constants/routes'\nimport { CompressFileDto, CopyMoveFileDto, DownloadFileDto, MakeFileDto, SearchFilesDto } from './dto/file-operations.dto'\nimport { FileLockProps } from './interfaces/file-props.interface'\nimport { FileTask } from './models/file-task'\nimport { FileContent } from './schemas/file-content.interface'\nimport { FileRecent } from './schemas/file-recent.interface'\nimport { FilesMethods } from './services/files-methods.service'\nimport { FilesRecents } from './services/files-recents.service'\nimport { FilesSearchManager } from './services/files-search-manager.service'\nimport { FilesTasksManager } from './services/files-tasks-manager.service'\n\n@Controller(FILES_ROUTE.BASE)\n@UseGuards(SpaceGuard)\nexport class FilesController {\n private readonly logger = new Logger(FilesController.name)\n\n constructor(\n private readonly filesMethods: FilesMethods,\n private readonly filesTasksManager: FilesTasksManager,\n private readonly filesRecents: FilesRecents,\n private readonly filesSearch: FilesSearchManager\n ) {}\n\n // OPERATIONS\n\n @Head(`${FILES_ROUTE.OPERATION}/*`)\n async head(@Req() req: FastifySpaceRequest, @Res({ passthrough: true }) res: FastifyReply): Promise<StreamableFile> {\n return this.filesMethods.headOrGet(req, res)\n }\n\n @Get(`${FILES_ROUTE.OPERATION}/*`)\n async download(@Req() req: FastifySpaceRequest, @Res({ passthrough: true }) res: FastifyReply): Promise<StreamableFile> {\n return this.filesMethods.headOrGet(req, res)\n }\n\n @Post(`${FILES_ROUTE.OPERATION}/${FILE_OPERATION.MAKE}/*`)\n async make(@GetUser() user: UserModel, @GetSpace() space: SpaceEnv, @Body() makeFileDto: MakeFileDto): Promise<void> {\n return this.filesMethods.make(user, space, makeFileDto)\n }\n\n @Post(`${FILES_ROUTE.OPERATION}/${FILE_OPERATION.UPLOAD}/*`)\n async uploadCreate(@Req() req: FastifySpaceRequest): Promise<void> {\n return this.filesMethods.upload(req)\n }\n\n @Put(`${FILES_ROUTE.OPERATION}/${FILE_OPERATION.UPLOAD}/*`)\n async uploadOverwrite(@Req() req: FastifySpaceRequest): Promise<void> {\n return this.filesMethods.upload(req)\n }\n\n @Patch(`${FILES_ROUTE.OPERATION}/${FILE_OPERATION.UPLOAD}/*`)\n async uploadContent(@Req() req: FastifySpaceRequest): Promise<void> {\n return this.filesMethods.upload(req)\n }\n\n @Copy(`${FILES_ROUTE.OPERATION}/*`)\n async copy(\n @GetUser() user: UserModel,\n @GetSpace() space: SpaceEnv,\n @Body() copyMoveFileDto: CopyMoveFileDto\n ): Promise<{\n path: string\n name: string\n }> {\n return this.filesMethods.copy(user, space, copyMoveFileDto)\n }\n\n @Move(`${FILES_ROUTE.OPERATION}/*`)\n async move(\n @GetUser() user: UserModel,\n @GetSpace() space: SpaceEnv,\n @Body() copyMoveFileDto: CopyMoveFileDto\n ): Promise<{\n path: string\n name: string\n }> {\n return this.filesMethods.move(user, space, copyMoveFileDto)\n }\n\n @Delete(`${FILES_ROUTE.OPERATION}/*`)\n async delete(@GetUser() user: UserModel, @GetSpace() space: SpaceEnv): Promise<void> {\n return this.filesMethods.delete(user, space)\n }\n\n @Get(`${FILES_ROUTE.OPERATION}/${FILE_OPERATION.THUMBNAIL}/*`)\n async genThumbnail(\n @GetSpace() space: SpaceEnv,\n @Query('size', new ParseIntPipe({ optional: true })) size = 256,\n @Res() res: FastifyReply\n ): Promise<StreamableFile> {\n if (size > 1024) size = 1024\n const thumb = await this.filesMethods.genThumbnail(space, size)\n res.type(webpMimeType)\n return res.send(thumb)\n }\n\n @Lock(`${FILES_ROUTE.OPERATION}/*`)\n async lock(@GetUser() user: UserModel, @GetSpace() space: SpaceEnv): Promise<FileLockProps> {\n return this.filesMethods.lock(user, space)\n }\n\n @Unlock(`${FILES_ROUTE.OPERATION}/*`)\n async unlock(\n @GetUser() user: UserModel,\n @GetSpace() space: SpaceEnv,\n @Query(FORCE_AS_FILE_OWNER, new ParseBoolPipe({ optional: true })) forceAsFileOwner?: boolean\n ): Promise<void> {\n return this.filesMethods.unlock(user, space, forceAsFileOwner)\n }\n\n @Unlock(`${FILES_ROUTE.OPERATION}/${FILE_OPERATION.UNLOCK_REQUEST}/*`)\n @UseInterceptors(ContextInterceptor)\n async unlockRequest(@GetUser() user: UserModel, @GetSpace() space: SpaceEnv): Promise<void> {\n return this.filesMethods.unlockRequest(user, space)\n }\n\n @Get(`${FILES_ROUTE.OPERATION}/${FILE_OPERATION.GET_SIZE}/*`)\n async getSize(@GetSpace() space: SpaceEnv): Promise<{ size: number }> {\n return this.filesMethods.getSize(space)\n }\n\n // TASKS OPERATIONS\n\n @Post(`${FILES_ROUTE.TASK_OPERATION}/${FILE_OPERATION.DOWNLOAD}/*`)\n async downloadFromUrlAsTask(@GetUser() user: UserModel, @GetSpace() space: SpaceEnv, @Body() downloadFileDto: DownloadFileDto): Promise<FileTask> {\n return this.filesTasksManager.createTask(FILE_OPERATION.DOWNLOAD, user, space, downloadFileDto, this.filesMethods.downloadFromUrl.name)\n }\n\n @Post(`${FILES_ROUTE.TASK_OPERATION}/${FILE_OPERATION.COMPRESS}/*`)\n @SkipSpacePermissionsCheck()\n // Can be used to create or download an archive of files; permissions are checked later\n async compressAsTask(@Req() req: FastifySpaceRequest, @Body() compressFileDto: CompressFileDto): Promise<FileTask> {\n if (compressFileDto.compressInDirectory) {\n await SpaceGuard.checkPermissions(req, this.logger)\n }\n return this.filesTasksManager.createTask(FILE_OPERATION.COMPRESS, req.user, req.space, compressFileDto, this.filesMethods.compress.name)\n }\n\n @Post(`${FILES_ROUTE.TASK_OPERATION}/${FILE_OPERATION.DECOMPRESS}/*`)\n async decompressAsTask(@GetUser() user: UserModel, @GetSpace() space: SpaceEnv): Promise<FileTask> {\n return this.filesTasksManager.createTask(FILE_OPERATION.DECOMPRESS, user, space, null, this.filesMethods.decompress.name)\n }\n\n @Copy(`${FILES_ROUTE.TASK_OPERATION}/*`)\n async copyAsTask(@GetUser() user: UserModel, @GetSpace() space: SpaceEnv, @Body() copyMoveFileDto: CopyMoveFileDto): Promise<FileTask> {\n return this.filesTasksManager.createTask(FILE_OPERATION.COPY, user, space, copyMoveFileDto, this.filesMethods.copy.name)\n }\n\n @Move(`${FILES_ROUTE.TASK_OPERATION}/*`)\n async moveAsTask(@GetUser() user: UserModel, @GetSpace() space: SpaceEnv, @Body() copyMoveFileDto: CopyMoveFileDto): Promise<FileTask> {\n return this.filesTasksManager.createTask(FILE_OPERATION.MOVE, user, space, copyMoveFileDto, this.filesMethods.move.name)\n }\n\n @Delete(`${FILES_ROUTE.TASK_OPERATION}/*`)\n async deleteAsTask(@GetUser() user: UserModel, @GetSpace() space: SpaceEnv): Promise<FileTask> {\n return this.filesTasksManager.createTask(FILE_OPERATION.DELETE, user, space, null, this.filesMethods.delete.name)\n }\n\n // RECENT FILES\n\n @Get(FILES_ROUTE.RECENTS)\n @SkipSpaceGuard()\n getRecents(@GetUser() user: UserModel, @Query('limit') limit: number = 10): Promise<FileRecent[]> {\n return this.filesRecents.getRecents(user, limit)\n }\n\n // SEARCH FILES\n\n @Search(FILES_ROUTE.SEARCH)\n @SkipSpaceGuard()\n search(@GetUser() user: UserModel, @Body() search: SearchFilesDto): Promise<FileContent[]> {\n return this.filesSearch.search(user, search)\n }\n}\n"],"names":["FilesController","head","req","res","filesMethods","headOrGet","download","make","user","space","makeFileDto","uploadCreate","upload","uploadOverwrite","uploadContent","copy","copyMoveFileDto","move","delete","genThumbnail","size","thumb","type","webpMimeType","send","lock","unlock","forceAsFileOwner","unlockRequest","getSize","downloadFromUrlAsTask","downloadFileDto","filesTasksManager","createTask","FILE_OPERATION","DOWNLOAD","downloadFromUrl","name","compressAsTask","compressFileDto","compressInDirectory","SpaceGuard","checkPermissions","logger","COMPRESS","compress","decompressAsTask","DECOMPRESS","decompress","copyAsTask","COPY","moveAsTask","MOVE","deleteAsTask","DELETE","getRecents","limit","filesRecents","search","filesSearch","Logger","FILES_ROUTE","OPERATION","passthrough","MAKE","UPLOAD","THUMBNAIL","ParseIntPipe","optional","ParseBoolPipe","UNLOCK_REQUEST","GET_SIZE","TASK_OPERATION","RECENTS","SEARCH","BASE"],"mappings":"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"}
@@ -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
  });