@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,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
  });
@@ -210,10 +206,16 @@ let SpacesQueries = class SpacesQueries {
210
206
  async updateSpace(id, set) {
211
207
  try {
212
208
  (0, _utils.dbCheckAffectedRows)(await this.db.update(_spacesschema.spaces).set(set).where((0, _drizzleorm.eq)(_spacesschema.spaces.id, id)), 1);
213
- this.logger.debug(`${this.updateSpace.name} - space (${id}) was updated : ${JSON.stringify(set)}`);
209
+ this.logger.debug({
210
+ tag: this.updateSpace.name,
211
+ msg: `space (${id}) was updated : ${JSON.stringify(set)}`
212
+ });
214
213
  return true;
215
214
  } catch (e) {
216
- this.logger.error(`${this.updateSpace.name} - space (${id}) was not updated : ${JSON.stringify(set)} : ${e}`);
215
+ this.logger.error({
216
+ tag: this.updateSpace.name,
217
+ msg: `space (${id}) was not updated : ${JSON.stringify(set)} : ${e}`
218
+ });
217
219
  return false;
218
220
  }
219
221
  }
@@ -336,9 +338,15 @@ let SpacesQueries = class SpacesQueries {
336
338
  permissions: m.permissions
337
339
  }), 1);
338
340
  status[_constants.ACTION.ADD][`${m.type === _member.MEMBER_TYPE.USER || m.type === _member.MEMBER_TYPE.GUEST ? 'userIds' : 'groupIds'}`].push(m.id);
339
- this.logger.debug(`${this.updateMembers.name} - ${m.type} (${m.id}) added to the space (${spaceId})`);
341
+ this.logger.debug({
342
+ tag: this.updateMembers.name,
343
+ msg: `${m.type} (${m.id}) added to the space (${spaceId})`
344
+ });
340
345
  } catch (e) {
341
- this.logger.error(`${this.updateMembers.name} - ${m.type} (${m.id}) was not added to the space ${spaceId} -> : ${e}`);
346
+ this.logger.error({
347
+ tag: this.updateMembers.name,
348
+ msg: `${m.type} (${m.id}) was not added to the space ${spaceId} -> : ${e}`
349
+ });
342
350
  }
343
351
  }
344
352
  // update
@@ -351,9 +359,15 @@ let SpacesQueries = class SpacesQueries {
351
359
  try {
352
360
  (0, _utils.dbCheckAffectedRows)(await this.db.update(_spacesmembersschema.spacesMembers).set(props).where((0, _drizzleorm.and)((0, _drizzleorm.eq)(_spacesmembersschema.spacesMembers.spaceId, spaceId), (0, _drizzleorm.eq)(m.type === _member.MEMBER_TYPE.USER || m.type === _member.MEMBER_TYPE.GUEST ? _spacesmembersschema.spacesMembers.userId : _spacesmembersschema.spacesMembers.groupId, m.id))).limit(1), 1);
353
361
  status[_constants.ACTION.UPDATE][`${m.type === _member.MEMBER_TYPE.USER || m.type === _member.MEMBER_TYPE.GUEST ? 'userIds' : 'groupIds'}`].push(m.id);
354
- this.logger.debug(`${this.updateMembers.name} - ${m.type} (${m.id}) was updated on space (${spaceId}) : ${JSON.stringify(props)}`);
362
+ this.logger.debug({
363
+ tag: this.updateMembers.name,
364
+ msg: `${m.type} (${m.id}) was updated on space (${spaceId}) : ${JSON.stringify(props)}`
365
+ });
355
366
  } catch (e) {
356
- this.logger.error(`${this.updateMembers.name} - ${m.type} (${m.id}) was not updated on space (${spaceId}) : ${JSON.stringify(props)} : ${e}`);
367
+ this.logger.error({
368
+ tag: this.updateMembers.name,
369
+ msg: `${m.type} (${m.id}) was not updated on space (${spaceId}) : ${JSON.stringify(props)} : ${e}`
370
+ });
357
371
  }
358
372
  }
359
373
  // remove
@@ -361,9 +375,15 @@ let SpacesQueries = class SpacesQueries {
361
375
  try {
362
376
  (0, _utils.dbCheckAffectedRows)(await this.db.delete(_spacesmembersschema.spacesMembers).where((0, _drizzleorm.and)((0, _drizzleorm.eq)(_spacesmembersschema.spacesMembers.spaceId, spaceId), (0, _drizzleorm.eq)(m.type === _member.MEMBER_TYPE.USER || m.type === _member.MEMBER_TYPE.GUEST ? _spacesmembersschema.spacesMembers.userId : _spacesmembersschema.spacesMembers.groupId, m.id))), 1);
363
377
  status[_constants.ACTION.DELETE][`${m.type === _member.MEMBER_TYPE.USER || m.type === _member.MEMBER_TYPE.GUEST ? 'userIds' : 'groupIds'}`].push(m.id);
364
- this.logger.debug(`${this.updateMembers.name} - ${m.type} (${m.id}) removed from space (${spaceId})`);
378
+ this.logger.debug({
379
+ tag: this.updateMembers.name,
380
+ msg: `${m.type} (${m.id}) removed from space (${spaceId})`
381
+ });
365
382
  } catch (e) {
366
- this.logger.error(`${this.updateMembers.name} - ${m.type} (${m.id}) was not removed from space (${spaceId}) : ${e}`);
383
+ this.logger.error({
384
+ tag: this.updateMembers.name,
385
+ msg: `${m.type} (${m.id}) was not removed from space (${spaceId}) : ${e}`
386
+ });
367
387
  }
368
388
  }
369
389
  return status;
@@ -539,10 +559,16 @@ let SpacesQueries = class SpacesQueries {
539
559
  }
540
560
  try {
541
561
  (0, _utils.dbCheckAffectedRows)(await this.db.insert(_spacesrootsschema.spacesRoots).values(r), 1);
542
- this.logger.debug(`${this.addRoot.name} - *${root.alias}* (${root.id}) added`);
562
+ this.logger.debug({
563
+ tag: this.addRoot.name,
564
+ msg: `*${root.alias}* (${root.id}) added`
565
+ });
543
566
  return true;
544
567
  } catch (e) {
545
- this.logger.error(`${this.addRoot.name} - *${root.alias}* (${root.id}) was not added : ${JSON.stringify(root)} : ${e}`);
568
+ this.logger.error({
569
+ tag: this.addRoot.name,
570
+ msg: `*${root.alias}* (${root.id}) was not added : ${JSON.stringify(root)} : ${e}`
571
+ });
546
572
  return false;
547
573
  }
548
574
  }
@@ -550,10 +576,16 @@ let SpacesQueries = class SpacesQueries {
550
576
  const where = (0, _utils.convertToWhere)(_spacesrootsschema.spacesRoots, filters);
551
577
  try {
552
578
  (0, _utils.dbCheckAffectedRows)(await this.db.update(_spacesrootsschema.spacesRoots).set(set).where((0, _drizzleorm.and)(...where)).limit(1), 1);
553
- this.logger.debug(`${this.updateRoot.name} - ${JSON.stringify(filters)} was updated : ${JSON.stringify(set)}`);
579
+ this.logger.debug({
580
+ tag: this.updateRoot.name,
581
+ msg: `${JSON.stringify(filters)} was updated : ${JSON.stringify(set)}`
582
+ });
554
583
  return true;
555
584
  } catch (e) {
556
- this.logger.error(`${this.updateRoot.name} - ${JSON.stringify(filters)} was not updated : ${JSON.stringify(set)} : ${e}`);
585
+ this.logger.error({
586
+ tag: this.updateRoot.name,
587
+ msg: `${JSON.stringify(filters)} was not updated : ${JSON.stringify(set)} : ${e}`
588
+ });
557
589
  return false;
558
590
  }
559
591
  }
@@ -595,8 +627,14 @@ let SpacesQueries = class SpacesQueries {
595
627
  for (const p of patterns){
596
628
  const keys = await this.cache.keys(p);
597
629
  if (keys.length) {
598
- this.logger.verbose(`${this.clearCachePermissions.name} - ${JSON.stringify(keys)}`);
599
- this.cache.mdel(keys).catch((e)=>this.logger.error(`${this.clearCachePermissions.name} - ${e}`));
630
+ this.logger.verbose({
631
+ tag: this.clearCachePermissions.name,
632
+ msg: `${JSON.stringify(keys)}`
633
+ });
634
+ this.cache.mdel(keys).catch((e)=>this.logger.error({
635
+ tag: this.clearCachePermissions.name,
636
+ msg: `${e}`
637
+ }));
600
638
  }
601
639
  }
602
640
  }
@@ -604,10 +642,16 @@ let SpacesQueries = class SpacesQueries {
604
642
  async removeRoot(id) {
605
643
  try {
606
644
  (0, _utils.dbCheckAffectedRows)(await this.db.delete(_spacesrootsschema.spacesRoots).where((0, _drizzleorm.eq)(_spacesrootsschema.spacesRoots.id, id)), 1);
607
- this.logger.debug(`${this.removeRoot.name} - root (${id}) removed`);
645
+ this.logger.debug({
646
+ tag: this.removeRoot.name,
647
+ msg: `root (${id}) removed`
648
+ });
608
649
  return true;
609
650
  } catch (e) {
610
- this.logger.error(`${this.removeRoot.name} - root (${id}) was not deleted : ${e}`);
651
+ this.logger.error({
652
+ tag: this.removeRoot.name,
653
+ msg: `root (${id}) was not deleted : ${e}`
654
+ });
611
655
  return false;
612
656
  }
613
657
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../backend/src/applications/spaces/services/spaces-queries.service.ts"],"sourcesContent":["/*\n * Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com>\n * This file is part of Sync-in | The open source file sync and share solution\n * See the LICENSE file for licensing details\n */\n\nimport { Inject, Injectable, Logger } from '@nestjs/common'\nimport { and, countDistinct, eq, isNotNull, isNull, max, SelectedFields, SQL, sql } from 'drizzle-orm'\nimport { alias, union } from 'drizzle-orm/mysql-core'\nimport { MySql2PreparedQuery, MySqlQueryResult } from 'drizzle-orm/mysql2'\nimport { ACTION } from '../../../common/constants'\nimport { popFromObject } from '../../../common/shared'\nimport { CacheDecorator } from '../../../infrastructure/cache/cache.decorator'\nimport { Cache } from '../../../infrastructure/cache/services/cache.service'\nimport { DB_TOKEN_PROVIDER } from '../../../infrastructure/database/constants'\nimport { DBSchema } from '../../../infrastructure/database/interfaces/database.interface'\nimport {\n concatDistinctObjectsInArray,\n convertToSelect,\n convertToWhere,\n dateTimeUTC,\n dbCheckAffectedRows,\n dbGetInsertedId\n} from '../../../infrastructure/database/utils'\nimport { fileHasCommentsSubquerySQL } from '../../comments/schemas/comments.schema'\nimport { FileDBProps } from '../../files/interfaces/file-db-props.interface'\nimport { FileProps } from '../../files/interfaces/file-props.interface'\nimport { File } from '../../files/schemas/file.interface'\nimport { filePathSQL, files } from '../../files/schemas/files.schema'\nimport { FilesQueries } from '../../files/services/files-queries.service'\nimport { links } from '../../links/schemas/links.schema'\nimport { shares } from '../../shares/schemas/shares.schema'\nimport { syncClients } from '../../sync/schemas/sync-clients.schema'\nimport { syncPaths } from '../../sync/schemas/sync-paths.schema'\nimport { GROUP_TYPE } from '../../users/constants/group'\nimport { MEMBER_TYPE } from '../../users/constants/member'\nimport { USER_ROLE } from '../../users/constants/user'\nimport { Member } from '../../users/interfaces/member.interface'\nimport { groups } from '../../users/schemas/groups.schema'\nimport { usersGroups } from '../../users/schemas/users-groups.schema'\nimport { userFullNameSQL, users } from '../../users/schemas/users.schema'\nimport { SPACE_ROLE } from '../constants/spaces'\nimport { SpaceMemberDto } from '../dto/create-or-update-space.dto'\nimport { SpaceEnv } from '../models/space-env.model'\nimport { SpaceProps } from '../models/space-props.model'\nimport { SpaceRootProps } from '../models/space-root-props.model'\nimport { SpaceMembers } from '../schemas/space-members.interface'\nimport { SpaceRoot } from '../schemas/space-root.interface'\nimport { Space } from '../schemas/space.interface'\nimport { spacesMembers } from '../schemas/spaces-members.schema'\nimport { spacesRoots } from '../schemas/spaces-roots.schema'\nimport { spaceGroupConcatPermissions, spaces } from '../schemas/spaces.schema'\n\n@Injectable()\nexport class SpacesQueries {\n private readonly logger = new Logger(SpacesQueries.name)\n private spacePermissionsQuery: MySql2PreparedQuery<any> = null\n private spaceAndRootPermissionsQuery: MySql2PreparedQuery<any> = null\n private spacesWithDetailsQuery: MySql2PreparedQuery<any> = null\n private spacesQuery: MySql2PreparedQuery<any> = null\n private spaceIdsQuery: MySql2PreparedQuery<any> = null\n private spaceQuery: MySql2PreparedQuery<any> = null\n private spacesWithPermissionsQuery: MySql2PreparedQuery<any> = null\n private spaceFromIdWithPermissionsQuery: MySql2PreparedQuery<any> = null\n private spaceRootFilesQuery: MySql2PreparedQuery<any> = null\n\n constructor(\n @Inject(DB_TOKEN_PROVIDER) private readonly db: DBSchema,\n public readonly cache: Cache,\n private readonly filesQueries: FilesQueries\n ) {}\n\n spaceExistsForAlias(alias: string): any | undefined {\n return this.db.query.spaces.findFirst({ columns: { id: true }, where: eq(spaces.alias, alias) })\n }\n\n spaceRootExistsForAlias(spaceId: number, rootAlias: string): any | undefined {\n return this.db.query.spacesRoots.findFirst({\n columns: { id: true },\n where: and(eq(spacesRoots.spaceId, spaceId), eq(spacesRoots.alias, rootAlias))\n })\n }\n\n selectSpaces(fields: Partial<keyof Space>[] = ['id', 'alias', 'name'], where: SQL[]): Promise<Partial<Space>[]> {\n const select: Record<keyof Space, any> = convertToSelect(spaces, fields)\n return this.db\n .select(select)\n .from(spaces)\n .where(and(...where))\n }\n\n spacesQuotaPaths(spaceId?: number): Promise<(Partial<Space> & { externalPaths: string[] })[]> {\n return this.db\n .select({\n id: spaces.id,\n alias: spaces.alias,\n storageUsage: spaces.storageUsage,\n storageQuota: spaces.storageQuota,\n externalPaths: sql<string[]>`JSON_ARRAYAGG(${spacesRoots.externalPath})`.mapWith(JSON.parse).as('externalPaths')\n })\n .from(spaces)\n .leftJoin(spacesRoots, and(eq(spacesRoots.spaceId, spaces.id), isNotNull(spacesRoots.externalPath)))\n .where(and(...[...(spaceId ? [eq(spaces.id, spaceId)] : [])]))\n .groupBy(spaces.id)\n }\n\n async userIsSpaceManager(userId: number, spaceId: number, shareId?: number): Promise<boolean> {\n /* Check if user is a space manager */\n const q = this.db\n .select({\n userId: spacesMembers.userId,\n spaceId: spacesMembers.spaceId,\n ...(shareId && { shareId: shares.id })\n })\n .from(spacesMembers)\n if (shareId) {\n q.innerJoin(shares, and(eq(shares.id, shareId), eq(shares.spaceId, spaceId)))\n }\n const [r] = await q\n .where(and(eq(spacesMembers.spaceId, spaceId), eq(spacesMembers.userId, userId), eq(spacesMembers.role, SPACE_ROLE.IS_MANAGER)))\n .limit(1)\n return r && r.userId === userId && r.spaceId === spaceId && (shareId ? r.shareId === shareId : true)\n }\n\n async getSpaceAsManager(userId: number, spaceId: number): Promise<SpaceProps> {\n /* User must be the manager of the space */\n // todo: make a condition if current user is an admin\n if (!this.spaceQuery) {\n const otherMembers: any = alias(spacesMembers, 'otherMembers')\n const rootOwner: any = alias(users, 'rootOwner')\n // fileOwner: avoid providing file path information for roots not owned by the current user\n const fileOwner: any = alias(files, 'fileOwner')\n const linkUsers: any = alias(users, 'linkUsers')\n this.spaceQuery = this.db\n .select({\n id: spaces.id,\n name: spaces.name,\n alias: spaces.alias,\n description: spaces.description,\n enabled: spaces.enabled,\n storageUsage: spaces.storageUsage,\n storageQuota: spaces.storageQuota,\n storageIndexing: spaces.storageIndexing,\n createdAt: spaces.createdAt,\n modifiedAt: spaces.modifiedAt,\n disabledAt: spaces.disabledAt,\n roots: concatDistinctObjectsInArray(spacesRoots.id, {\n id: spacesRoots.id,\n name: spacesRoots.name,\n alias: spacesRoots.alias,\n externalPath: spacesRoots.externalPath,\n permissions: spacesRoots.permissions,\n createdAt: dateTimeUTC(spacesRoots.createdAt),\n owner: { id: rootOwner.id, login: rootOwner.login, fullName: userFullNameSQL(rootOwner), email: rootOwner.email },\n // fileOwner: (hide if not owner), files: allow fields\n file: { id: fileOwner.id, path: filePathSQL(fileOwner), mime: files.mime }\n }),\n users: concatDistinctObjectsInArray(users.id, {\n id: users.id,\n login: users.login,\n name: userFullNameSQL(users),\n type: sql`IF (${users.role} = ${USER_ROLE.GUEST}, ${MEMBER_TYPE.GUEST}, ${MEMBER_TYPE.USER})`,\n spaceRole: otherMembers.role,\n description: users.email,\n permissions: otherMembers.permissions,\n createdAt: dateTimeUTC(otherMembers.createdAt)\n }),\n groups: concatDistinctObjectsInArray(groups.id, {\n id: groups.id,\n name: groups.name,\n type: sql`IF (${groups.type} = ${GROUP_TYPE.PERSONAL}, ${MEMBER_TYPE.PGROUP}, ${MEMBER_TYPE.GROUP})`,\n spaceRole: sql`${SPACE_ROLE.IS_MEMBER}`,\n description: groups.description,\n permissions: otherMembers.permissions,\n createdAt: dateTimeUTC(otherMembers.createdAt)\n }),\n links: concatDistinctObjectsInArray(linkUsers.id, {\n id: linkUsers.id,\n linkId: links.id,\n name: links.name,\n type: sql.raw(`'${MEMBER_TYPE.USER}'`),\n spaceRole: sql`${SPACE_ROLE.IS_MEMBER}`,\n description: links.email,\n permissions: otherMembers.permissions,\n createdAt: dateTimeUTC(otherMembers.createdAt)\n })\n } satisfies SpaceProps | SelectedFields<any, any>)\n .from(spacesMembers)\n .innerJoin(\n spaces,\n and(\n eq(spaces.id, spacesMembers.spaceId),\n eq(spacesMembers.spaceId, sql.placeholder('spaceId')),\n eq(spacesMembers.userId, sql.placeholder('userId')),\n eq(spacesMembers.role, SPACE_ROLE.IS_MANAGER)\n )\n )\n .innerJoin(otherMembers, eq(otherMembers.spaceId, spaces.id))\n .leftJoin(users, and(isNull(otherMembers.linkId), eq(otherMembers.userId, users.id)))\n .leftJoin(linkUsers, and(isNotNull(otherMembers.linkId), eq(linkUsers.id, otherMembers.userId)))\n .leftJoin(links, and(eq(links.userId, linkUsers.id), eq(links.id, otherMembers.linkId)))\n .leftJoin(groups, eq(otherMembers.groupId, groups.id))\n .leftJoin(spacesRoots, eq(spacesRoots.spaceId, spaces.id))\n .leftJoin(files, eq(spacesRoots.fileId, files.id))\n .leftJoin(rootOwner, eq(rootOwner.id, files.ownerId))\n .leftJoin(fileOwner, and(eq(fileOwner.id, files.id), eq(fileOwner.ownerId, sql.placeholder('userId'))))\n .groupBy(spaces.id)\n .limit(1)\n .prepare()\n }\n const [space] = await this.spaceQuery.execute({ userId, spaceId })\n if (!space) {\n return null\n }\n // merge members\n space.members = [...popFromObject('users', space), ...popFromObject('groups', space), ...popFromObject('links', space)]\n return new SpaceProps(space, userId)\n }\n\n async createSpace(space: SpaceProps): Promise<number> {\n return dbGetInsertedId(await this.db.insert(spaces).values(space))\n }\n\n async deleteSpace(spaceId: number, deleteNow = false): Promise<boolean> {\n let r: MySqlQueryResult\n if (deleteNow) {\n r = await this.db.delete(spaces).where(eq(spaces.id, spaceId))\n } else {\n r = await this.db\n .update(spaces)\n .set({ enabled: false, disabledAt: new Date() } as Space)\n .where(eq(spaces.id, spaceId))\n }\n return dbCheckAffectedRows(r, 1)\n }\n\n async updateSpace(id: number, set: Partial<Record<keyof Space, any>>): Promise<boolean> {\n try {\n dbCheckAffectedRows(await this.db.update(spaces).set(set).where(eq(spaces.id, id)), 1)\n this.logger.debug(`${this.updateSpace.name} - space (${id}) was updated : ${JSON.stringify(set)}`)\n return true\n } catch (e) {\n this.logger.error(`${this.updateSpace.name} - space (${id}) was not updated : ${JSON.stringify(set)} : ${e}`)\n return false\n }\n }\n\n async spaceRootFiles(\n userId: number,\n spaceId: number,\n options: {\n withShares?: boolean\n withHasComments?: boolean\n withSyncs?: boolean\n }\n ): Promise<FileProps[]> {\n if (!this.spaceRootFilesQuery) {\n const select: FileProps | SelectedFields<any, any> = {\n id: files.id,\n path: filePathSQL(files),\n isDir: files.isDir,\n inTrash: files.inTrash,\n size: files.size,\n ctime: files.ctime,\n mtime: files.mtime,\n mime: files.mime,\n root: {\n id: spacesRoots.id,\n alias: spacesRoots.alias,\n name: spacesRoots.name,\n externalPath: spacesRoots.externalPath,\n permissions: spacesRoots.permissions,\n owner: { id: users.id, login: users.login, email: users.email, fullName: userFullNameSQL(users) }\n },\n shares: sql`IF (${sql.placeholder('withShares')}, ${concatDistinctObjectsInArray(shares.id, {\n id: shares.id,\n alias: shares.alias,\n name: shares.name,\n type: shares.type\n })}, '[]')`.mapWith(JSON.parse),\n syncs: sql`IF (${sql.placeholder('withSyncs')}, ${concatDistinctObjectsInArray(syncPaths.id, {\n id: syncPaths.id,\n clientId: syncClients.id,\n clientName: sql`JSON_VALUE(${syncClients.info}, '$.node')`\n })}, '[]')`.mapWith(JSON.parse),\n hasComments: sql<boolean>`IF (${sql.placeholder('withHasComments')}, ${fileHasCommentsSubquerySQL(files.id)}, 0)`.mapWith(Boolean)\n }\n this.spaceRootFilesQuery = this.db\n .select(select)\n .from(spacesRoots)\n .leftJoin(files, eq(files.id, spacesRoots.fileId))\n .leftJoin(users, eq(users.id, files.ownerId))\n .leftJoin(\n shares,\n and(\n eq(sql.placeholder('withShares'), sql.raw('1')),\n eq(shares.ownerId, sql.placeholder('userId')),\n isNull(shares.fileId),\n isNull(shares.parentId),\n eq(shares.spaceRootId, spacesRoots.id)\n )\n )\n .leftJoin(syncClients, and(eq(sql.placeholder('withSyncs'), sql.raw('1')), eq(syncClients.ownerId, sql.placeholder('userId'))))\n .leftJoin(\n syncPaths,\n and(\n eq(sql.placeholder('withSyncs'), sql.raw('1')),\n eq(syncPaths.clientId, syncClients.id),\n eq(syncPaths.spaceId, sql.placeholder('spaceId')),\n eq(syncPaths.spaceRootId, spacesRoots.id),\n isNull(syncPaths.fileId)\n )\n )\n .where(eq(spacesRoots.spaceId, sql.placeholder('spaceId')))\n .groupBy(files.id, spacesRoots.id)\n .prepare()\n }\n return this.spaceRootFilesQuery.execute({\n userId,\n spaceId,\n withHasComments: +!!options.withHasComments,\n withShares: +!!options.withShares,\n withSyncs: +!!options.withSyncs\n })\n }\n\n async getSpaceRoots(spaceId: number, userId?: number): Promise<SpaceRootProps[]> {\n const where: SQL<any>[] = [eq(spacesRoots.spaceId, spaceId)]\n if (userId) {\n where.push(eq(files.ownerId, userId))\n }\n return (await this.db\n .select({\n id: spacesRoots.id,\n alias: spacesRoots.alias,\n name: spacesRoots.name,\n permissions: spacesRoots.permissions,\n createdAt: spacesRoots.createdAt,\n ...(!userId && { owner: { id: files.ownerId } }),\n file: {\n id: files.id,\n path: filePathSQL(files),\n mime: files.mime\n }\n })\n .from(spacesRoots)\n .leftJoin(files, eq(files.id, spacesRoots.fileId))\n .where(and(...where))) as SpaceRootProps[]\n }\n\n async getSpaceMemberIds(spaceId: number): Promise<{ groupIds: number[]; userIds: number[] }> {\n const members = { userIds: [], groupIds: [] }\n for (const m of await this.db\n .select({\n userId: spacesMembers.userId,\n groupId: spacesMembers.groupId\n })\n .from(spacesMembers)\n .where(eq(spacesMembers.spaceId, spaceId))) {\n if (m.userId) {\n members.userIds.push(m.userId)\n } else {\n members.groupIds.push(m.groupId)\n }\n }\n return members\n }\n\n async updateMembers(\n spaceId: number,\n add: SpaceMemberDto[],\n update: Record<string | 'object', Partial<SpaceMembers> | SpaceMemberDto>[],\n remove: SpaceMemberDto[]\n ): Promise<Record<Exclude<ACTION, ACTION.DELETE_PERMANENTLY>, { userIds: number[]; groupIds: number[] }>> {\n // store status\n const status: Record<Exclude<ACTION, ACTION.DELETE_PERMANENTLY>, { userIds: number[]; groupIds: number[] }> = {\n [ACTION.ADD]: { userIds: [], groupIds: [] },\n [ACTION.UPDATE]: { userIds: [], groupIds: [] },\n [ACTION.DELETE]: { userIds: [], groupIds: [] }\n }\n // add\n for (const m of add) {\n try {\n dbCheckAffectedRows(\n await this.db.insert(spacesMembers).values({\n spaceId: spaceId,\n ...(m.type === MEMBER_TYPE.USER || m.type === MEMBER_TYPE.GUEST ? { userId: m.id } : { groupId: m.id }),\n role: m.spaceRole,\n permissions: m.permissions\n } as SpaceMembers),\n 1\n )\n status[ACTION.ADD][`${m.type === MEMBER_TYPE.USER || m.type === MEMBER_TYPE.GUEST ? 'userIds' : 'groupIds'}`].push(m.id)\n this.logger.debug(`${this.updateMembers.name} - ${m.type} (${m.id}) added to the space (${spaceId})`)\n } catch (e) {\n this.logger.error(`${this.updateMembers.name} - ${m.type} (${m.id}) was not added to the space ${spaceId} -> : ${e}`)\n }\n }\n // update\n for (const props of update) {\n const m: SpaceMemberDto = popFromObject('object', props)\n const spaceRole = popFromObject('spaceRole', props)\n if (Number.isInteger(spaceRole)) {\n props.role = spaceRole\n }\n try {\n dbCheckAffectedRows(\n await this.db\n .update(spacesMembers)\n .set(props)\n .where(\n and(\n eq(spacesMembers.spaceId, spaceId),\n eq(m.type === MEMBER_TYPE.USER || m.type === MEMBER_TYPE.GUEST ? spacesMembers.userId : spacesMembers.groupId, m.id)\n )\n )\n .limit(1),\n 1\n )\n status[ACTION.UPDATE][`${m.type === MEMBER_TYPE.USER || m.type === MEMBER_TYPE.GUEST ? 'userIds' : 'groupIds'}`].push(m.id)\n this.logger.debug(`${this.updateMembers.name} - ${m.type} (${m.id}) was updated on space (${spaceId}) : ${JSON.stringify(props)}`)\n } catch (e) {\n this.logger.error(`${this.updateMembers.name} - ${m.type} (${m.id}) was not updated on space (${spaceId}) : ${JSON.stringify(props)} : ${e}`)\n }\n }\n // remove\n for (const m of remove) {\n try {\n dbCheckAffectedRows(\n await this.db\n .delete(spacesMembers)\n .where(\n and(\n eq(spacesMembers.spaceId, spaceId),\n eq(m.type === MEMBER_TYPE.USER || m.type === MEMBER_TYPE.GUEST ? spacesMembers.userId : spacesMembers.groupId, m.id)\n )\n ),\n 1\n )\n status[ACTION.DELETE][`${m.type === MEMBER_TYPE.USER || m.type === MEMBER_TYPE.GUEST ? 'userIds' : 'groupIds'}`].push(m.id)\n this.logger.debug(`${this.updateMembers.name} - ${m.type} (${m.id}) removed from space (${spaceId})`)\n } catch (e) {\n this.logger.error(`${this.updateMembers.name} - ${m.type} (${m.id}) was not removed from space (${spaceId}) : ${e}`)\n }\n }\n return status\n }\n\n async updateSpaceRoots(\n userId: number,\n spaceId: number,\n add: SpaceRootProps[],\n update: Record<string | 'object', Partial<SpaceRootProps> | SpaceRootProps>[],\n remove: SpaceRootProps[]\n ): Promise<Record<Exclude<ACTION, ACTION.DELETE_PERMANENTLY>, SpaceRootProps[]>> {\n // store status\n const status = {} as Record<Exclude<ACTION, ACTION.DELETE_PERMANENTLY>, SpaceRootProps[]>\n // add\n for (const r of add) {\n if (await this.addRoot(userId, spaceId, r)) {\n ;(status[ACTION.ADD] ||= []).push(r)\n }\n }\n // update\n for (const props of update) {\n const r: SpaceRootProps = popFromObject('object', props)\n if (await this.updateRoot(props, { id: r.id })) {\n ;(status[ACTION.UPDATE] ||= []).push(r)\n }\n }\n // delete\n for (const r of remove) {\n if (await this.removeRoot(r.id)) {\n ;(status[ACTION.DELETE] ||= []).push(r)\n }\n }\n return status\n }\n\n @CacheDecorator()\n async spaceIds(userId: number): Promise<number[]> {\n if (!this.spaceIdsQuery) {\n const unionAlias = this.fromUserAndGroups({ id: spaces.id })\n this.spaceIdsQuery = this.db.select({ id: unionAlias.id }).from(unionAlias).groupBy(unionAlias.id).prepare()\n }\n // `userId` is used in `fromUserAndGroups` function\n return (await this.spaceIdsQuery.execute({ userId })).map((r: { id: number }) => r.id)\n }\n\n @CacheDecorator()\n async spaces(userId: number, withPermissions = false, fromId?: number): Promise<SpaceProps[]> {\n let pQuery: MySql2PreparedQuery<any>\n if (fromId) {\n pQuery = this.spaceFromIdWithPermissionsQuery\n } else if (withPermissions) {\n pQuery = this.spacesWithPermissionsQuery\n } else {\n pQuery = this.spacesQuery\n }\n if (!pQuery) {\n const selectUnion: Space | SelectedFields<any, any> = {\n id: spaces.id,\n alias: spaces.alias,\n name: spaces.name,\n description: spaces.description,\n enabled: spaces.enabled,\n createdAt: spaces.createdAt,\n modifiedAt: spaces.modifiedAt,\n ...(withPermissions && { permissions: spacesMembers.permissions, role: spacesMembers.role })\n }\n const unionAlias = this.fromUserAndGroups(selectUnion)\n const select: Space | SelectedFields<any, any> = {\n id: unionAlias.id,\n alias: unionAlias.alias,\n name: unionAlias.name,\n description: unionAlias.description,\n enabled: unionAlias.enabled,\n createdAt: unionAlias.createdAt,\n modifiedAt: unionAlias.modifiedAt,\n ...(withPermissions && {\n permissions: spaceGroupConcatPermissions(unionAlias.permissions),\n role: max(unionAlias.role)\n })\n }\n if (fromId) {\n pQuery = this.db\n .select(select)\n .from(unionAlias)\n .where(eq(unionAlias.id, sql.placeholder('fromId')))\n .limit(1)\n .prepare()\n this.spaceFromIdWithPermissionsQuery = pQuery\n } else {\n pQuery = this.db.select(select).from(unionAlias).groupBy(unionAlias.id).prepare()\n if (withPermissions) {\n this.spacesWithPermissionsQuery = pQuery\n } else {\n this.spacesQuery = pQuery\n }\n }\n }\n // SpaceProps instance is required, if the user is a space manager, he must have all permissions\n // `userId` is used in `fromUserAndGroups` function\n return (await pQuery.execute({ userId, fromId })).map((s: Partial<SpaceProps>) => new SpaceProps(s))\n }\n\n async spacesWithDetails(userId: number): Promise<SpaceProps[]> {\n if (!this.spacesWithDetailsQuery) {\n const selectUnion: Space | SelectedFields<any, any> = {\n id: spaces.id,\n alias: spaces.alias,\n name: spaces.name,\n description: spaces.description,\n enabled: spaces.enabled,\n permissions: spacesMembers.permissions,\n role: spacesMembers.role,\n createdAt: spaces.createdAt,\n modifiedAt: spaces.modifiedAt,\n disabledAt: spaces.disabledAt\n }\n const unionAlias = this.fromUserAndGroups(selectUnion)\n const managers: any = alias(users, 'managers')\n const select: Space | SelectedFields<any, any> = {\n id: unionAlias.id,\n alias: unionAlias.alias,\n name: unionAlias.name,\n description: unionAlias.description,\n enabled: unionAlias.enabled,\n permissions: spaceGroupConcatPermissions(unionAlias.permissions),\n role: max(unionAlias.role),\n modifiedAt: unionAlias.modifiedAt,\n createdAt: unionAlias.createdAt,\n disabledAt: unionAlias.disabledAt,\n members: concatDistinctObjectsInArray(managers.id, {\n id: managers.id,\n login: managers.login,\n name: userFullNameSQL(managers),\n description: managers.email,\n type: sql.raw(`'${MEMBER_TYPE.USER}'`),\n spaceRole: spacesMembers.role,\n permissions: sql<string>`''`,\n createdAt: dateTimeUTC(spacesMembers.createdAt)\n } satisfies Record<keyof Pick<Member, 'id' | 'name' | 'login' | 'description' | 'type' | 'permissions' | 'spaceRole' | 'createdAt'>, any>),\n counts: {\n users: sql`COUNT(DISTINCT(CASE WHEN ${spacesMembers.userId} IS NOT NULL AND ${spacesMembers.linkId} IS NULL THEN ${spacesMembers.userId} END))`,\n groups: countDistinct(spacesMembers.groupId),\n links: sql`COUNT(DISTINCT(CASE WHEN ${spacesMembers.linkId} IS NOT NULL THEN ${spacesMembers.linkId} END))`,\n roots: countDistinct(files.id),\n shares: sql`COUNT(DISTINCT(CASE WHEN ${shares.id} IS NOT NULL THEN ${shares.id} END))`\n }\n }\n this.spacesWithDetailsQuery = this.db\n .select(select)\n .from(unionAlias)\n .leftJoin(spacesMembers, eq(spacesMembers.spaceId, unionAlias.id))\n .leftJoin(users, eq(users.id, spacesMembers.userId))\n .leftJoin(groups, eq(groups.id, spacesMembers.groupId))\n .leftJoin(managers, and(eq(spacesMembers.userId, managers.id), eq(spacesMembers.role, SPACE_ROLE.IS_MANAGER)))\n .leftJoin(spacesRoots, eq(spacesRoots.spaceId, unionAlias.id))\n .leftJoin(files, and(eq(files.id, spacesRoots.fileId), eq(files.ownerId, sql.placeholder('userId'))))\n .leftJoin(shares, and(eq(unionAlias.role, 1), eq(shares.spaceId, unionAlias.id), isNotNull(shares.spaceId)))\n .groupBy(unionAlias.id)\n .prepare()\n }\n const r: MySqlQueryResult = await this.spacesWithDetailsQuery.execute({ userId })\n return r.length ? r.map((s: Partial<SpaceProps>) => new SpaceProps(s)) : []\n }\n\n @CacheDecorator()\n async permissions(userId: number, spaceAlias: string, rootAlias: string): Promise<Partial<SpaceEnv>> {\n if (rootAlias) {\n return await this.spaceAndRootPermissions(userId, spaceAlias, rootAlias)\n }\n return await this.spacePermissions(userId, spaceAlias)\n }\n\n async addRoot(userId: number, spaceId: number, root: SpaceRootProps): Promise<boolean> {\n const r: Partial<SpaceRoot> = { name: root.name, alias: root.alias, permissions: root.permissions, spaceId: spaceId }\n if (root.externalPath) {\n r.externalPath = root.externalPath\n } else {\n r.fileId = await this.getOrCreateUserFile(userId, root.file)\n }\n try {\n dbCheckAffectedRows(await this.db.insert(spacesRoots).values(r as SpaceRoot), 1)\n this.logger.debug(`${this.addRoot.name} - *${root.alias}* (${root.id}) added`)\n return true\n } catch (e) {\n this.logger.error(`${this.addRoot.name} - *${root.alias}* (${root.id}) was not added : ${JSON.stringify(root)} : ${e}`)\n return false\n }\n }\n\n async updateRoot(set: Partial<Record<keyof SpaceRoot, any>>, filters: Partial<Record<keyof SpaceRoot, any>>): Promise<boolean> {\n const where: SQL[] = convertToWhere(spacesRoots, filters)\n try {\n dbCheckAffectedRows(\n await this.db\n .update(spacesRoots)\n .set(set)\n .where(and(...where))\n .limit(1),\n 1\n )\n this.logger.debug(`${this.updateRoot.name} - ${JSON.stringify(filters)} was updated : ${JSON.stringify(set)}`)\n return true\n } catch (e) {\n this.logger.error(`${this.updateRoot.name} - ${JSON.stringify(filters)} was not updated : ${JSON.stringify(set)} : ${e}`)\n return false\n }\n }\n\n getUserFile(userId: number, fileId: number): Promise<Pick<File, 'id' | 'path'>> {\n return this.filesQueries.getUserFile(userId, fileId)\n }\n\n getOrCreateUserFile(userId: number, file: FileProps): Promise<number> {\n return this.filesQueries.getOrCreateUserFile(userId, file)\n }\n\n getOrCreateSpaceFile(fileId: number, file: FileProps, dbFile: FileDBProps): Promise<number> {\n return this.filesQueries.getOrCreateSpaceFile(fileId, file, dbFile)\n }\n\n async clearCachePermissions(spaceAlias: string, rootAliases?: string[], userIds?: number[]) {\n const uIds = userIds ?? ['*']\n for (const uid of uIds) {\n const basePattern = [this.constructor.name, this.permissions.name, uid, spaceAlias]\n const patterns: string[] = []\n if (rootAliases?.length) {\n // clear cache on space root\n rootAliases.forEach((rAlias: string) => patterns.push(this.cache.genSlugKey(...basePattern, rAlias)))\n } else {\n // clear cache on spaces list\n patterns.push(this.cache.genSlugKey(...[this.constructor.name, this.spaces.name, uid, '*']))\n // clear cache on spaces and roots\n patterns.push(this.cache.genSlugKey(...basePattern), this.cache.genSlugKey(...basePattern, '*'))\n }\n for (const p of patterns) {\n const keys = await this.cache.keys(p)\n if (keys.length) {\n this.logger.verbose(`${this.clearCachePermissions.name} - ${JSON.stringify(keys)}`)\n this.cache.mdel(keys).catch((e: Error) => this.logger.error(`${this.clearCachePermissions.name} - ${e}`))\n }\n }\n }\n }\n\n private async removeRoot(id: number): Promise<boolean> {\n try {\n dbCheckAffectedRows(await this.db.delete(spacesRoots).where(eq(spacesRoots.id, id)), 1)\n this.logger.debug(`${this.removeRoot.name} - root (${id}) removed`)\n return true\n } catch (e) {\n this.logger.error(`${this.removeRoot.name} - root (${id}) was not deleted : ${e}`)\n return false\n }\n }\n\n private async spacePermissions(userId: number, spaceAlias: string): Promise<Partial<SpaceEnv>> {\n if (!this.spacePermissionsQuery) {\n const selectUnion: SpaceEnv | SelectedFields<any, any> = {\n id: spaces.id,\n alias: spaces.alias,\n name: spaces.name,\n enabled: spaces.enabled,\n permissions: spacesMembers.permissions,\n role: spacesMembers.role\n }\n const filters: SQL[] = [eq(spaces.alias, sql.placeholder('spaceAlias'))]\n const unionAlias = this.fromUserAndGroups(selectUnion, filters)\n const select: SpaceEnv | SelectedFields<any, any> = {\n id: unionAlias.id,\n alias: unionAlias.alias,\n name: unionAlias.name,\n enabled: unionAlias.enabled,\n permissions: spaceGroupConcatPermissions(unionAlias.permissions),\n role: max(unionAlias.role)\n }\n this.spacePermissionsQuery = this.db.select(select).from(unionAlias).groupBy(unionAlias.id).limit(1).prepare()\n }\n // `userId` is used in `fromUserAndGroups` function\n const r: MySqlQueryResult = await this.spacePermissionsQuery.execute({ userId, spaceAlias })\n return r.length ? r.at(0) : null\n }\n\n private async spaceAndRootPermissions(userId: number, spaceAlias: string, rootAlias: string): Promise<Partial<SpaceEnv>> {\n if (!this.spaceAndRootPermissionsQuery) {\n const selectUnion: SpaceEnv | SelectedFields<any, any> = {\n id: spaces.id,\n alias: spaces.alias,\n name: spaces.name,\n enabled: spaces.enabled,\n permissions: spacesMembers.permissions,\n role: spacesMembers.role,\n rootId: sql`${spacesRoots.id}`.as('rootId'),\n rootAlias: sql`${spacesRoots.alias}`.as('rootAlias'),\n rootName: sql`${spacesRoots.name}`.as('rootName'),\n rootPermissions: sql`${spacesRoots.permissions}`.as('rootPermissions'),\n rootOwnerId: files.ownerId,\n rootOwnerLogin: users.login,\n rootFileId: sql`${files.id}`.as('rootFileId'),\n rootFilePath: filePathSQL(files).as('rootFilePath'),\n rootFileInTrash: files.inTrash,\n rootExternalPath: spacesRoots.externalPath\n }\n const filters: SQL[] = [eq(spaces.alias, sql.placeholder('spaceAlias'))]\n const fromUser = this.fromUserQuery(selectUnion, filters).$dynamic()\n const fromGroups = this.fromGroupsQuery(selectUnion, filters).$dynamic()\n for (const q of [fromUser, fromGroups]) {\n q.leftJoin(spacesRoots, and(eq(spacesRoots.spaceId, spacesMembers.spaceId), eq(spacesRoots.alias, sql.placeholder('rootAlias'))))\n .leftJoin(files, eq(files.id, spacesRoots.fileId))\n .leftJoin(users, eq(users.id, files.ownerId))\n }\n const unionAlias = union(fromUser, fromGroups).as('union_alias')\n const select: SpaceEnv | SelectedFields<any, any> = {\n id: unionAlias.id,\n alias: unionAlias.alias,\n name: unionAlias.name,\n enabled: unionAlias.enabled,\n permissions: spaceGroupConcatPermissions(unionAlias.permissions),\n role: sql<SPACE_ROLE>`MAX(${unionAlias.role})`,\n root: {\n id: unionAlias.rootId,\n alias: unionAlias.rootAlias,\n name: unionAlias.rootName,\n permissions: unionAlias.rootPermissions,\n owner: { id: unionAlias.rootOwnerId, login: unionAlias.rootOwnerLogin },\n file: { id: unionAlias.rootFileId, path: unionAlias.rootFilePath, inTrash: unionAlias.rootFileInTrash },\n externalPath: unionAlias.rootExternalPath\n }\n }\n this.spaceAndRootPermissionsQuery = this.db.select(select).from(unionAlias).groupBy(unionAlias.id).limit(1).prepare()\n }\n // `userId` is used in `fromUserQuery` and `fromGroupsQuery` function\n const r: MySqlQueryResult = await this.spaceAndRootPermissionsQuery.execute({ userId, spaceAlias, rootAlias })\n return r.length ? r.at(0) : null\n }\n\n private fromUserAndGroups(select: SelectedFields<any, any>, filters: SQL[] = []) {\n return union(this.fromUserQuery(select, filters), this.fromGroupsQuery(select, filters)).as('union_alias')\n }\n\n private fromUserQuery(select: SelectedFields<any, any>, filters: SQL[] = []) {\n const where = [eq(spacesMembers.userId, sql.placeholder('userId')), ...filters]\n return this.db\n .select(select)\n .from(spacesMembers)\n .innerJoin(spaces, eq(spacesMembers.spaceId, spaces.id))\n .where(and(...where))\n }\n\n private fromGroupsQuery(select: SelectedFields<any, any>, filters: SQL[] = []) {\n const where = [eq(spacesMembers.groupId, usersGroups.groupId), ...filters]\n return this.db\n .select(select)\n .from(spacesMembers)\n .innerJoin(usersGroups, eq(usersGroups.userId, sql.placeholder('userId')))\n .innerJoin(spaces, eq(spacesMembers.spaceId, spaces.id))\n .where(and(...where))\n }\n}\n"],"names":["SpacesQueries","spaceExistsForAlias","alias","db","query","spaces","findFirst","columns","id","where","eq","spaceRootExistsForAlias","spaceId","rootAlias","spacesRoots","and","selectSpaces","fields","select","convertToSelect","from","spacesQuotaPaths","storageUsage","storageQuota","externalPaths","sql","externalPath","mapWith","JSON","parse","as","leftJoin","isNotNull","groupBy","userIsSpaceManager","userId","shareId","q","spacesMembers","shares","innerJoin","r","role","SPACE_ROLE","IS_MANAGER","limit","getSpaceAsManager","spaceQuery","otherMembers","rootOwner","users","fileOwner","files","linkUsers","name","description","enabled","storageIndexing","createdAt","modifiedAt","disabledAt","roots","concatDistinctObjectsInArray","permissions","dateTimeUTC","owner","login","fullName","userFullNameSQL","email","file","path","filePathSQL","mime","type","USER_ROLE","GUEST","MEMBER_TYPE","USER","spaceRole","groups","GROUP_TYPE","PERSONAL","PGROUP","GROUP","IS_MEMBER","links","linkId","raw","placeholder","isNull","groupId","fileId","ownerId","prepare","space","execute","members","popFromObject","SpaceProps","createSpace","dbGetInsertedId","insert","values","deleteSpace","deleteNow","delete","update","set","Date","dbCheckAffectedRows","updateSpace","logger","debug","stringify","e","error","spaceRootFiles","options","spaceRootFilesQuery","isDir","inTrash","size","ctime","mtime","root","syncs","syncPaths","clientId","syncClients","clientName","info","hasComments","fileHasCommentsSubquerySQL","Boolean","parentId","spaceRootId","withHasComments","withShares","withSyncs","getSpaceRoots","push","getSpaceMemberIds","userIds","groupIds","m","updateMembers","add","remove","status","ACTION","ADD","UPDATE","DELETE","props","Number","isInteger","updateSpaceRoots","addRoot","updateRoot","removeRoot","spaceIds","spaceIdsQuery","unionAlias","fromUserAndGroups","map","withPermissions","fromId","pQuery","spaceFromIdWithPermissionsQuery","spacesWithPermissionsQuery","spacesQuery","selectUnion","spaceGroupConcatPermissions","max","s","spacesWithDetails","spacesWithDetailsQuery","managers","counts","countDistinct","length","spaceAlias","spaceAndRootPermissions","spacePermissions","getOrCreateUserFile","filters","convertToWhere","getUserFile","filesQueries","getOrCreateSpaceFile","dbFile","clearCachePermissions","rootAliases","uIds","uid","basePattern","patterns","forEach","rAlias","cache","genSlugKey","p","keys","verbose","mdel","catch","spacePermissionsQuery","at","spaceAndRootPermissionsQuery","rootId","rootName","rootPermissions","rootOwnerId","rootOwnerLogin","rootFileId","rootFilePath","rootFileInTrash","rootExternalPath","fromUser","fromUserQuery","$dynamic","fromGroups","fromGroupsQuery","union","usersGroups","Logger"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../backend/src/applications/spaces/services/spaces-queries.service.ts"],"sourcesContent":["import { Inject, Injectable, Logger } from '@nestjs/common'\nimport { and, countDistinct, eq, isNotNull, isNull, max, SelectedFields, SQL, sql } from 'drizzle-orm'\nimport { alias, union } from 'drizzle-orm/mysql-core'\nimport { MySql2PreparedQuery, MySqlQueryResult } from 'drizzle-orm/mysql2'\nimport { ACTION } from '../../../common/constants'\nimport { popFromObject } from '../../../common/shared'\nimport { CacheDecorator } from '../../../infrastructure/cache/cache.decorator'\nimport { Cache } from '../../../infrastructure/cache/services/cache.service'\nimport { DB_TOKEN_PROVIDER } from '../../../infrastructure/database/constants'\nimport { DBSchema } from '../../../infrastructure/database/interfaces/database.interface'\nimport {\n concatDistinctObjectsInArray,\n convertToSelect,\n convertToWhere,\n dateTimeUTC,\n dbCheckAffectedRows,\n dbGetInsertedId\n} from '../../../infrastructure/database/utils'\nimport { fileHasCommentsSubquerySQL } from '../../comments/schemas/comments.schema'\nimport { FileDBProps } from '../../files/interfaces/file-db-props.interface'\nimport { FileProps } from '../../files/interfaces/file-props.interface'\nimport { File } from '../../files/schemas/file.interface'\nimport { filePathSQL, files } from '../../files/schemas/files.schema'\nimport { FilesQueries } from '../../files/services/files-queries.service'\nimport { links } from '../../links/schemas/links.schema'\nimport { shares } from '../../shares/schemas/shares.schema'\nimport { syncClients } from '../../sync/schemas/sync-clients.schema'\nimport { syncPaths } from '../../sync/schemas/sync-paths.schema'\nimport { GROUP_TYPE } from '../../users/constants/group'\nimport { MEMBER_TYPE } from '../../users/constants/member'\nimport { USER_ROLE } from '../../users/constants/user'\nimport { Member } from '../../users/interfaces/member.interface'\nimport { groups } from '../../users/schemas/groups.schema'\nimport { usersGroups } from '../../users/schemas/users-groups.schema'\nimport { userFullNameSQL, users } from '../../users/schemas/users.schema'\nimport { SPACE_ROLE } from '../constants/spaces'\nimport { SpaceMemberDto } from '../dto/create-or-update-space.dto'\nimport { SpaceEnv } from '../models/space-env.model'\nimport { SpaceProps } from '../models/space-props.model'\nimport { SpaceRootProps } from '../models/space-root-props.model'\nimport { SpaceMembers } from '../schemas/space-members.interface'\nimport { SpaceRoot } from '../schemas/space-root.interface'\nimport { Space } from '../schemas/space.interface'\nimport { spacesMembers } from '../schemas/spaces-members.schema'\nimport { spacesRoots } from '../schemas/spaces-roots.schema'\nimport { spaceGroupConcatPermissions, spaces } from '../schemas/spaces.schema'\n\n@Injectable()\nexport class SpacesQueries {\n private readonly logger = new Logger(SpacesQueries.name)\n private spacePermissionsQuery: MySql2PreparedQuery<any> = null\n private spaceAndRootPermissionsQuery: MySql2PreparedQuery<any> = null\n private spacesWithDetailsQuery: MySql2PreparedQuery<any> = null\n private spacesQuery: MySql2PreparedQuery<any> = null\n private spaceIdsQuery: MySql2PreparedQuery<any> = null\n private spaceQuery: MySql2PreparedQuery<any> = null\n private spacesWithPermissionsQuery: MySql2PreparedQuery<any> = null\n private spaceFromIdWithPermissionsQuery: MySql2PreparedQuery<any> = null\n private spaceRootFilesQuery: MySql2PreparedQuery<any> = null\n\n constructor(\n @Inject(DB_TOKEN_PROVIDER) private readonly db: DBSchema,\n public readonly cache: Cache,\n private readonly filesQueries: FilesQueries\n ) {}\n\n spaceExistsForAlias(alias: string): any | undefined {\n return this.db.query.spaces.findFirst({ columns: { id: true }, where: eq(spaces.alias, alias) })\n }\n\n spaceRootExistsForAlias(spaceId: number, rootAlias: string): any | undefined {\n return this.db.query.spacesRoots.findFirst({\n columns: { id: true },\n where: and(eq(spacesRoots.spaceId, spaceId), eq(spacesRoots.alias, rootAlias))\n })\n }\n\n selectSpaces(fields: Partial<keyof Space>[] = ['id', 'alias', 'name'], where: SQL[]): Promise<Partial<Space>[]> {\n const select: Record<keyof Space, any> = convertToSelect(spaces, fields)\n return this.db\n .select(select)\n .from(spaces)\n .where(and(...where))\n }\n\n spacesQuotaPaths(spaceId?: number): Promise<(Partial<Space> & { externalPaths: string[] })[]> {\n return this.db\n .select({\n id: spaces.id,\n alias: spaces.alias,\n storageUsage: spaces.storageUsage,\n storageQuota: spaces.storageQuota,\n externalPaths: sql<string[]>`JSON_ARRAYAGG(${spacesRoots.externalPath})`.mapWith(JSON.parse).as('externalPaths')\n })\n .from(spaces)\n .leftJoin(spacesRoots, and(eq(spacesRoots.spaceId, spaces.id), isNotNull(spacesRoots.externalPath)))\n .where(and(...[...(spaceId ? [eq(spaces.id, spaceId)] : [])]))\n .groupBy(spaces.id)\n }\n\n async userIsSpaceManager(userId: number, spaceId: number, shareId?: number): Promise<boolean> {\n /* Check if user is a space manager */\n const q = this.db\n .select({\n userId: spacesMembers.userId,\n spaceId: spacesMembers.spaceId,\n ...(shareId && { shareId: shares.id })\n })\n .from(spacesMembers)\n if (shareId) {\n q.innerJoin(shares, and(eq(shares.id, shareId), eq(shares.spaceId, spaceId)))\n }\n const [r] = await q\n .where(and(eq(spacesMembers.spaceId, spaceId), eq(spacesMembers.userId, userId), eq(spacesMembers.role, SPACE_ROLE.IS_MANAGER)))\n .limit(1)\n return r && r.userId === userId && r.spaceId === spaceId && (shareId ? r.shareId === shareId : true)\n }\n\n async getSpaceAsManager(userId: number, spaceId: number): Promise<SpaceProps> {\n /* User must be the manager of the space */\n // todo: make a condition if current user is an admin\n if (!this.spaceQuery) {\n const otherMembers: any = alias(spacesMembers, 'otherMembers')\n const rootOwner: any = alias(users, 'rootOwner')\n // fileOwner: avoid providing file path information for roots not owned by the current user\n const fileOwner: any = alias(files, 'fileOwner')\n const linkUsers: any = alias(users, 'linkUsers')\n this.spaceQuery = this.db\n .select({\n id: spaces.id,\n name: spaces.name,\n alias: spaces.alias,\n description: spaces.description,\n enabled: spaces.enabled,\n storageUsage: spaces.storageUsage,\n storageQuota: spaces.storageQuota,\n storageIndexing: spaces.storageIndexing,\n createdAt: spaces.createdAt,\n modifiedAt: spaces.modifiedAt,\n disabledAt: spaces.disabledAt,\n roots: concatDistinctObjectsInArray(spacesRoots.id, {\n id: spacesRoots.id,\n name: spacesRoots.name,\n alias: spacesRoots.alias,\n externalPath: spacesRoots.externalPath,\n permissions: spacesRoots.permissions,\n createdAt: dateTimeUTC(spacesRoots.createdAt),\n owner: { id: rootOwner.id, login: rootOwner.login, fullName: userFullNameSQL(rootOwner), email: rootOwner.email },\n // fileOwner: (hide if not owner), files: allow fields\n file: { id: fileOwner.id, path: filePathSQL(fileOwner), mime: files.mime }\n }),\n users: concatDistinctObjectsInArray(users.id, {\n id: users.id,\n login: users.login,\n name: userFullNameSQL(users),\n type: sql`IF (${users.role} = ${USER_ROLE.GUEST}, ${MEMBER_TYPE.GUEST}, ${MEMBER_TYPE.USER})`,\n spaceRole: otherMembers.role,\n description: users.email,\n permissions: otherMembers.permissions,\n createdAt: dateTimeUTC(otherMembers.createdAt)\n }),\n groups: concatDistinctObjectsInArray(groups.id, {\n id: groups.id,\n name: groups.name,\n type: sql`IF (${groups.type} = ${GROUP_TYPE.PERSONAL}, ${MEMBER_TYPE.PGROUP}, ${MEMBER_TYPE.GROUP})`,\n spaceRole: sql`${SPACE_ROLE.IS_MEMBER}`,\n description: groups.description,\n permissions: otherMembers.permissions,\n createdAt: dateTimeUTC(otherMembers.createdAt)\n }),\n links: concatDistinctObjectsInArray(linkUsers.id, {\n id: linkUsers.id,\n linkId: links.id,\n name: links.name,\n type: sql.raw(`'${MEMBER_TYPE.USER}'`),\n spaceRole: sql`${SPACE_ROLE.IS_MEMBER}`,\n description: links.email,\n permissions: otherMembers.permissions,\n createdAt: dateTimeUTC(otherMembers.createdAt)\n })\n } satisfies SpaceProps | SelectedFields<any, any>)\n .from(spacesMembers)\n .innerJoin(\n spaces,\n and(\n eq(spaces.id, spacesMembers.spaceId),\n eq(spacesMembers.spaceId, sql.placeholder('spaceId')),\n eq(spacesMembers.userId, sql.placeholder('userId')),\n eq(spacesMembers.role, SPACE_ROLE.IS_MANAGER)\n )\n )\n .innerJoin(otherMembers, eq(otherMembers.spaceId, spaces.id))\n .leftJoin(users, and(isNull(otherMembers.linkId), eq(otherMembers.userId, users.id)))\n .leftJoin(linkUsers, and(isNotNull(otherMembers.linkId), eq(linkUsers.id, otherMembers.userId)))\n .leftJoin(links, and(eq(links.userId, linkUsers.id), eq(links.id, otherMembers.linkId)))\n .leftJoin(groups, eq(otherMembers.groupId, groups.id))\n .leftJoin(spacesRoots, eq(spacesRoots.spaceId, spaces.id))\n .leftJoin(files, eq(spacesRoots.fileId, files.id))\n .leftJoin(rootOwner, eq(rootOwner.id, files.ownerId))\n .leftJoin(fileOwner, and(eq(fileOwner.id, files.id), eq(fileOwner.ownerId, sql.placeholder('userId'))))\n .groupBy(spaces.id)\n .limit(1)\n .prepare()\n }\n const [space] = await this.spaceQuery.execute({ userId, spaceId })\n if (!space) {\n return null\n }\n // merge members\n space.members = [...popFromObject('users', space), ...popFromObject('groups', space), ...popFromObject('links', space)]\n return new SpaceProps(space, userId)\n }\n\n async createSpace(space: SpaceProps): Promise<number> {\n return dbGetInsertedId(await this.db.insert(spaces).values(space))\n }\n\n async deleteSpace(spaceId: number, deleteNow = false): Promise<boolean> {\n let r: MySqlQueryResult\n if (deleteNow) {\n r = await this.db.delete(spaces).where(eq(spaces.id, spaceId))\n } else {\n r = await this.db\n .update(spaces)\n .set({ enabled: false, disabledAt: new Date() } as Space)\n .where(eq(spaces.id, spaceId))\n }\n return dbCheckAffectedRows(r, 1)\n }\n\n async updateSpace(id: number, set: Partial<Record<keyof Space, any>>): Promise<boolean> {\n try {\n dbCheckAffectedRows(await this.db.update(spaces).set(set).where(eq(spaces.id, id)), 1)\n this.logger.debug({ tag: this.updateSpace.name, msg: `space (${id}) was updated : ${JSON.stringify(set)}` })\n return true\n } catch (e) {\n this.logger.error({ tag: this.updateSpace.name, msg: `space (${id}) was not updated : ${JSON.stringify(set)} : ${e}` })\n return false\n }\n }\n\n async spaceRootFiles(\n userId: number,\n spaceId: number,\n options: {\n withShares?: boolean\n withHasComments?: boolean\n withSyncs?: boolean\n }\n ): Promise<FileProps[]> {\n if (!this.spaceRootFilesQuery) {\n const select: FileProps | SelectedFields<any, any> = {\n id: files.id,\n path: filePathSQL(files),\n isDir: files.isDir,\n inTrash: files.inTrash,\n size: files.size,\n ctime: files.ctime,\n mtime: files.mtime,\n mime: files.mime,\n root: {\n id: spacesRoots.id,\n alias: spacesRoots.alias,\n name: spacesRoots.name,\n externalPath: spacesRoots.externalPath,\n permissions: spacesRoots.permissions,\n owner: { id: users.id, login: users.login, email: users.email, fullName: userFullNameSQL(users) }\n },\n shares: sql`IF (${sql.placeholder('withShares')}, ${concatDistinctObjectsInArray(shares.id, {\n id: shares.id,\n alias: shares.alias,\n name: shares.name,\n type: shares.type\n })}, '[]')`.mapWith(JSON.parse),\n syncs: sql`IF (${sql.placeholder('withSyncs')}, ${concatDistinctObjectsInArray(syncPaths.id, {\n id: syncPaths.id,\n clientId: syncClients.id,\n clientName: sql`JSON_VALUE(${syncClients.info}, '$.node')`\n })}, '[]')`.mapWith(JSON.parse),\n hasComments: sql<boolean>`IF (${sql.placeholder('withHasComments')}, ${fileHasCommentsSubquerySQL(files.id)}, 0)`.mapWith(Boolean)\n }\n this.spaceRootFilesQuery = this.db\n .select(select)\n .from(spacesRoots)\n .leftJoin(files, eq(files.id, spacesRoots.fileId))\n .leftJoin(users, eq(users.id, files.ownerId))\n .leftJoin(\n shares,\n and(\n eq(sql.placeholder('withShares'), sql.raw('1')),\n eq(shares.ownerId, sql.placeholder('userId')),\n isNull(shares.fileId),\n isNull(shares.parentId),\n eq(shares.spaceRootId, spacesRoots.id)\n )\n )\n .leftJoin(syncClients, and(eq(sql.placeholder('withSyncs'), sql.raw('1')), eq(syncClients.ownerId, sql.placeholder('userId'))))\n .leftJoin(\n syncPaths,\n and(\n eq(sql.placeholder('withSyncs'), sql.raw('1')),\n eq(syncPaths.clientId, syncClients.id),\n eq(syncPaths.spaceId, sql.placeholder('spaceId')),\n eq(syncPaths.spaceRootId, spacesRoots.id),\n isNull(syncPaths.fileId)\n )\n )\n .where(eq(spacesRoots.spaceId, sql.placeholder('spaceId')))\n .groupBy(files.id, spacesRoots.id)\n .prepare()\n }\n return this.spaceRootFilesQuery.execute({\n userId,\n spaceId,\n withHasComments: +!!options.withHasComments,\n withShares: +!!options.withShares,\n withSyncs: +!!options.withSyncs\n })\n }\n\n async getSpaceRoots(spaceId: number, userId?: number): Promise<SpaceRootProps[]> {\n const where: SQL<any>[] = [eq(spacesRoots.spaceId, spaceId)]\n if (userId) {\n where.push(eq(files.ownerId, userId))\n }\n return (await this.db\n .select({\n id: spacesRoots.id,\n alias: spacesRoots.alias,\n name: spacesRoots.name,\n permissions: spacesRoots.permissions,\n createdAt: spacesRoots.createdAt,\n ...(!userId && { owner: { id: files.ownerId } }),\n file: {\n id: files.id,\n path: filePathSQL(files),\n mime: files.mime\n }\n })\n .from(spacesRoots)\n .leftJoin(files, eq(files.id, spacesRoots.fileId))\n .where(and(...where))) as SpaceRootProps[]\n }\n\n async getSpaceMemberIds(spaceId: number): Promise<{ groupIds: number[]; userIds: number[] }> {\n const members = { userIds: [], groupIds: [] }\n for (const m of await this.db\n .select({\n userId: spacesMembers.userId,\n groupId: spacesMembers.groupId\n })\n .from(spacesMembers)\n .where(eq(spacesMembers.spaceId, spaceId))) {\n if (m.userId) {\n members.userIds.push(m.userId)\n } else {\n members.groupIds.push(m.groupId)\n }\n }\n return members\n }\n\n async updateMembers(\n spaceId: number,\n add: SpaceMemberDto[],\n update: Record<string | 'object', Partial<SpaceMembers> | SpaceMemberDto>[],\n remove: SpaceMemberDto[]\n ): Promise<Record<Exclude<ACTION, ACTION.DELETE_PERMANENTLY>, { userIds: number[]; groupIds: number[] }>> {\n // store status\n const status: Record<Exclude<ACTION, ACTION.DELETE_PERMANENTLY>, { userIds: number[]; groupIds: number[] }> = {\n [ACTION.ADD]: { userIds: [], groupIds: [] },\n [ACTION.UPDATE]: { userIds: [], groupIds: [] },\n [ACTION.DELETE]: { userIds: [], groupIds: [] }\n }\n // add\n for (const m of add) {\n try {\n dbCheckAffectedRows(\n await this.db.insert(spacesMembers).values({\n spaceId: spaceId,\n ...(m.type === MEMBER_TYPE.USER || m.type === MEMBER_TYPE.GUEST ? { userId: m.id } : { groupId: m.id }),\n role: m.spaceRole,\n permissions: m.permissions\n } as SpaceMembers),\n 1\n )\n status[ACTION.ADD][`${m.type === MEMBER_TYPE.USER || m.type === MEMBER_TYPE.GUEST ? 'userIds' : 'groupIds'}`].push(m.id)\n this.logger.debug({ tag: this.updateMembers.name, msg: `${m.type} (${m.id}) added to the space (${spaceId})` })\n } catch (e) {\n this.logger.error({ tag: this.updateMembers.name, msg: `${m.type} (${m.id}) was not added to the space ${spaceId} -> : ${e}` })\n }\n }\n // update\n for (const props of update) {\n const m: SpaceMemberDto = popFromObject('object', props)\n const spaceRole = popFromObject('spaceRole', props)\n if (Number.isInteger(spaceRole)) {\n props.role = spaceRole\n }\n try {\n dbCheckAffectedRows(\n await this.db\n .update(spacesMembers)\n .set(props)\n .where(\n and(\n eq(spacesMembers.spaceId, spaceId),\n eq(m.type === MEMBER_TYPE.USER || m.type === MEMBER_TYPE.GUEST ? spacesMembers.userId : spacesMembers.groupId, m.id)\n )\n )\n .limit(1),\n 1\n )\n status[ACTION.UPDATE][`${m.type === MEMBER_TYPE.USER || m.type === MEMBER_TYPE.GUEST ? 'userIds' : 'groupIds'}`].push(m.id)\n this.logger.debug({ tag: this.updateMembers.name, msg: `${m.type} (${m.id}) was updated on space (${spaceId}) : ${JSON.stringify(props)}` })\n } catch (e) {\n this.logger.error({\n tag: this.updateMembers.name,\n msg: `${m.type} (${m.id}) was not updated on space (${spaceId}) : ${JSON.stringify(props)} : ${e}`\n })\n }\n }\n // remove\n for (const m of remove) {\n try {\n dbCheckAffectedRows(\n await this.db\n .delete(spacesMembers)\n .where(\n and(\n eq(spacesMembers.spaceId, spaceId),\n eq(m.type === MEMBER_TYPE.USER || m.type === MEMBER_TYPE.GUEST ? spacesMembers.userId : spacesMembers.groupId, m.id)\n )\n ),\n 1\n )\n status[ACTION.DELETE][`${m.type === MEMBER_TYPE.USER || m.type === MEMBER_TYPE.GUEST ? 'userIds' : 'groupIds'}`].push(m.id)\n this.logger.debug({ tag: this.updateMembers.name, msg: `${m.type} (${m.id}) removed from space (${spaceId})` })\n } catch (e) {\n this.logger.error({ tag: this.updateMembers.name, msg: `${m.type} (${m.id}) was not removed from space (${spaceId}) : ${e}` })\n }\n }\n return status\n }\n\n async updateSpaceRoots(\n userId: number,\n spaceId: number,\n add: SpaceRootProps[],\n update: Record<string | 'object', Partial<SpaceRootProps> | SpaceRootProps>[],\n remove: SpaceRootProps[]\n ): Promise<Record<Exclude<ACTION, ACTION.DELETE_PERMANENTLY>, SpaceRootProps[]>> {\n // store status\n const status = {} as Record<Exclude<ACTION, ACTION.DELETE_PERMANENTLY>, SpaceRootProps[]>\n // add\n for (const r of add) {\n if (await this.addRoot(userId, spaceId, r)) {\n ;(status[ACTION.ADD] ||= []).push(r)\n }\n }\n // update\n for (const props of update) {\n const r: SpaceRootProps = popFromObject('object', props)\n if (await this.updateRoot(props, { id: r.id })) {\n ;(status[ACTION.UPDATE] ||= []).push(r)\n }\n }\n // delete\n for (const r of remove) {\n if (await this.removeRoot(r.id)) {\n ;(status[ACTION.DELETE] ||= []).push(r)\n }\n }\n return status\n }\n\n @CacheDecorator()\n async spaceIds(userId: number): Promise<number[]> {\n if (!this.spaceIdsQuery) {\n const unionAlias = this.fromUserAndGroups({ id: spaces.id })\n this.spaceIdsQuery = this.db.select({ id: unionAlias.id }).from(unionAlias).groupBy(unionAlias.id).prepare()\n }\n // `userId` is used in `fromUserAndGroups` function\n return (await this.spaceIdsQuery.execute({ userId })).map((r: { id: number }) => r.id)\n }\n\n @CacheDecorator()\n async spaces(userId: number, withPermissions = false, fromId?: number): Promise<SpaceProps[]> {\n let pQuery: MySql2PreparedQuery<any>\n if (fromId) {\n pQuery = this.spaceFromIdWithPermissionsQuery\n } else if (withPermissions) {\n pQuery = this.spacesWithPermissionsQuery\n } else {\n pQuery = this.spacesQuery\n }\n if (!pQuery) {\n const selectUnion: Space | SelectedFields<any, any> = {\n id: spaces.id,\n alias: spaces.alias,\n name: spaces.name,\n description: spaces.description,\n enabled: spaces.enabled,\n createdAt: spaces.createdAt,\n modifiedAt: spaces.modifiedAt,\n ...(withPermissions && { permissions: spacesMembers.permissions, role: spacesMembers.role })\n }\n const unionAlias = this.fromUserAndGroups(selectUnion)\n const select: Space | SelectedFields<any, any> = {\n id: unionAlias.id,\n alias: unionAlias.alias,\n name: unionAlias.name,\n description: unionAlias.description,\n enabled: unionAlias.enabled,\n createdAt: unionAlias.createdAt,\n modifiedAt: unionAlias.modifiedAt,\n ...(withPermissions && {\n permissions: spaceGroupConcatPermissions(unionAlias.permissions),\n role: max(unionAlias.role)\n })\n }\n if (fromId) {\n pQuery = this.db\n .select(select)\n .from(unionAlias)\n .where(eq(unionAlias.id, sql.placeholder('fromId')))\n .limit(1)\n .prepare()\n this.spaceFromIdWithPermissionsQuery = pQuery\n } else {\n pQuery = this.db.select(select).from(unionAlias).groupBy(unionAlias.id).prepare()\n if (withPermissions) {\n this.spacesWithPermissionsQuery = pQuery\n } else {\n this.spacesQuery = pQuery\n }\n }\n }\n // SpaceProps instance is required, if the user is a space manager, he must have all permissions\n // `userId` is used in `fromUserAndGroups` function\n return (await pQuery.execute({ userId, fromId })).map((s: Partial<SpaceProps>) => new SpaceProps(s))\n }\n\n async spacesWithDetails(userId: number): Promise<SpaceProps[]> {\n if (!this.spacesWithDetailsQuery) {\n const selectUnion: Space | SelectedFields<any, any> = {\n id: spaces.id,\n alias: spaces.alias,\n name: spaces.name,\n description: spaces.description,\n enabled: spaces.enabled,\n permissions: spacesMembers.permissions,\n role: spacesMembers.role,\n createdAt: spaces.createdAt,\n modifiedAt: spaces.modifiedAt,\n disabledAt: spaces.disabledAt\n }\n const unionAlias = this.fromUserAndGroups(selectUnion)\n const managers: any = alias(users, 'managers')\n const select: Space | SelectedFields<any, any> = {\n id: unionAlias.id,\n alias: unionAlias.alias,\n name: unionAlias.name,\n description: unionAlias.description,\n enabled: unionAlias.enabled,\n permissions: spaceGroupConcatPermissions(unionAlias.permissions),\n role: max(unionAlias.role),\n modifiedAt: unionAlias.modifiedAt,\n createdAt: unionAlias.createdAt,\n disabledAt: unionAlias.disabledAt,\n members: concatDistinctObjectsInArray(managers.id, {\n id: managers.id,\n login: managers.login,\n name: userFullNameSQL(managers),\n description: managers.email,\n type: sql.raw(`'${MEMBER_TYPE.USER}'`),\n spaceRole: spacesMembers.role,\n permissions: sql<string>`''`,\n createdAt: dateTimeUTC(spacesMembers.createdAt)\n } satisfies Record<keyof Pick<Member, 'id' | 'name' | 'login' | 'description' | 'type' | 'permissions' | 'spaceRole' | 'createdAt'>, any>),\n counts: {\n users: sql`COUNT(DISTINCT(CASE WHEN ${spacesMembers.userId} IS NOT NULL AND ${spacesMembers.linkId} IS NULL THEN ${spacesMembers.userId} END))`,\n groups: countDistinct(spacesMembers.groupId),\n links: sql`COUNT(DISTINCT(CASE WHEN ${spacesMembers.linkId} IS NOT NULL THEN ${spacesMembers.linkId} END))`,\n roots: countDistinct(files.id),\n shares: sql`COUNT(DISTINCT(CASE WHEN ${shares.id} IS NOT NULL THEN ${shares.id} END))`\n }\n }\n this.spacesWithDetailsQuery = this.db\n .select(select)\n .from(unionAlias)\n .leftJoin(spacesMembers, eq(spacesMembers.spaceId, unionAlias.id))\n .leftJoin(users, eq(users.id, spacesMembers.userId))\n .leftJoin(groups, eq(groups.id, spacesMembers.groupId))\n .leftJoin(managers, and(eq(spacesMembers.userId, managers.id), eq(spacesMembers.role, SPACE_ROLE.IS_MANAGER)))\n .leftJoin(spacesRoots, eq(spacesRoots.spaceId, unionAlias.id))\n .leftJoin(files, and(eq(files.id, spacesRoots.fileId), eq(files.ownerId, sql.placeholder('userId'))))\n .leftJoin(shares, and(eq(unionAlias.role, 1), eq(shares.spaceId, unionAlias.id), isNotNull(shares.spaceId)))\n .groupBy(unionAlias.id)\n .prepare()\n }\n const r: MySqlQueryResult = await this.spacesWithDetailsQuery.execute({ userId })\n return r.length ? r.map((s: Partial<SpaceProps>) => new SpaceProps(s)) : []\n }\n\n @CacheDecorator()\n async permissions(userId: number, spaceAlias: string, rootAlias: string): Promise<Partial<SpaceEnv>> {\n if (rootAlias) {\n return await this.spaceAndRootPermissions(userId, spaceAlias, rootAlias)\n }\n return await this.spacePermissions(userId, spaceAlias)\n }\n\n async addRoot(userId: number, spaceId: number, root: SpaceRootProps): Promise<boolean> {\n const r: Partial<SpaceRoot> = { name: root.name, alias: root.alias, permissions: root.permissions, spaceId: spaceId }\n if (root.externalPath) {\n r.externalPath = root.externalPath\n } else {\n r.fileId = await this.getOrCreateUserFile(userId, root.file)\n }\n try {\n dbCheckAffectedRows(await this.db.insert(spacesRoots).values(r as SpaceRoot), 1)\n this.logger.debug({ tag: this.addRoot.name, msg: `*${root.alias}* (${root.id}) added` })\n return true\n } catch (e) {\n this.logger.error({ tag: this.addRoot.name, msg: `*${root.alias}* (${root.id}) was not added : ${JSON.stringify(root)} : ${e}` })\n return false\n }\n }\n\n async updateRoot(set: Partial<Record<keyof SpaceRoot, any>>, filters: Partial<Record<keyof SpaceRoot, any>>): Promise<boolean> {\n const where: SQL[] = convertToWhere(spacesRoots, filters)\n try {\n dbCheckAffectedRows(\n await this.db\n .update(spacesRoots)\n .set(set)\n .where(and(...where))\n .limit(1),\n 1\n )\n this.logger.debug({ tag: this.updateRoot.name, msg: `${JSON.stringify(filters)} was updated : ${JSON.stringify(set)}` })\n return true\n } catch (e) {\n this.logger.error({ tag: this.updateRoot.name, msg: `${JSON.stringify(filters)} was not updated : ${JSON.stringify(set)} : ${e}` })\n return false\n }\n }\n\n getUserFile(userId: number, fileId: number): Promise<Pick<File, 'id' | 'path'>> {\n return this.filesQueries.getUserFile(userId, fileId)\n }\n\n getOrCreateUserFile(userId: number, file: FileProps): Promise<number> {\n return this.filesQueries.getOrCreateUserFile(userId, file)\n }\n\n getOrCreateSpaceFile(fileId: number, file: FileProps, dbFile: FileDBProps): Promise<number> {\n return this.filesQueries.getOrCreateSpaceFile(fileId, file, dbFile)\n }\n\n async clearCachePermissions(spaceAlias: string, rootAliases?: string[], userIds?: number[]) {\n const uIds = userIds ?? ['*']\n for (const uid of uIds) {\n const basePattern = [this.constructor.name, this.permissions.name, uid, spaceAlias]\n const patterns: string[] = []\n if (rootAliases?.length) {\n // clear cache on space root\n rootAliases.forEach((rAlias: string) => patterns.push(this.cache.genSlugKey(...basePattern, rAlias)))\n } else {\n // clear cache on spaces list\n patterns.push(this.cache.genSlugKey(...[this.constructor.name, this.spaces.name, uid, '*']))\n // clear cache on spaces and roots\n patterns.push(this.cache.genSlugKey(...basePattern), this.cache.genSlugKey(...basePattern, '*'))\n }\n for (const p of patterns) {\n const keys = await this.cache.keys(p)\n if (keys.length) {\n this.logger.verbose({ tag: this.clearCachePermissions.name, msg: `${JSON.stringify(keys)}` })\n this.cache.mdel(keys).catch((e: Error) => this.logger.error({ tag: this.clearCachePermissions.name, msg: `${e}` }))\n }\n }\n }\n }\n\n private async removeRoot(id: number): Promise<boolean> {\n try {\n dbCheckAffectedRows(await this.db.delete(spacesRoots).where(eq(spacesRoots.id, id)), 1)\n this.logger.debug({ tag: this.removeRoot.name, msg: `root (${id}) removed` })\n return true\n } catch (e) {\n this.logger.error({ tag: this.removeRoot.name, msg: `root (${id}) was not deleted : ${e}` })\n return false\n }\n }\n\n private async spacePermissions(userId: number, spaceAlias: string): Promise<Partial<SpaceEnv>> {\n if (!this.spacePermissionsQuery) {\n const selectUnion: SpaceEnv | SelectedFields<any, any> = {\n id: spaces.id,\n alias: spaces.alias,\n name: spaces.name,\n enabled: spaces.enabled,\n permissions: spacesMembers.permissions,\n role: spacesMembers.role\n }\n const filters: SQL[] = [eq(spaces.alias, sql.placeholder('spaceAlias'))]\n const unionAlias = this.fromUserAndGroups(selectUnion, filters)\n const select: SpaceEnv | SelectedFields<any, any> = {\n id: unionAlias.id,\n alias: unionAlias.alias,\n name: unionAlias.name,\n enabled: unionAlias.enabled,\n permissions: spaceGroupConcatPermissions(unionAlias.permissions),\n role: max(unionAlias.role)\n }\n this.spacePermissionsQuery = this.db.select(select).from(unionAlias).groupBy(unionAlias.id).limit(1).prepare()\n }\n // `userId` is used in `fromUserAndGroups` function\n const r: MySqlQueryResult = await this.spacePermissionsQuery.execute({ userId, spaceAlias })\n return r.length ? r.at(0) : null\n }\n\n private async spaceAndRootPermissions(userId: number, spaceAlias: string, rootAlias: string): Promise<Partial<SpaceEnv>> {\n if (!this.spaceAndRootPermissionsQuery) {\n const selectUnion: SpaceEnv | SelectedFields<any, any> = {\n id: spaces.id,\n alias: spaces.alias,\n name: spaces.name,\n enabled: spaces.enabled,\n permissions: spacesMembers.permissions,\n role: spacesMembers.role,\n rootId: sql`${spacesRoots.id}`.as('rootId'),\n rootAlias: sql`${spacesRoots.alias}`.as('rootAlias'),\n rootName: sql`${spacesRoots.name}`.as('rootName'),\n rootPermissions: sql`${spacesRoots.permissions}`.as('rootPermissions'),\n rootOwnerId: files.ownerId,\n rootOwnerLogin: users.login,\n rootFileId: sql`${files.id}`.as('rootFileId'),\n rootFilePath: filePathSQL(files).as('rootFilePath'),\n rootFileInTrash: files.inTrash,\n rootExternalPath: spacesRoots.externalPath\n }\n const filters: SQL[] = [eq(spaces.alias, sql.placeholder('spaceAlias'))]\n const fromUser = this.fromUserQuery(selectUnion, filters).$dynamic()\n const fromGroups = this.fromGroupsQuery(selectUnion, filters).$dynamic()\n for (const q of [fromUser, fromGroups]) {\n q.leftJoin(spacesRoots, and(eq(spacesRoots.spaceId, spacesMembers.spaceId), eq(spacesRoots.alias, sql.placeholder('rootAlias'))))\n .leftJoin(files, eq(files.id, spacesRoots.fileId))\n .leftJoin(users, eq(users.id, files.ownerId))\n }\n const unionAlias = union(fromUser, fromGroups).as('union_alias')\n const select: SpaceEnv | SelectedFields<any, any> = {\n id: unionAlias.id,\n alias: unionAlias.alias,\n name: unionAlias.name,\n enabled: unionAlias.enabled,\n permissions: spaceGroupConcatPermissions(unionAlias.permissions),\n role: sql<SPACE_ROLE>`MAX(${unionAlias.role})`,\n root: {\n id: unionAlias.rootId,\n alias: unionAlias.rootAlias,\n name: unionAlias.rootName,\n permissions: unionAlias.rootPermissions,\n owner: { id: unionAlias.rootOwnerId, login: unionAlias.rootOwnerLogin },\n file: { id: unionAlias.rootFileId, path: unionAlias.rootFilePath, inTrash: unionAlias.rootFileInTrash },\n externalPath: unionAlias.rootExternalPath\n }\n }\n this.spaceAndRootPermissionsQuery = this.db.select(select).from(unionAlias).groupBy(unionAlias.id).limit(1).prepare()\n }\n // `userId` is used in `fromUserQuery` and `fromGroupsQuery` function\n const r: MySqlQueryResult = await this.spaceAndRootPermissionsQuery.execute({ userId, spaceAlias, rootAlias })\n return r.length ? r.at(0) : null\n }\n\n private fromUserAndGroups(select: SelectedFields<any, any>, filters: SQL[] = []) {\n return union(this.fromUserQuery(select, filters), this.fromGroupsQuery(select, filters)).as('union_alias')\n }\n\n private fromUserQuery(select: SelectedFields<any, any>, filters: SQL[] = []) {\n const where = [eq(spacesMembers.userId, sql.placeholder('userId')), ...filters]\n return this.db\n .select(select)\n .from(spacesMembers)\n .innerJoin(spaces, eq(spacesMembers.spaceId, spaces.id))\n .where(and(...where))\n }\n\n private fromGroupsQuery(select: SelectedFields<any, any>, filters: SQL[] = []) {\n const where = [eq(spacesMembers.groupId, usersGroups.groupId), ...filters]\n return this.db\n .select(select)\n .from(spacesMembers)\n .innerJoin(usersGroups, eq(usersGroups.userId, sql.placeholder('userId')))\n .innerJoin(spaces, eq(spacesMembers.spaceId, spaces.id))\n .where(and(...where))\n }\n}\n"],"names":["SpacesQueries","spaceExistsForAlias","alias","db","query","spaces","findFirst","columns","id","where","eq","spaceRootExistsForAlias","spaceId","rootAlias","spacesRoots","and","selectSpaces","fields","select","convertToSelect","from","spacesQuotaPaths","storageUsage","storageQuota","externalPaths","sql","externalPath","mapWith","JSON","parse","as","leftJoin","isNotNull","groupBy","userIsSpaceManager","userId","shareId","q","spacesMembers","shares","innerJoin","r","role","SPACE_ROLE","IS_MANAGER","limit","getSpaceAsManager","spaceQuery","otherMembers","rootOwner","users","fileOwner","files","linkUsers","name","description","enabled","storageIndexing","createdAt","modifiedAt","disabledAt","roots","concatDistinctObjectsInArray","permissions","dateTimeUTC","owner","login","fullName","userFullNameSQL","email","file","path","filePathSQL","mime","type","USER_ROLE","GUEST","MEMBER_TYPE","USER","spaceRole","groups","GROUP_TYPE","PERSONAL","PGROUP","GROUP","IS_MEMBER","links","linkId","raw","placeholder","isNull","groupId","fileId","ownerId","prepare","space","execute","members","popFromObject","SpaceProps","createSpace","dbGetInsertedId","insert","values","deleteSpace","deleteNow","delete","update","set","Date","dbCheckAffectedRows","updateSpace","logger","debug","tag","msg","stringify","e","error","spaceRootFiles","options","spaceRootFilesQuery","isDir","inTrash","size","ctime","mtime","root","syncs","syncPaths","clientId","syncClients","clientName","info","hasComments","fileHasCommentsSubquerySQL","Boolean","parentId","spaceRootId","withHasComments","withShares","withSyncs","getSpaceRoots","push","getSpaceMemberIds","userIds","groupIds","m","updateMembers","add","remove","status","ACTION","ADD","UPDATE","DELETE","props","Number","isInteger","updateSpaceRoots","addRoot","updateRoot","removeRoot","spaceIds","spaceIdsQuery","unionAlias","fromUserAndGroups","map","withPermissions","fromId","pQuery","spaceFromIdWithPermissionsQuery","spacesWithPermissionsQuery","spacesQuery","selectUnion","spaceGroupConcatPermissions","max","s","spacesWithDetails","spacesWithDetailsQuery","managers","counts","countDistinct","length","spaceAlias","spaceAndRootPermissions","spacePermissions","getOrCreateUserFile","filters","convertToWhere","getUserFile","filesQueries","getOrCreateSpaceFile","dbFile","clearCachePermissions","rootAliases","uIds","uid","basePattern","patterns","forEach","rAlias","cache","genSlugKey","p","keys","verbose","mdel","catch","spacePermissionsQuery","at","spaceAndRootPermissionsQuery","rootId","rootName","rootPermissions","rootOwnerId","rootOwnerLogin","rootFileId","rootFilePath","rootFileInTrash","rootExternalPath","fromUser","fromUserQuery","$dynamic","fromGroups","fromGroupsQuery","union","usersGroups","Logger"],"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
  });
@@ -30,36 +26,72 @@ let SpacesScheduler = class SpacesScheduler {
30
26
  await this.updateQuotas();
31
27
  }
32
28
  async updateQuotas() {
33
- this.logger.log('Update Personal Quotas - START');
29
+ this.logger.log({
30
+ tag: this.updateQuotas.name,
31
+ msg: 'Personals - START'
32
+ });
34
33
  try {
35
34
  await this.spacesManager.updatePersonalSpacesQuota();
36
35
  } catch (e) {
37
- this.logger.error(`Update Personal Quotas} - ${e}`);
36
+ this.logger.error({
37
+ tag: this.updateQuotas.name,
38
+ msg: `Personals} - ${e}`
39
+ });
38
40
  }
39
- this.logger.log('Update Personal Quotas - END');
40
- this.logger.log('Update Space Quotas - START');
41
+ this.logger.log({
42
+ tag: this.updateQuotas.name,
43
+ msg: 'Personals - END'
44
+ });
45
+ this.logger.log({
46
+ tag: this.updateQuotas.name,
47
+ msg: 'Spaces - START'
48
+ });
41
49
  try {
42
50
  await this.spacesManager.updateSpacesQuota();
43
51
  } catch (e) {
44
- this.logger.error(`Update Space Quotas - ${e}`);
52
+ this.logger.error({
53
+ tag: this.updateQuotas.name,
54
+ msg: `Spaces - ${e}`
55
+ });
45
56
  }
46
- this.logger.log('Update Space Quotas - END');
47
- this.logger.log('Update Share External Path Quotas - START');
57
+ this.logger.log({
58
+ tag: this.updateQuotas.name,
59
+ msg: 'Spaces - END'
60
+ });
61
+ this.logger.log({
62
+ tag: this.updateQuotas.name,
63
+ msg: 'Share External Paths - START'
64
+ });
48
65
  try {
49
66
  await this.sharesManager.updateSharesExternalPathQuota();
50
67
  } catch (e) {
51
- this.logger.error(`Update Share External Path Quotas - ${e}`);
68
+ this.logger.error({
69
+ tag: this.updateQuotas.name,
70
+ msg: `Share External Paths - ${e}`
71
+ });
52
72
  }
53
- this.logger.log('Update Share External Path Quotas - END');
73
+ this.logger.log({
74
+ tag: this.updateQuotas.name,
75
+ msg: 'Share External Paths - END'
76
+ });
54
77
  }
55
78
  async deleteExpiredSpaces() {
56
- /* Removes spaces that have been disabled for more than 30 days */ this.logger.log(`${this.deleteExpiredSpaces.name} - START`);
79
+ /* Removes spaces that have been disabled for more than 30 days */ this.logger.log({
80
+ tag: this.deleteExpiredSpaces.name,
81
+ msg: `START`
82
+ });
57
83
  try {
58
84
  await this.spacesManager.deleteExpiredSpaces();
59
85
  } catch (e) {
60
- this.logger.error(`${this.deleteExpiredSpaces.name} - ${e}`);
86
+ this.logger.error({
87
+ tag: this.deleteExpiredSpaces.name,
88
+ msg: `${e}`
89
+ });
61
90
  }
62
- this.logger.log(`${this.deleteExpiredSpaces.name} - DONE`);
91
+ this.logger.log({
92
+ tag: this.deleteExpiredSpaces.name,
93
+ msg: `DONE`
94
+ });
63
95
  }
64
96
  constructor(spacesManager, sharesManager){
65
97
  this.spacesManager = spacesManager;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../backend/src/applications/spaces/services/spaces-scheduler.service.ts"],"sourcesContent":["/*\n * Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com>\n * This file is part of Sync-in | The open source file sync and share solution\n * See the LICENSE file for licensing details\n */\n\nimport { Injectable, Logger } from '@nestjs/common'\nimport { Cron, CronExpression, Timeout } from '@nestjs/schedule'\nimport { SharesManager } from '../../shares/services/shares-manager.service'\nimport { SpacesManager } from './spaces-manager.service'\n\n@Injectable()\nexport class SpacesScheduler {\n private readonly logger = new Logger(SpacesScheduler.name)\n\n constructor(\n private readonly spacesManager: SpacesManager,\n private readonly sharesManager: SharesManager\n ) {}\n\n @Timeout(60_000)\n async onStartup() {\n await this.updateQuotas()\n }\n\n @Cron(CronExpression.EVERY_HOUR)\n async updateQuotas() {\n this.logger.log('Update Personal Quotas - START')\n try {\n await this.spacesManager.updatePersonalSpacesQuota()\n } catch (e) {\n this.logger.error(`Update Personal Quotas} - ${e}`)\n }\n this.logger.log('Update Personal Quotas - END')\n this.logger.log('Update Space Quotas - START')\n try {\n await this.spacesManager.updateSpacesQuota()\n } catch (e) {\n this.logger.error(`Update Space Quotas - ${e}`)\n }\n this.logger.log('Update Space Quotas - END')\n this.logger.log('Update Share External Path Quotas - START')\n try {\n await this.sharesManager.updateSharesExternalPathQuota()\n } catch (e) {\n this.logger.error(`Update Share External Path Quotas - ${e}`)\n }\n this.logger.log('Update Share External Path Quotas - END')\n }\n\n @Cron(CronExpression.EVERY_DAY_AT_2AM)\n async deleteExpiredSpaces() {\n /* Removes spaces that have been disabled for more than 30 days */\n this.logger.log(`${this.deleteExpiredSpaces.name} - START`)\n try {\n await this.spacesManager.deleteExpiredSpaces()\n } catch (e) {\n this.logger.error(`${this.deleteExpiredSpaces.name} - ${e}`)\n }\n this.logger.log(`${this.deleteExpiredSpaces.name} - DONE`)\n }\n}\n"],"names":["SpacesScheduler","onStartup","updateQuotas","logger","log","spacesManager","updatePersonalSpacesQuota","e","error","updateSpacesQuota","sharesManager","updateSharesExternalPathQuota","deleteExpiredSpaces","name","Logger","EVERY_HOUR","EVERY_DAY_AT_2AM"],"mappings":"AAAA;;;;CAIC;;;;+BAQYA;;;eAAAA;;;wBANsB;0BACW;sCAChB;sCACA;;;;;;;;;;AAGvB,IAAA,AAAMA,kBAAN,MAAMA;IAQX,MACMC,YAAY;QAChB,MAAM,IAAI,CAACC,YAAY;IACzB;IAEA,MACMA,eAAe;QACnB,IAAI,CAACC,MAAM,CAACC,GAAG,CAAC;QAChB,IAAI;YACF,MAAM,IAAI,CAACC,aAAa,CAACC,yBAAyB;QACpD,EAAE,OAAOC,GAAG;YACV,IAAI,CAACJ,MAAM,CAACK,KAAK,CAAC,CAAC,0BAA0B,EAAED,GAAG;QACpD;QACA,IAAI,CAACJ,MAAM,CAACC,GAAG,CAAC;QAChB,IAAI,CAACD,MAAM,CAACC,GAAG,CAAC;QAChB,IAAI;YACF,MAAM,IAAI,CAACC,aAAa,CAACI,iBAAiB;QAC5C,EAAE,OAAOF,GAAG;YACV,IAAI,CAACJ,MAAM,CAACK,KAAK,CAAC,CAAC,sBAAsB,EAAED,GAAG;QAChD;QACA,IAAI,CAACJ,MAAM,CAACC,GAAG,CAAC;QAChB,IAAI,CAACD,MAAM,CAACC,GAAG,CAAC;QAChB,IAAI;YACF,MAAM,IAAI,CAACM,aAAa,CAACC,6BAA6B;QACxD,EAAE,OAAOJ,GAAG;YACV,IAAI,CAACJ,MAAM,CAACK,KAAK,CAAC,CAAC,oCAAoC,EAAED,GAAG;QAC9D;QACA,IAAI,CAACJ,MAAM,CAACC,GAAG,CAAC;IAClB;IAEA,MACMQ,sBAAsB;QAC1B,gEAAgE,GAChE,IAAI,CAACT,MAAM,CAACC,GAAG,CAAC,GAAG,IAAI,CAACQ,mBAAmB,CAACC,IAAI,CAAC,QAAQ,CAAC;QAC1D,IAAI;YACF,MAAM,IAAI,CAACR,aAAa,CAACO,mBAAmB;QAC9C,EAAE,OAAOL,GAAG;YACV,IAAI,CAACJ,MAAM,CAACK,KAAK,CAAC,GAAG,IAAI,CAACI,mBAAmB,CAACC,IAAI,CAAC,GAAG,EAAEN,GAAG;QAC7D;QACA,IAAI,CAACJ,MAAM,CAACC,GAAG,CAAC,GAAG,IAAI,CAACQ,mBAAmB,CAACC,IAAI,CAAC,OAAO,CAAC;IAC3D;IA7CA,YACE,AAAiBR,aAA4B,EAC7C,AAAiBK,aAA4B,CAC7C;aAFiBL,gBAAAA;aACAK,gBAAAA;aAJFP,SAAS,IAAIW,cAAM,CAACd,gBAAgBa,IAAI;IAKtD;AA2CL;;;;;;;;iDApCuBE;;;;;;iDAyBAC"}
1
+ {"version":3,"sources":["../../../../../backend/src/applications/spaces/services/spaces-scheduler.service.ts"],"sourcesContent":["import { Injectable, Logger } from '@nestjs/common'\nimport { Cron, CronExpression, Timeout } from '@nestjs/schedule'\nimport { SharesManager } from '../../shares/services/shares-manager.service'\nimport { SpacesManager } from './spaces-manager.service'\n\n@Injectable()\nexport class SpacesScheduler {\n private readonly logger = new Logger(SpacesScheduler.name)\n\n constructor(\n private readonly spacesManager: SpacesManager,\n private readonly sharesManager: SharesManager\n ) {}\n\n @Timeout(60_000)\n async onStartup() {\n await this.updateQuotas()\n }\n\n @Cron(CronExpression.EVERY_HOUR)\n async updateQuotas() {\n this.logger.log({ tag: this.updateQuotas.name, msg: 'Personals - START' })\n try {\n await this.spacesManager.updatePersonalSpacesQuota()\n } catch (e) {\n this.logger.error({ tag: this.updateQuotas.name, msg: `Personals} - ${e}` })\n }\n this.logger.log({ tag: this.updateQuotas.name, msg: 'Personals - END' })\n this.logger.log({ tag: this.updateQuotas.name, msg: 'Spaces - START' })\n try {\n await this.spacesManager.updateSpacesQuota()\n } catch (e) {\n this.logger.error({ tag: this.updateQuotas.name, msg: `Spaces - ${e}` })\n }\n this.logger.log({ tag: this.updateQuotas.name, msg: 'Spaces - END' })\n this.logger.log({ tag: this.updateQuotas.name, msg: 'Share External Paths - START' })\n try {\n await this.sharesManager.updateSharesExternalPathQuota()\n } catch (e) {\n this.logger.error({ tag: this.updateQuotas.name, msg: `Share External Paths - ${e}` })\n }\n this.logger.log({ tag: this.updateQuotas.name, msg: 'Share External Paths - END' })\n }\n\n @Cron(CronExpression.EVERY_DAY_AT_2AM)\n async deleteExpiredSpaces() {\n /* Removes spaces that have been disabled for more than 30 days */\n this.logger.log({ tag: this.deleteExpiredSpaces.name, msg: `START` })\n try {\n await this.spacesManager.deleteExpiredSpaces()\n } catch (e) {\n this.logger.error({ tag: this.deleteExpiredSpaces.name, msg: `${e}` })\n }\n this.logger.log({ tag: this.deleteExpiredSpaces.name, msg: `DONE` })\n }\n}\n"],"names":["SpacesScheduler","onStartup","updateQuotas","logger","log","tag","name","msg","spacesManager","updatePersonalSpacesQuota","e","error","updateSpacesQuota","sharesManager","updateSharesExternalPathQuota","deleteExpiredSpaces","Logger","EVERY_HOUR","EVERY_DAY_AT_2AM"],"mappings":";;;;+BAMaA;;;eAAAA;;;wBANsB;0BACW;sCAChB;sCACA;;;;;;;;;;AAGvB,IAAA,AAAMA,kBAAN,MAAMA;IAQX,MACMC,YAAY;QAChB,MAAM,IAAI,CAACC,YAAY;IACzB;IAEA,MACMA,eAAe;QACnB,IAAI,CAACC,MAAM,CAACC,GAAG,CAAC;YAAEC,KAAK,IAAI,CAACH,YAAY,CAACI,IAAI;YAAEC,KAAK;QAAoB;QACxE,IAAI;YACF,MAAM,IAAI,CAACC,aAAa,CAACC,yBAAyB;QACpD,EAAE,OAAOC,GAAG;YACV,IAAI,CAACP,MAAM,CAACQ,KAAK,CAAC;gBAAEN,KAAK,IAAI,CAACH,YAAY,CAACI,IAAI;gBAAEC,KAAK,CAAC,aAAa,EAAEG,GAAG;YAAC;QAC5E;QACA,IAAI,CAACP,MAAM,CAACC,GAAG,CAAC;YAAEC,KAAK,IAAI,CAACH,YAAY,CAACI,IAAI;YAAEC,KAAK;QAAkB;QACtE,IAAI,CAACJ,MAAM,CAACC,GAAG,CAAC;YAAEC,KAAK,IAAI,CAACH,YAAY,CAACI,IAAI;YAAEC,KAAK;QAAiB;QACrE,IAAI;YACF,MAAM,IAAI,CAACC,aAAa,CAACI,iBAAiB;QAC5C,EAAE,OAAOF,GAAG;YACV,IAAI,CAACP,MAAM,CAACQ,KAAK,CAAC;gBAAEN,KAAK,IAAI,CAACH,YAAY,CAACI,IAAI;gBAAEC,KAAK,CAAC,SAAS,EAAEG,GAAG;YAAC;QACxE;QACA,IAAI,CAACP,MAAM,CAACC,GAAG,CAAC;YAAEC,KAAK,IAAI,CAACH,YAAY,CAACI,IAAI;YAAEC,KAAK;QAAe;QACnE,IAAI,CAACJ,MAAM,CAACC,GAAG,CAAC;YAAEC,KAAK,IAAI,CAACH,YAAY,CAACI,IAAI;YAAEC,KAAK;QAA+B;QACnF,IAAI;YACF,MAAM,IAAI,CAACM,aAAa,CAACC,6BAA6B;QACxD,EAAE,OAAOJ,GAAG;YACV,IAAI,CAACP,MAAM,CAACQ,KAAK,CAAC;gBAAEN,KAAK,IAAI,CAACH,YAAY,CAACI,IAAI;gBAAEC,KAAK,CAAC,uBAAuB,EAAEG,GAAG;YAAC;QACtF;QACA,IAAI,CAACP,MAAM,CAACC,GAAG,CAAC;YAAEC,KAAK,IAAI,CAACH,YAAY,CAACI,IAAI;YAAEC,KAAK;QAA6B;IACnF;IAEA,MACMQ,sBAAsB;QAC1B,gEAAgE,GAChE,IAAI,CAACZ,MAAM,CAACC,GAAG,CAAC;YAAEC,KAAK,IAAI,CAACU,mBAAmB,CAACT,IAAI;YAAEC,KAAK,CAAC,KAAK,CAAC;QAAC;QACnE,IAAI;YACF,MAAM,IAAI,CAACC,aAAa,CAACO,mBAAmB;QAC9C,EAAE,OAAOL,GAAG;YACV,IAAI,CAACP,MAAM,CAACQ,KAAK,CAAC;gBAAEN,KAAK,IAAI,CAACU,mBAAmB,CAACT,IAAI;gBAAEC,KAAK,GAAGG,GAAG;YAAC;QACtE;QACA,IAAI,CAACP,MAAM,CAACC,GAAG,CAAC;YAAEC,KAAK,IAAI,CAACU,mBAAmB,CAACT,IAAI;YAAEC,KAAK,CAAC,IAAI,CAAC;QAAC;IACpE;IA7CA,YACE,AAAiBC,aAA4B,EAC7C,AAAiBK,aAA4B,CAC7C;aAFiBL,gBAAAA;aACAK,gBAAAA;aAJFV,SAAS,IAAIa,cAAM,CAAChB,gBAAgBM,IAAI;IAKtD;AA2CL;;;;;;;;iDApCuBW;;;;;;iDAyBAC"}