@sync-in/server 1.8.1 → 1.9.1

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 (605) hide show
  1. package/CHANGELOG.md +57 -11
  2. package/environment/environment.dist.yaml +29 -26
  3. package/package.json +15 -15
  4. package/server/app.constants.js +9 -0
  5. package/server/app.constants.js.map +1 -1
  6. package/server/app.functions.js +42 -0
  7. package/server/app.functions.js.map +1 -0
  8. package/server/app.module.js +4 -0
  9. package/server/app.module.js.map +1 -1
  10. package/server/applications/admin/admin.module.js +6 -1
  11. package/server/applications/admin/admin.module.js.map +1 -1
  12. package/server/applications/{notifications/interfaces/user-mail-notification.js → admin/interfaces/check-update.interfaces.js} +1 -1
  13. package/server/applications/admin/interfaces/check-update.interfaces.js.map +1 -0
  14. package/server/applications/admin/services/admin-scheduler.service.js +53 -0
  15. package/server/applications/admin/services/admin-scheduler.service.js.map +1 -0
  16. package/server/applications/admin/services/admin.service.js +102 -0
  17. package/server/applications/admin/services/admin.service.js.map +1 -0
  18. package/server/applications/admin/services/admin.service.spec.js +46 -0
  19. package/server/applications/admin/services/admin.service.spec.js.map +1 -0
  20. package/server/applications/admin/utils/check-update.js +28 -0
  21. package/server/applications/admin/utils/check-update.js.map +1 -0
  22. package/server/applications/comments/services/comments-manager.service.js +1 -1
  23. package/server/applications/comments/services/comments-manager.service.js.map +1 -1
  24. package/server/applications/comments/services/comments-manager.service.spec.js +1 -1
  25. package/server/applications/comments/services/comments-manager.service.spec.js.map +1 -1
  26. package/server/applications/comments/services/comments-queries.service.js.map +1 -1
  27. package/server/applications/files/constants/cache.js +10 -1
  28. package/server/applications/files/constants/cache.js.map +1 -1
  29. package/server/applications/files/constants/only-office.js +0 -25
  30. package/server/applications/files/constants/only-office.js.map +1 -1
  31. package/server/applications/files/constants/operations.js +20 -3
  32. package/server/applications/files/constants/operations.js.map +1 -1
  33. package/server/applications/files/dto/file-operations.dto.js +7 -0
  34. package/server/applications/files/dto/file-operations.dto.js.map +1 -1
  35. package/server/applications/files/files-only-office.controller.js +3 -2
  36. package/server/applications/files/files-only-office.controller.js.map +1 -1
  37. package/server/applications/files/files-only-office.controller.spec.js +6 -5
  38. package/server/applications/files/files-only-office.controller.spec.js.map +1 -1
  39. package/server/applications/files/files.controller.js +88 -8
  40. package/server/applications/files/files.controller.js.map +1 -1
  41. package/server/applications/files/files.controller.spec.js +11 -4
  42. package/server/applications/files/files.controller.spec.js.map +1 -1
  43. package/server/applications/files/guards/files-only-office.guard.js +6 -0
  44. package/server/applications/files/guards/files-only-office.guard.js.map +1 -1
  45. package/server/applications/files/interfaces/file-db-props.interface.js.map +1 -1
  46. package/server/applications/files/interfaces/file-props.interface.js.map +1 -1
  47. package/server/applications/files/interfaces/only-office-config.interface.js.map +1 -1
  48. package/server/applications/files/services/files-content-manager.service.js +3 -3
  49. package/server/applications/files/services/files-content-manager.service.js.map +1 -1
  50. package/server/applications/files/services/files-lock-manager.service.js +61 -22
  51. package/server/applications/files/services/files-lock-manager.service.js.map +1 -1
  52. package/server/applications/files/services/files-manager.service.js +122 -24
  53. package/server/applications/files/services/files-manager.service.js.map +1 -1
  54. package/server/applications/files/services/files-manager.service.spec.js +15 -0
  55. package/server/applications/files/services/files-manager.service.spec.js.map +1 -1
  56. package/server/applications/files/services/files-methods.service.js +38 -8
  57. package/server/applications/files/services/files-methods.service.js.map +1 -1
  58. package/server/applications/files/services/files-only-office-manager.service.js +12 -12
  59. package/server/applications/files/services/files-only-office-manager.service.js.map +1 -1
  60. package/server/applications/files/services/files-parser.service.js +1 -1
  61. package/server/applications/files/services/files-parser.service.js.map +1 -1
  62. package/server/applications/files/services/files-queries.service.js +10 -0
  63. package/server/applications/files/services/files-queries.service.js.map +1 -1
  64. package/server/applications/files/utils/files.js +1 -1
  65. package/server/applications/files/utils/files.js.map +1 -1
  66. package/server/applications/files/utils/send-file.js +3 -2
  67. package/server/applications/files/utils/send-file.js.map +1 -1
  68. package/server/applications/links/services/links-queries.service.js +1 -1
  69. package/server/applications/links/services/links-queries.service.js.map +1 -1
  70. package/server/applications/notifications/constants/notifications.js +5 -1
  71. package/server/applications/notifications/constants/notifications.js.map +1 -1
  72. package/server/applications/notifications/i18n/de.js +8 -2
  73. package/server/applications/notifications/i18n/de.js.map +1 -1
  74. package/server/applications/notifications/i18n/es.js +8 -2
  75. package/server/applications/notifications/i18n/es.js.map +1 -1
  76. package/server/applications/notifications/i18n/fr.js +8 -2
  77. package/server/applications/notifications/i18n/fr.js.map +1 -1
  78. package/server/applications/notifications/i18n/hi.js +8 -2
  79. package/server/applications/notifications/i18n/hi.js.map +1 -1
  80. package/server/applications/notifications/i18n/it.js +8 -2
  81. package/server/applications/notifications/i18n/it.js.map +1 -1
  82. package/server/applications/notifications/i18n/ja.js +8 -2
  83. package/server/applications/notifications/i18n/ja.js.map +1 -1
  84. package/server/applications/notifications/i18n/ko.js +8 -2
  85. package/server/applications/notifications/i18n/ko.js.map +1 -1
  86. package/server/applications/notifications/i18n/pl.js +8 -2
  87. package/server/applications/notifications/i18n/pl.js.map +1 -1
  88. package/server/applications/notifications/i18n/pt.js +8 -2
  89. package/server/applications/notifications/i18n/pt.js.map +1 -1
  90. package/server/applications/notifications/i18n/pt_br.js +8 -2
  91. package/server/applications/notifications/i18n/pt_br.js.map +1 -1
  92. package/server/applications/notifications/i18n/ru.js +8 -2
  93. package/server/applications/notifications/i18n/ru.js.map +1 -1
  94. package/server/applications/notifications/i18n/tr.js +8 -2
  95. package/server/applications/notifications/i18n/tr.js.map +1 -1
  96. package/server/applications/notifications/i18n/zh.js +8 -2
  97. package/server/applications/notifications/i18n/zh.js.map +1 -1
  98. package/server/applications/notifications/interfaces/notification-properties.interface.js.map +1 -1
  99. package/server/applications/notifications/interfaces/user-mail-notification.interface.js +10 -0
  100. package/server/applications/notifications/interfaces/user-mail-notification.interface.js.map +1 -0
  101. package/server/applications/notifications/mails/models.js +38 -3
  102. package/server/applications/notifications/mails/models.js.map +1 -1
  103. package/server/applications/notifications/mails/templates.js +1 -1
  104. package/server/applications/notifications/mails/templates.js.map +1 -1
  105. package/server/applications/notifications/services/notifications-manager.service.js +8 -1
  106. package/server/applications/notifications/services/notifications-manager.service.js.map +1 -1
  107. package/server/applications/notifications/services/notifications-queries.service.js.map +1 -1
  108. package/server/applications/shares/services/shares-manager.service.js +17 -10
  109. package/server/applications/shares/services/shares-manager.service.js.map +1 -1
  110. package/server/applications/shares/services/shares-manager.service.spec.js +10 -3
  111. package/server/applications/shares/services/shares-manager.service.spec.js.map +1 -1
  112. package/server/applications/shares/services/shares-queries.service.js +11 -1
  113. package/server/applications/shares/services/shares-queries.service.js.map +1 -1
  114. package/server/applications/spaces/guards/space.guard.spec.js +2 -2
  115. package/server/applications/spaces/guards/space.guard.spec.js.map +1 -1
  116. package/server/applications/spaces/services/spaces-browser.service.js +31 -11
  117. package/server/applications/spaces/services/spaces-browser.service.js.map +1 -1
  118. package/server/applications/spaces/services/spaces-manager.service.js +2 -2
  119. package/server/applications/spaces/services/spaces-manager.service.js.map +1 -1
  120. package/server/applications/spaces/services/spaces-queries.service.js +6 -2
  121. package/server/applications/spaces/services/spaces-queries.service.js.map +1 -1
  122. package/server/applications/spaces/utils/permissions.js +2 -2
  123. package/server/applications/spaces/utils/permissions.js.map +1 -1
  124. package/server/applications/sync/services/sync-manager.service.js +1 -0
  125. package/server/applications/sync/services/sync-manager.service.js.map +1 -1
  126. package/server/applications/sync/services/sync-paths-manager.service.js +1 -1
  127. package/server/applications/sync/services/sync-paths-manager.service.js.map +1 -1
  128. package/server/applications/sync/services/sync-paths-manager.service.spec.js +1 -1
  129. package/server/applications/sync/services/sync-paths-manager.service.spec.js.map +1 -1
  130. package/server/applications/users/constants/user.js +1 -1
  131. package/server/applications/users/constants/user.js.map +1 -1
  132. package/server/applications/users/services/admin-users-queries.service.js +8 -0
  133. package/server/applications/users/services/admin-users-queries.service.js.map +1 -1
  134. package/server/applications/users/services/users-queries.service.js +67 -68
  135. package/server/applications/users/services/users-queries.service.js.map +1 -1
  136. package/server/applications/users/users.module.js +2 -1
  137. package/server/applications/users/users.module.js.map +1 -1
  138. package/server/applications/webdav/guards/webdav-protocol.guard.js +4 -4
  139. package/server/applications/webdav/guards/webdav-protocol.guard.js.map +1 -1
  140. package/server/applications/webdav/guards/webdav-protocol.guard.spec.js +6 -6
  141. package/server/applications/webdav/guards/webdav-protocol.guard.spec.js.map +1 -1
  142. package/server/applications/webdav/services/webdav-methods.service.js +3 -2
  143. package/server/applications/webdav/services/webdav-methods.service.js.map +1 -1
  144. package/server/applications/webdav/services/webdav-methods.service.spec.js +2 -2
  145. package/server/applications/webdav/services/webdav-methods.service.spec.js.map +1 -1
  146. package/server/authentication/constants/auth-ldap.js +2 -0
  147. package/server/authentication/constants/auth-ldap.js.map +1 -1
  148. package/server/authentication/services/auth-methods/auth-method-ldap.service.js +34 -21
  149. package/server/authentication/services/auth-methods/auth-method-ldap.service.js.map +1 -1
  150. package/server/common/functions.js +0 -8
  151. package/server/common/functions.js.map +1 -1
  152. package/server/common/image.js +1 -0
  153. package/server/common/image.js.map +1 -1
  154. package/server/common/shared.js +18 -1
  155. package/server/common/shared.js.map +1 -1
  156. package/server/infrastructure/context/services/context-manager.service.js +3 -0
  157. package/server/infrastructure/context/services/context-manager.service.js.map +1 -1
  158. package/server/infrastructure/websocket/adapters/cluster.adapter.js +4 -4
  159. package/server/infrastructure/websocket/adapters/cluster.adapter.js.map +1 -1
  160. package/static/3rdpartylicenses.txt +1393 -44
  161. package/static/assets/favicon.svg +2 -25
  162. package/static/assets/logo-dark.svg +2 -32
  163. package/static/assets/logo.svg +2 -32
  164. package/static/assets/mimes/application-sql.svg +29 -1
  165. package/static/assets/mimes/application-x-sql.svg +29 -0
  166. package/static/assets/mimes/image-bmp.svg +12 -0
  167. package/static/assets/pdfjs/build/pdf.mjs +4869 -4454
  168. package/static/assets/pdfjs/build/pdf.mjs.map +1 -1
  169. package/static/assets/pdfjs/build/pdf.sandbox.mjs +3 -3
  170. package/static/assets/pdfjs/build/pdf.sandbox.mjs.map +1 -1
  171. package/static/assets/pdfjs/build/pdf.worker.mjs +885 -596
  172. package/static/assets/pdfjs/build/pdf.worker.mjs.map +1 -1
  173. package/static/assets/pdfjs/version +1 -1
  174. package/static/assets/pdfjs/web/locale/be/viewer.ftl +40 -0
  175. package/static/assets/pdfjs/web/locale/bg/viewer.ftl +2 -0
  176. package/static/assets/pdfjs/web/locale/cs/viewer.ftl +41 -0
  177. package/static/assets/pdfjs/web/locale/cy/viewer.ftl +43 -0
  178. package/static/assets/pdfjs/web/locale/da/viewer.ftl +39 -0
  179. package/static/assets/pdfjs/web/locale/de/viewer.ftl +41 -0
  180. package/static/assets/pdfjs/web/locale/dsb/viewer.ftl +43 -0
  181. package/static/assets/pdfjs/web/locale/el/viewer.ftl +39 -0
  182. package/static/assets/pdfjs/web/locale/en-CA/viewer.ftl +35 -0
  183. package/static/assets/pdfjs/web/locale/en-GB/viewer.ftl +41 -0
  184. package/static/assets/pdfjs/web/locale/en-US/viewer.ftl +2 -2
  185. package/static/assets/pdfjs/web/locale/eo/viewer.ftl +39 -0
  186. package/static/assets/pdfjs/web/locale/es-AR/viewer.ftl +41 -0
  187. package/static/assets/pdfjs/web/locale/es-CL/viewer.ftl +39 -0
  188. package/static/assets/pdfjs/web/locale/es-ES/viewer.ftl +72 -0
  189. package/static/assets/pdfjs/web/locale/es-MX/viewer.ftl +120 -0
  190. package/static/assets/pdfjs/web/locale/eu/viewer.ftl +41 -0
  191. package/static/assets/pdfjs/web/locale/fi/viewer.ftl +41 -0
  192. package/static/assets/pdfjs/web/locale/fr/viewer.ftl +41 -0
  193. package/static/assets/pdfjs/web/locale/fur/viewer.ftl +77 -0
  194. package/static/assets/pdfjs/web/locale/fy-NL/viewer.ftl +41 -0
  195. package/static/assets/pdfjs/web/locale/gn/viewer.ftl +39 -0
  196. package/static/assets/pdfjs/web/locale/he/viewer.ftl +41 -0
  197. package/static/assets/pdfjs/web/locale/hsb/viewer.ftl +43 -0
  198. package/static/assets/pdfjs/web/locale/hu/viewer.ftl +41 -0
  199. package/static/assets/pdfjs/web/locale/hy-AM/viewer.ftl +1 -1
  200. package/static/assets/pdfjs/web/locale/ia/viewer.ftl +41 -0
  201. package/static/assets/pdfjs/web/locale/it/viewer.ftl +41 -0
  202. package/static/assets/pdfjs/web/locale/ja/viewer.ftl +32 -0
  203. package/static/assets/pdfjs/web/locale/ka/viewer.ftl +41 -0
  204. package/static/assets/pdfjs/web/locale/kab/viewer.ftl +73 -0
  205. package/static/assets/pdfjs/web/locale/kk/viewer.ftl +21 -0
  206. package/static/assets/pdfjs/web/locale/ko/viewer.ftl +38 -1
  207. package/static/assets/pdfjs/web/locale/nb-NO/viewer.ftl +39 -0
  208. package/static/assets/pdfjs/web/locale/nl/viewer.ftl +41 -0
  209. package/static/assets/pdfjs/web/locale/nn-NO/viewer.ftl +37 -0
  210. package/static/assets/pdfjs/web/locale/pa-IN/viewer.ftl +37 -0
  211. package/static/assets/pdfjs/web/locale/pl/viewer.ftl +39 -0
  212. package/static/assets/pdfjs/web/locale/pt-BR/viewer.ftl +39 -0
  213. package/static/assets/pdfjs/web/locale/rm/viewer.ftl +73 -0
  214. package/static/assets/pdfjs/web/locale/ro/viewer.ftl +41 -0
  215. package/static/assets/pdfjs/web/locale/ru/viewer.ftl +42 -0
  216. package/static/assets/pdfjs/web/locale/sc/viewer.ftl +6 -0
  217. package/static/assets/pdfjs/web/locale/sk/viewer.ftl +43 -0
  218. package/static/assets/pdfjs/web/locale/sl/viewer.ftl +42 -1
  219. package/static/assets/pdfjs/web/locale/sq/viewer.ftl +77 -0
  220. package/static/assets/pdfjs/web/locale/sv-SE/viewer.ftl +41 -0
  221. package/static/assets/pdfjs/web/locale/tg/viewer.ftl +39 -0
  222. package/static/assets/pdfjs/web/locale/th/viewer.ftl +35 -0
  223. package/static/assets/pdfjs/web/locale/tr/viewer.ftl +39 -0
  224. package/static/assets/pdfjs/web/locale/vi/viewer.ftl +42 -5
  225. package/static/assets/pdfjs/web/locale/zh-CN/viewer.ftl +35 -0
  226. package/static/assets/pdfjs/web/locale/zh-TW/viewer.ftl +37 -0
  227. package/static/assets/pdfjs/web/viewer.css +141 -110
  228. package/static/assets/pdfjs/web/viewer.html +7 -7
  229. package/static/assets/pdfjs/web/viewer.mjs +97 -14
  230. package/static/assets/pdfjs/web/viewer.mjs.map +1 -1
  231. package/static/chunk-22DWHRCL.js +1 -0
  232. package/static/chunk-23UUFZSR.js +1 -0
  233. package/static/chunk-25QTY2GI.js +1 -0
  234. package/static/chunk-2E7IJZLL.js +1 -0
  235. package/static/chunk-2FC5EKS5.js +1 -0
  236. package/static/chunk-2TB2INBF.js +1 -0
  237. package/static/chunk-32L7RG2G.js +1 -0
  238. package/static/chunk-3OHSTP3R.js +1 -0
  239. package/static/chunk-3WLBVJ2S.js +1 -0
  240. package/static/{chunk-MTVSJTIW.js → chunk-3YDYZLF7.js} +1 -1
  241. package/static/chunk-42L6C5MT.js +1 -0
  242. package/static/chunk-4AGQL5GV.js +1 -0
  243. package/static/chunk-4BPSQMI2.js +1 -0
  244. package/static/chunk-4FDRWZWT.js +1 -0
  245. package/static/chunk-4GCCF6PF.js +1 -0
  246. package/static/chunk-4ORP3SBY.js +1 -0
  247. package/static/chunk-4PZPHJ7L.js +1 -0
  248. package/static/chunk-4QBOHIC3.js +1 -0
  249. package/static/chunk-4YT6K5KY.js +1 -0
  250. package/static/chunk-556I6YIW.js +1 -0
  251. package/static/chunk-5DPIGJU4.js +1 -0
  252. package/static/chunk-5E3TYOL3.js +1 -0
  253. package/static/chunk-5IL7C45D.js +1 -0
  254. package/static/chunk-5KJXGMKR.js +1 -0
  255. package/static/chunk-5S6KPQRA.js +1 -0
  256. package/static/chunk-5SPGSHKL.js +1 -0
  257. package/static/chunk-5WCQBTXW.js +1 -0
  258. package/static/chunk-5XUIPWOH.js +1 -0
  259. package/static/chunk-62WT7PI3.js +1 -0
  260. package/static/chunk-6B3GGAV3.js +4 -0
  261. package/static/chunk-6F6OMQ5H.js +1 -0
  262. package/static/chunk-6I5BGQHT.js +1 -0
  263. package/static/chunk-6NEBGCAZ.js +1 -0
  264. package/static/chunk-6NOS45DG.js +1 -0
  265. package/static/chunk-6OKLPRCD.js +1 -0
  266. package/static/chunk-6VEJCG43.js +1 -0
  267. package/static/chunk-77SS36Z2.js +1 -0
  268. package/static/chunk-7AXEPO3G.js +1 -0
  269. package/static/chunk-7CKHC72R.js +1 -0
  270. package/static/chunk-7DUTYOJG.js +1 -0
  271. package/static/chunk-7HKFYRPF.js +1 -0
  272. package/static/chunk-7NZJZATZ.js +1 -0
  273. package/static/chunk-AADK5D2H.js +1 -0
  274. package/static/chunk-ACUF7IKP.js +1 -0
  275. package/static/chunk-AGREZPV4.js +1 -0
  276. package/static/chunk-ATBJWFA3.js +1 -0
  277. package/static/chunk-ATXLZN2B.js +1 -0
  278. package/static/chunk-AZ5TF5Y3.js +1 -0
  279. package/static/chunk-BBHYIURC.js +1 -0
  280. package/static/chunk-BHZEPHRI.js +13 -0
  281. package/static/chunk-BODMMLVB.js +7 -0
  282. package/static/chunk-BSB4VROD.js +2 -0
  283. package/static/chunk-BU4ZICZR.js +1 -0
  284. package/static/chunk-C3AAEQKW.js +1 -0
  285. package/static/chunk-CFTKW432.js +1 -0
  286. package/static/chunk-CNOVT6KU.js +1 -0
  287. package/static/chunk-D56H3XE2.js +1 -0
  288. package/static/chunk-DFOOSIIA.js +1 -0
  289. package/static/chunk-DHFQIFOF.js +1 -0
  290. package/static/{chunk-3GMLWAFZ.js → chunk-DIC2MVRI.js} +1 -1
  291. package/static/chunk-DJDRX53V.js +2 -0
  292. package/static/chunk-DKGXUMLT.js +1 -0
  293. package/static/chunk-DQ3GEMPM.js +1 -0
  294. package/static/chunk-DRHPEERW.js +2 -0
  295. package/static/chunk-DWYP6ZGG.js +1 -0
  296. package/static/chunk-EDJAISWO.js +13 -0
  297. package/static/chunk-EIYRBM4J.js +1 -0
  298. package/static/chunk-EL6QL4TP.js +1 -0
  299. package/static/chunk-ERDZ7IVF.js +1 -0
  300. package/static/chunk-EVQKKVUZ.js +1 -0
  301. package/static/chunk-F2XG7EWI.js +1 -0
  302. package/static/chunk-F672FY5I.js +1 -0
  303. package/static/chunk-F6V37MKG.js +1 -0
  304. package/static/chunk-FCGTI42I.js +1 -0
  305. package/static/chunk-FNOTGWRW.js +1 -0
  306. package/static/chunk-FQHOSSCO.js +1 -0
  307. package/static/chunk-GAGHHYLF.js +1 -0
  308. package/static/chunk-GNZPP2VO.js +1 -0
  309. package/static/{chunk-JPT5WEAT.js → chunk-GOJYWL2M.js} +1 -1
  310. package/static/chunk-GRLHFXGB.js +1 -0
  311. package/static/chunk-H6WOTGQ5.js +1 -0
  312. package/static/{chunk-CHJ64RJM.js → chunk-H6ZXFINQ.js} +1 -1
  313. package/static/chunk-HC7F57NA.js +1 -0
  314. package/static/chunk-HCSWO7BO.js +7 -0
  315. package/static/chunk-HHWXIK2M.js +7 -0
  316. package/static/chunk-HKRGIRKB.js +3 -0
  317. package/static/chunk-HMOB6XC5.js +1 -0
  318. package/static/chunk-HNMGPG72.js +1 -0
  319. package/static/chunk-HS4S6BV3.js +1 -0
  320. package/static/chunk-I2S3XPC5.js +3 -0
  321. package/static/chunk-IJ7K7ATQ.js +1 -0
  322. package/static/chunk-IOIBQGHN.js +562 -0
  323. package/static/chunk-ITVA26X2.js +2 -0
  324. package/static/chunk-J6YSFHLZ.js +1 -0
  325. package/static/chunk-JAEJ6IMV.js +1 -0
  326. package/static/chunk-JB5R6V33.js +1 -0
  327. package/static/chunk-JF6WIV6M.js +1 -0
  328. package/static/chunk-JGB4LLUT.js +1 -0
  329. package/static/chunk-JGXVTKLG.js +1 -0
  330. package/static/chunk-JMYAD7E2.js +1 -0
  331. package/static/chunk-JSE63Q5X.js +1 -0
  332. package/static/chunk-JVV3ZL6L.js +1 -0
  333. package/static/chunk-JWPXQOS3.js +5 -0
  334. package/static/chunk-JXZCNFW7.js +1 -0
  335. package/static/chunk-JY2I3HGL.js +1 -0
  336. package/static/chunk-K657XPXA.js +1 -0
  337. package/static/chunk-KAVP6UXH.js +1 -0
  338. package/static/{chunk-3R74L4UU.js → chunk-KDEEERWZ.js} +1 -1
  339. package/static/chunk-KLOUBIO4.js +1 -0
  340. package/static/chunk-KMF3ZRAO.js +1 -0
  341. package/static/chunk-KT3TWCST.js +1 -0
  342. package/static/chunk-L6SYG23T.js +1 -0
  343. package/static/{chunk-LNTUR3GU.js → chunk-LRDKG274.js} +1 -1
  344. package/static/chunk-LRQSPCYZ.js +1 -0
  345. package/static/chunk-LUSVISM6.js +1 -0
  346. package/static/{chunk-LVSNIS5P.js → chunk-LYZGJZNP.js} +1 -1
  347. package/static/chunk-LZKI5P5T.js +1 -0
  348. package/static/chunk-M4XL3JN5.js +6 -0
  349. package/static/{chunk-UNCPXHHT.js → chunk-MGWG7OD7.js} +1 -1
  350. package/static/chunk-MIA5YBOI.js +1 -0
  351. package/static/chunk-MKUUWY6Y.js +1 -0
  352. package/static/chunk-MR3U7TKQ.js +1 -0
  353. package/static/chunk-MYM43ENO.js +1 -0
  354. package/static/chunk-NAH4V2R6.js +2 -0
  355. package/static/chunk-NBBDVVUF.js +1 -0
  356. package/static/chunk-NKGKBQBX.js +1 -0
  357. package/static/chunk-NMF2ZFBE.js +1 -0
  358. package/static/chunk-NN4ONTOT.js +1 -0
  359. package/static/chunk-NOPACN4F.js +1 -0
  360. package/static/chunk-NYJPOP4L.js +1 -0
  361. package/static/chunk-OQRWXCLY.js +1 -0
  362. package/static/chunk-PCFH5HCI.js +2 -0
  363. package/static/chunk-PJF5XUTO.js +1 -0
  364. package/static/{chunk-FJE6BOFL.js → chunk-PSUAQBYM.js} +1 -1
  365. package/static/chunk-PTLYIUFW.js +1 -0
  366. package/static/chunk-PXRT4L57.js +1 -0
  367. package/static/chunk-PZGLDZZM.js +1 -0
  368. package/static/chunk-Q4VNZGFI.js +1 -0
  369. package/static/chunk-Q556XB3S.js +1 -0
  370. package/static/{chunk-PB4AIT7O.js → chunk-Q7IXRPOO.js} +1 -1
  371. package/static/chunk-Q7U2VPIS.js +1 -0
  372. package/static/chunk-QM6CQMEX.js +1 -0
  373. package/static/chunk-QMHUIHSR.js +1 -0
  374. package/static/chunk-QVFPHTOH.js +1 -0
  375. package/static/chunk-R4MI25E2.js +1 -0
  376. package/static/chunk-R7JRAR3P.js +1 -0
  377. package/static/chunk-R7PNKQU2.js +1 -0
  378. package/static/chunk-RCAORRB7.js +1 -0
  379. package/static/chunk-RDNTK4YH.js +1 -0
  380. package/static/{chunk-VJTXJ43D.js → chunk-RK2ONYTL.js} +1 -1
  381. package/static/chunk-RK7XRDNB.js +1 -0
  382. package/static/chunk-RO7SAOLK.js +1 -0
  383. package/static/chunk-RQUUINHV.js +1 -0
  384. package/static/chunk-RUN556VW.js +1 -0
  385. package/static/chunk-S2VBGI6Q.js +1 -0
  386. package/static/chunk-S7S5M3AZ.js +1 -0
  387. package/static/chunk-SBLNYV74.js +1 -0
  388. package/static/chunk-SIZCHHUA.js +1 -0
  389. package/static/chunk-SRBOO7AO.js +1 -0
  390. package/static/{chunk-PVDHBQRM.js → chunk-STA7NTYL.js} +1 -1
  391. package/static/chunk-T3YI3BSS.js +1 -0
  392. package/static/chunk-TAL3RTTQ.js +1 -0
  393. package/static/chunk-TGLJFALR.js +1 -0
  394. package/static/chunk-TJZKTNNS.js +1 -0
  395. package/static/chunk-U4RW6XG5.js +1 -0
  396. package/static/chunk-UJTFWZEC.js +1 -0
  397. package/static/chunk-UPGVU5LG.js +1 -0
  398. package/static/chunk-UQ6O3I6W.js +1 -0
  399. package/static/{chunk-5NMSIIQB.js → chunk-V43RGNXA.js} +1 -1
  400. package/static/chunk-V6FA5QY4.js +1 -0
  401. package/static/chunk-VK7XMFVE.js +1 -0
  402. package/static/chunk-VQJYCYWI.js +1 -0
  403. package/static/chunk-VWIRXLNE.js +1 -0
  404. package/static/chunk-VZMVGIVW.js +1 -0
  405. package/static/chunk-VZPCXSRG.js +2 -0
  406. package/static/chunk-WR3MA3L3.js +1 -0
  407. package/static/chunk-XCLK7NJL.js +1 -0
  408. package/static/{chunk-DSWEWLXJ.js → chunk-XCPDPB5G.js} +1 -1
  409. package/static/chunk-XEGHEUP5.js +1 -0
  410. package/static/chunk-XKEBQNQJ.js +1 -0
  411. package/static/chunk-XOF4UW3S.js +1 -0
  412. package/static/chunk-XQGPSNQB.js +1 -0
  413. package/static/{chunk-QO6BTONN.js → chunk-Y4MAPE2C.js} +1 -1
  414. package/static/chunk-Y5RLD72B.js +1 -0
  415. package/static/{chunk-DPUVSXRB.js → chunk-Y5XTRCFK.js} +1 -1
  416. package/static/chunk-Y63UUJGJ.js +1 -0
  417. package/static/chunk-YBNAC7QM.js +1 -0
  418. package/static/chunk-YCTCESL4.js +1 -0
  419. package/static/chunk-YMAN4LIU.js +1 -0
  420. package/static/chunk-YTDE6SXT.js +1 -0
  421. package/static/chunk-YZPIUJB3.js +1 -0
  422. package/static/chunk-ZCOWBVOT.js +1 -0
  423. package/static/chunk-ZHRYYMYE.js +1 -0
  424. package/static/chunk-ZNXTOQFG.js +1 -0
  425. package/static/{chunk-URHTCJ7G.js → chunk-ZQLBPLXI.js} +1 -1
  426. package/static/chunk-ZXXHFBGL.js +1 -0
  427. package/static/favicon.ico +0 -0
  428. package/static/index.html +2 -2
  429. package/static/main-56PZQ6TJ.js +11 -0
  430. package/static/styles-Q4OZOSSK.css +1 -0
  431. package/server/applications/notifications/interfaces/user-mail-notification.js.map +0 -1
  432. package/static/assets/codemirror/mode/apl/apl.js +0 -174
  433. package/static/assets/codemirror/mode/asciiarmor/asciiarmor.js +0 -74
  434. package/static/assets/codemirror/mode/asn.1/asn.1.js +0 -204
  435. package/static/assets/codemirror/mode/asterisk/asterisk.js +0 -220
  436. package/static/assets/codemirror/mode/brainfuck/brainfuck.js +0 -85
  437. package/static/assets/codemirror/mode/clike/clike.js +0 -942
  438. package/static/assets/codemirror/mode/clojure/clojure.js +0 -293
  439. package/static/assets/codemirror/mode/cmake/cmake.js +0 -97
  440. package/static/assets/codemirror/mode/cobol/cobol.js +0 -255
  441. package/static/assets/codemirror/mode/coffeescript/coffeescript.js +0 -359
  442. package/static/assets/codemirror/mode/commonlisp/commonlisp.js +0 -125
  443. package/static/assets/codemirror/mode/crystal/crystal.js +0 -433
  444. package/static/assets/codemirror/mode/css/css.js +0 -862
  445. package/static/assets/codemirror/mode/cypher/cypher.js +0 -152
  446. package/static/assets/codemirror/mode/d/d.js +0 -223
  447. package/static/assets/codemirror/mode/dart/dart.js +0 -168
  448. package/static/assets/codemirror/mode/diff/diff.js +0 -47
  449. package/static/assets/codemirror/mode/django/django.js +0 -356
  450. package/static/assets/codemirror/mode/dockerfile/dockerfile.js +0 -211
  451. package/static/assets/codemirror/mode/dtd/dtd.js +0 -142
  452. package/static/assets/codemirror/mode/dylan/dylan.js +0 -352
  453. package/static/assets/codemirror/mode/ebnf/ebnf.js +0 -195
  454. package/static/assets/codemirror/mode/ecl/ecl.js +0 -206
  455. package/static/assets/codemirror/mode/eiffel/eiffel.js +0 -160
  456. package/static/assets/codemirror/mode/elm/elm.js +0 -245
  457. package/static/assets/codemirror/mode/erlang/erlang.js +0 -619
  458. package/static/assets/codemirror/mode/factor/factor.js +0 -85
  459. package/static/assets/codemirror/mode/fcl/fcl.js +0 -173
  460. package/static/assets/codemirror/mode/forth/forth.js +0 -180
  461. package/static/assets/codemirror/mode/fortran/fortran.js +0 -188
  462. package/static/assets/codemirror/mode/gas/gas.js +0 -355
  463. package/static/assets/codemirror/mode/gfm/gfm.js +0 -129
  464. package/static/assets/codemirror/mode/gherkin/gherkin.js +0 -194
  465. package/static/assets/codemirror/mode/go/go.js +0 -187
  466. package/static/assets/codemirror/mode/groovy/groovy.js +0 -245
  467. package/static/assets/codemirror/mode/haml/haml.js +0 -161
  468. package/static/assets/codemirror/mode/handlebars/handlebars.js +0 -70
  469. package/static/assets/codemirror/mode/haskell/haskell.js +0 -268
  470. package/static/assets/codemirror/mode/haskell-literate/haskell-literate.js +0 -43
  471. package/static/assets/codemirror/mode/haxe/haxe.js +0 -515
  472. package/static/assets/codemirror/mode/htmlembedded/htmlembedded.js +0 -37
  473. package/static/assets/codemirror/mode/htmlmixed/htmlmixed.js +0 -153
  474. package/static/assets/codemirror/mode/http/http.js +0 -113
  475. package/static/assets/codemirror/mode/idl/idl.js +0 -290
  476. package/static/assets/codemirror/mode/javascript/javascript.js +0 -960
  477. package/static/assets/codemirror/mode/jinja2/jinja2.js +0 -193
  478. package/static/assets/codemirror/mode/jsx/jsx.js +0 -149
  479. package/static/assets/codemirror/mode/julia/julia.js +0 -390
  480. package/static/assets/codemirror/mode/livescript/livescript.js +0 -280
  481. package/static/assets/codemirror/mode/lua/lua.js +0 -160
  482. package/static/assets/codemirror/mode/markdown/markdown.js +0 -886
  483. package/static/assets/codemirror/mode/mathematica/mathematica.js +0 -176
  484. package/static/assets/codemirror/mode/mbox/mbox.js +0 -129
  485. package/static/assets/codemirror/mode/meta.js +0 -221
  486. package/static/assets/codemirror/mode/mirc/mirc.js +0 -193
  487. package/static/assets/codemirror/mode/mllike/mllike.js +0 -359
  488. package/static/assets/codemirror/mode/modelica/modelica.js +0 -245
  489. package/static/assets/codemirror/mode/mscgen/mscgen.js +0 -175
  490. package/static/assets/codemirror/mode/mumps/mumps.js +0 -148
  491. package/static/assets/codemirror/mode/nginx/nginx.js +0 -178
  492. package/static/assets/codemirror/mode/nsis/nsis.js +0 -95
  493. package/static/assets/codemirror/mode/ntriples/ntriples.js +0 -195
  494. package/static/assets/codemirror/mode/octave/octave.js +0 -139
  495. package/static/assets/codemirror/mode/oz/oz.js +0 -252
  496. package/static/assets/codemirror/mode/pascal/pascal.js +0 -136
  497. package/static/assets/codemirror/mode/pegjs/pegjs.js +0 -111
  498. package/static/assets/codemirror/mode/perl/perl.js +0 -836
  499. package/static/assets/codemirror/mode/php/php.js +0 -234
  500. package/static/assets/codemirror/mode/pig/pig.js +0 -178
  501. package/static/assets/codemirror/mode/powershell/powershell.js +0 -398
  502. package/static/assets/codemirror/mode/properties/properties.js +0 -78
  503. package/static/assets/codemirror/mode/protobuf/protobuf.js +0 -72
  504. package/static/assets/codemirror/mode/pug/pug.js +0 -591
  505. package/static/assets/codemirror/mode/puppet/puppet.js +0 -220
  506. package/static/assets/codemirror/mode/python/python.js +0 -402
  507. package/static/assets/codemirror/mode/q/q.js +0 -139
  508. package/static/assets/codemirror/mode/r/r.js +0 -190
  509. package/static/assets/codemirror/mode/rpm/changes/index.html +0 -66
  510. package/static/assets/codemirror/mode/rpm/rpm.js +0 -109
  511. package/static/assets/codemirror/mode/rst/rst.js +0 -557
  512. package/static/assets/codemirror/mode/ruby/ruby.js +0 -303
  513. package/static/assets/codemirror/mode/rust/rust.js +0 -72
  514. package/static/assets/codemirror/mode/sas/sas.js +0 -303
  515. package/static/assets/codemirror/mode/sass/sass.js +0 -459
  516. package/static/assets/codemirror/mode/scheme/scheme.js +0 -284
  517. package/static/assets/codemirror/mode/shell/shell.js +0 -168
  518. package/static/assets/codemirror/mode/sieve/sieve.js +0 -193
  519. package/static/assets/codemirror/mode/slim/slim.js +0 -575
  520. package/static/assets/codemirror/mode/smalltalk/smalltalk.js +0 -168
  521. package/static/assets/codemirror/mode/smarty/smarty.js +0 -225
  522. package/static/assets/codemirror/mode/solr/solr.js +0 -104
  523. package/static/assets/codemirror/mode/soy/soy.js +0 -665
  524. package/static/assets/codemirror/mode/sparql/sparql.js +0 -184
  525. package/static/assets/codemirror/mode/spreadsheet/spreadsheet.js +0 -112
  526. package/static/assets/codemirror/mode/sql/sql.js +0 -529
  527. package/static/assets/codemirror/mode/stex/stex.js +0 -264
  528. package/static/assets/codemirror/mode/stylus/stylus.js +0 -775
  529. package/static/assets/codemirror/mode/swift/swift.js +0 -221
  530. package/static/assets/codemirror/mode/tcl/tcl.js +0 -140
  531. package/static/assets/codemirror/mode/textile/textile.js +0 -469
  532. package/static/assets/codemirror/mode/tiddlywiki/tiddlywiki.css +0 -14
  533. package/static/assets/codemirror/mode/tiddlywiki/tiddlywiki.js +0 -308
  534. package/static/assets/codemirror/mode/tiki/tiki.css +0 -26
  535. package/static/assets/codemirror/mode/tiki/tiki.js +0 -312
  536. package/static/assets/codemirror/mode/toml/toml.js +0 -88
  537. package/static/assets/codemirror/mode/tornado/tornado.js +0 -68
  538. package/static/assets/codemirror/mode/troff/troff.js +0 -84
  539. package/static/assets/codemirror/mode/ttcn/ttcn.js +0 -283
  540. package/static/assets/codemirror/mode/ttcn-cfg/ttcn-cfg.js +0 -214
  541. package/static/assets/codemirror/mode/turtle/turtle.js +0 -162
  542. package/static/assets/codemirror/mode/twig/twig.js +0 -141
  543. package/static/assets/codemirror/mode/vb/vb.js +0 -275
  544. package/static/assets/codemirror/mode/vbscript/vbscript.js +0 -350
  545. package/static/assets/codemirror/mode/velocity/velocity.js +0 -202
  546. package/static/assets/codemirror/mode/verilog/verilog.js +0 -781
  547. package/static/assets/codemirror/mode/vhdl/vhdl.js +0 -189
  548. package/static/assets/codemirror/mode/vue/vue.js +0 -77
  549. package/static/assets/codemirror/mode/wast/wast.js +0 -132
  550. package/static/assets/codemirror/mode/webidl/webidl.js +0 -195
  551. package/static/assets/codemirror/mode/xml/xml.js +0 -417
  552. package/static/assets/codemirror/mode/xquery/xquery.js +0 -448
  553. package/static/assets/codemirror/mode/yacas/yacas.js +0 -204
  554. package/static/assets/codemirror/mode/yaml/yaml.js +0 -120
  555. package/static/assets/codemirror/mode/yaml-frontmatter/yaml-frontmatter.js +0 -72
  556. package/static/assets/codemirror/mode/z80/z80.js +0 -116
  557. package/static/chunk-2KLC4T2Z.js +0 -1
  558. package/static/chunk-2VMSXRCB.js +0 -12
  559. package/static/chunk-3OHSRRKH.js +0 -4
  560. package/static/chunk-3R4WKOHQ.js +0 -1
  561. package/static/chunk-3XVM35O2.js +0 -1
  562. package/static/chunk-3YVRP3VM.js +0 -2
  563. package/static/chunk-5UKZLU5H.js +0 -1
  564. package/static/chunk-AF24EYXU.js +0 -1
  565. package/static/chunk-AKQVEHO6.js +0 -2
  566. package/static/chunk-BCVX464U.js +0 -2
  567. package/static/chunk-BQV4FRM6.js +0 -1
  568. package/static/chunk-CETH7UYS.js +0 -1
  569. package/static/chunk-DIT6W7VM.js +0 -562
  570. package/static/chunk-DKSEQTMX.js +0 -1
  571. package/static/chunk-FZ3JPGYZ.js +0 -1
  572. package/static/chunk-IQSKQXC3.js +0 -1
  573. package/static/chunk-ITUFI2BJ.js +0 -1
  574. package/static/chunk-LCTZJ537.js +0 -1
  575. package/static/chunk-LK2UCQJ6.js +0 -1
  576. package/static/chunk-LP5TBXEN.js +0 -7
  577. package/static/chunk-N3U6637P.js +0 -1
  578. package/static/chunk-NNV4OXSB.js +0 -1
  579. package/static/chunk-O6FYXVHI.js +0 -1
  580. package/static/chunk-OOGP4WSH.js +0 -2
  581. package/static/chunk-PCWDQPOM.js +0 -2
  582. package/static/chunk-PNR6M34W.js +0 -1
  583. package/static/chunk-Q5KM7LTX.js +0 -1
  584. package/static/chunk-QHC6ZPQ4.js +0 -1
  585. package/static/chunk-QMRBZHE4.js +0 -1
  586. package/static/chunk-QSJRY3TF.js +0 -1
  587. package/static/chunk-QUUIRSYT.js +0 -1
  588. package/static/chunk-RFH46UW3.js +0 -1
  589. package/static/chunk-RSXHRKM5.js +0 -1
  590. package/static/chunk-RV3VZJPZ.js +0 -1
  591. package/static/chunk-S7HNXVRB.js +0 -1
  592. package/static/chunk-SBZ572Q4.js +0 -2
  593. package/static/chunk-SJR5R3Y4.js +0 -1
  594. package/static/chunk-SLHTEGRU.js +0 -1
  595. package/static/chunk-SSFF27P2.js +0 -24
  596. package/static/chunk-V3LHHZYN.js +0 -1
  597. package/static/chunk-VQQKMY2C.js +0 -1
  598. package/static/chunk-WSSU2HXE.js +0 -1
  599. package/static/chunk-XDZGW64M.js +0 -3
  600. package/static/chunk-XTRDKGKG.js +0 -1
  601. package/static/chunk-YLWTEC3X.js +0 -1
  602. package/static/chunk-Z5J5F5SX.js +0 -1
  603. package/static/main-4H5BJY3J.js +0 -9
  604. package/static/scripts-WRDOQIU5.js +0 -24
  605. package/static/styles-2C2UNCNB.css +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../backend/src/applications/notifications/services/notifications-manager.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 { i18nLocale } from '../../../common/i18n'\nimport { MailProps } from '../../../infrastructure/mailer/interfaces/mail.interface'\nimport { Mailer } from '../../../infrastructure/mailer/mailer.service'\nimport { USER_NOTIFICATION } from '../../users/constants/user'\nimport { UserModel } from '../../users/models/user.model'\nimport { getAvatarBase64 } from '../../users/utils/avatar'\nimport { NOTIFICATION_APP } from '../constants/notifications'\nimport { NOTIFICATIONS_WS } from '../constants/websocket'\nimport type { NotificationContent, NotificationFromUser, NotificationOptions } from '../interfaces/notification-properties.interface'\nimport type { UserMailNotification } from '../interfaces/user-mail-notification'\nimport { auth2FaMail, authLocked, commentMail, linkMail, shareMail, spaceMail, spaceRootMail, syncMail } from '../mails/models'\nimport { WebSocketNotifications } from '../notifications.gateway'\nimport { NotificationsQueries } from './notifications-queries.service'\n\n@Injectable()\nexport class NotificationsManager {\n private readonly logger = new Logger(NotificationsManager.name)\n\n constructor(\n private readonly mailer: Mailer,\n private readonly notificationsQueries: NotificationsQueries,\n private readonly webSocketNotifications: WebSocketNotifications\n ) {}\n\n list(user: UserModel, onlyUnread: boolean = false): Promise<NotificationFromUser[]> {\n return this.notificationsQueries.list(user.id, onlyUnread)\n }\n\n async create(toUsers: UserMailNotification[] | number[], content: NotificationContent, options?: NotificationOptions): Promise<void> {\n // store it in db\n const isArrayOfUsers: boolean = typeof toUsers[0] === 'object'\n const toUserIds = isArrayOfUsers ? (toUsers as UserMailNotification[]).map((m) => m.id) : (toUsers as number[])\n this.storeNotification(toUserIds, content, options?.author?.id).catch((e: Error) => this.logger.error(`${this.create.name} - ${e}`))\n\n // send websocket notification\n this.webSocketNotifications.sendMessageToUsers(toUserIds, NOTIFICATIONS_WS.EVENTS.NOTIFICATION, 'check')\n\n // send emails\n if (this.mailer.available) {\n const usersNotifiedByEmail: UserMailNotification[] = isArrayOfUsers\n ? (toUsers as UserMailNotification[]).filter((u) => u.notification === USER_NOTIFICATION.APPLICATION_EMAIL)\n : await this.notificationsQueries.usersNotifiedByEmail(toUsers as number[])\n if (!usersNotifiedByEmail.length) {\n return\n }\n this.sendEmailNotification(usersNotifiedByEmail, content, options).catch((e: Error) => this.logger.error(`${this.create.name} - ${e}`))\n }\n }\n\n wasRead(user: UserModel, notificationId?: number): void {\n this.notificationsQueries.wasRead(user.id, notificationId).catch((e: Error) => this.logger.error(`${this.wasRead.name} - ${e}`))\n }\n\n async delete(user: UserModel, notificationId?: number): Promise<void> {\n return this.notificationsQueries.delete(user.id, notificationId)\n }\n\n async sendEmailNotification(toUsers: UserMailNotification[], content: NotificationContent, options?: NotificationOptions): Promise<void> {\n if (!this.mailer.available) {\n return\n }\n if (options?.author) {\n options.author.avatarBase64 = await getAvatarBase64(options.author.login)\n }\n this.mailer\n .sendMails(\n await Promise.all(\n toUsers.map(async (m) => {\n const [title, html] = this.genMail(m.language as i18nLocale, content, options)\n return {\n to: m.email,\n subject: title,\n html: html\n } satisfies MailProps\n })\n )\n )\n .catch((e: Error) => this.logger.error(`${this.sendEmailNotification.name} - ${e}`))\n }\n\n private async storeNotification(toUserIds: number[], content: NotificationContent, authorId?: number): Promise<void> {\n // store it in db\n try {\n await this.notificationsQueries.create(authorId || null, toUserIds, content)\n } catch (e) {\n this.logger.error(`${this.create.name} - ${e}`)\n }\n }\n\n private genMail(language: i18nLocale, content: NotificationContent, options?: NotificationOptions): [string, string] {\n switch (content.app) {\n case NOTIFICATION_APP.COMMENTS:\n return commentMail(language, content, { content: options.content, currentUrl: options.currentUrl, author: options.author })\n case NOTIFICATION_APP.SPACES:\n return spaceMail(language, content, { currentUrl: options.currentUrl, action: options.action })\n case NOTIFICATION_APP.SPACE_ROOTS:\n return spaceRootMail(language, content, { currentUrl: options.currentUrl, author: options.author, action: options.action })\n case NOTIFICATION_APP.SHARES:\n return shareMail(language, content, { currentUrl: options.currentUrl, author: options.author, action: options.action })\n case NOTIFICATION_APP.LINKS:\n return linkMail(language, content, {\n currentUrl: options.currentUrl,\n author: options.author,\n linkUUID: options.linkUUID,\n linkPassword: options.linkPassword,\n action: options.action\n })\n case NOTIFICATION_APP.SYNC:\n return syncMail(language, content, { currentUrl: options.currentUrl, action: options.action })\n case NOTIFICATION_APP.AUTH_2FA:\n return auth2FaMail(language, content)\n case NOTIFICATION_APP.AUTH_LOCKED:\n return authLocked(language, content)\n default:\n this.logger.error(`${this.genMail.name} - case not handled : ${content.app}`)\n }\n }\n}\n"],"names":["NotificationsManager","list","user","onlyUnread","notificationsQueries","id","create","toUsers","content","options","isArrayOfUsers","toUserIds","map","m","storeNotification","author","catch","e","logger","error","name","webSocketNotifications","sendMessageToUsers","NOTIFICATIONS_WS","EVENTS","NOTIFICATION","mailer","available","usersNotifiedByEmail","filter","u","notification","USER_NOTIFICATION","APPLICATION_EMAIL","length","sendEmailNotification","wasRead","notificationId","delete","avatarBase64","getAvatarBase64","login","sendMails","Promise","all","title","html","genMail","language","to","email","subject","authorId","app","NOTIFICATION_APP","COMMENTS","commentMail","currentUrl","SPACES","spaceMail","action","SPACE_ROOTS","spaceRootMail","SHARES","shareMail","LINKS","linkMail","linkUUID","linkPassword","SYNC","syncMail","AUTH_2FA","auth2FaMail","AUTH_LOCKED","authLocked","Logger"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../backend/src/applications/notifications/services/notifications-manager.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 { i18nLocale } from '../../../common/i18n'\nimport { MailProps } from '../../../infrastructure/mailer/interfaces/mail.interface'\nimport { Mailer } from '../../../infrastructure/mailer/mailer.service'\nimport { USER_NOTIFICATION } from '../../users/constants/user'\nimport { UserModel } from '../../users/models/user.model'\nimport { getAvatarBase64 } from '../../users/utils/avatar'\nimport { NOTIFICATION_APP } from '../constants/notifications'\nimport { NOTIFICATIONS_WS } from '../constants/websocket'\nimport type { NotificationContent, NotificationFromUser, NotificationOptions } from '../interfaces/notification-properties.interface'\nimport type { UserMailNotification } from '../interfaces/user-mail-notification.interface'\nimport {\n auth2FaMail,\n authLockedMail,\n commentMail,\n linkMail,\n requestUnlockMail,\n serverUpdateAvailableMail,\n shareMail,\n spaceMail,\n spaceRootMail,\n syncMail\n} from '../mails/models'\nimport { WebSocketNotifications } from '../notifications.gateway'\nimport { NotificationsQueries } from './notifications-queries.service'\n\n@Injectable()\nexport class NotificationsManager {\n private readonly logger = new Logger(NotificationsManager.name)\n\n constructor(\n private readonly mailer: Mailer,\n private readonly notificationsQueries: NotificationsQueries,\n private readonly webSocketNotifications: WebSocketNotifications\n ) {}\n\n list(user: UserModel, onlyUnread: boolean = false): Promise<NotificationFromUser[]> {\n return this.notificationsQueries.list(user.id, onlyUnread)\n }\n\n async create(toUsers: UserMailNotification[] | number[], content: NotificationContent, options?: NotificationOptions): Promise<void> {\n // store it in db\n const isArrayOfUsers: boolean = typeof toUsers[0] === 'object'\n const toUserIds = isArrayOfUsers ? (toUsers as UserMailNotification[]).map((m) => m.id) : (toUsers as number[])\n this.storeNotification(toUserIds, content, options?.author?.id).catch((e: Error) => this.logger.error(`${this.create.name} - ${e}`))\n\n // send websocket notification\n this.webSocketNotifications.sendMessageToUsers(toUserIds, NOTIFICATIONS_WS.EVENTS.NOTIFICATION, 'check')\n\n // send emails\n if (this.mailer.available) {\n const usersNotifiedByEmail: UserMailNotification[] = isArrayOfUsers\n ? (toUsers as UserMailNotification[]).filter((u) => u.notification === USER_NOTIFICATION.APPLICATION_EMAIL)\n : await this.notificationsQueries.usersNotifiedByEmail(toUsers as number[])\n if (!usersNotifiedByEmail.length) {\n return\n }\n this.sendEmailNotification(usersNotifiedByEmail, content, options).catch((e: Error) => this.logger.error(`${this.create.name} - ${e}`))\n }\n }\n\n wasRead(user: UserModel, notificationId?: number): void {\n this.notificationsQueries.wasRead(user.id, notificationId).catch((e: Error) => this.logger.error(`${this.wasRead.name} - ${e}`))\n }\n\n async delete(user: UserModel, notificationId?: number): Promise<void> {\n return this.notificationsQueries.delete(user.id, notificationId)\n }\n\n async sendEmailNotification(toUsers: UserMailNotification[], content: NotificationContent, options?: NotificationOptions): Promise<void> {\n if (!this.mailer.available) {\n return\n }\n if (options?.author) {\n options.author.avatarBase64 = await getAvatarBase64(options.author.login)\n }\n this.mailer\n .sendMails(\n await Promise.all(\n toUsers.map(async (m) => {\n const [title, html] = this.genMail(m.language as i18nLocale, content, options)\n return {\n to: m.email,\n subject: title,\n html: html\n } satisfies MailProps\n })\n )\n )\n .catch((e: Error) => this.logger.error(`${this.sendEmailNotification.name} - ${e}`))\n }\n\n private async storeNotification(toUserIds: number[], content: NotificationContent, authorId?: number): Promise<void> {\n // store it in db\n try {\n await this.notificationsQueries.create(authorId || null, toUserIds, content)\n } catch (e) {\n this.logger.error(`${this.create.name} - ${e}`)\n }\n }\n\n private genMail(language: i18nLocale, content: NotificationContent, options?: NotificationOptions): [string, string] {\n switch (content.app) {\n case NOTIFICATION_APP.COMMENTS:\n return commentMail(language, content, { content: options.content, currentUrl: options.currentUrl, author: options.author })\n case NOTIFICATION_APP.SPACES:\n return spaceMail(language, content, { currentUrl: options.currentUrl, action: options.action })\n case NOTIFICATION_APP.SPACE_ROOTS:\n return spaceRootMail(language, content, { currentUrl: options.currentUrl, author: options.author, action: options.action })\n case NOTIFICATION_APP.SHARES:\n return shareMail(language, content, { currentUrl: options.currentUrl, author: options.author, action: options.action })\n case NOTIFICATION_APP.LINKS:\n return linkMail(language, content, {\n currentUrl: options.currentUrl,\n author: options.author,\n linkUUID: options.linkUUID,\n linkPassword: options.linkPassword,\n action: options.action\n })\n case NOTIFICATION_APP.SYNC:\n return syncMail(language, content, { currentUrl: options.currentUrl, action: options.action })\n case NOTIFICATION_APP.AUTH_2FA:\n return auth2FaMail(language, content)\n case NOTIFICATION_APP.AUTH_LOCKED:\n return authLockedMail(language, content)\n case NOTIFICATION_APP.UNLOCK_REQUEST:\n return requestUnlockMail(language, content, { currentUrl: options.currentUrl, author: options.author })\n case NOTIFICATION_APP.UPDATE_AVAILABLE:\n return serverUpdateAvailableMail(language, content)\n default:\n this.logger.error(`${this.genMail.name} - case not handled : ${content.app}`)\n }\n }\n}\n"],"names":["NotificationsManager","list","user","onlyUnread","notificationsQueries","id","create","toUsers","content","options","isArrayOfUsers","toUserIds","map","m","storeNotification","author","catch","e","logger","error","name","webSocketNotifications","sendMessageToUsers","NOTIFICATIONS_WS","EVENTS","NOTIFICATION","mailer","available","usersNotifiedByEmail","filter","u","notification","USER_NOTIFICATION","APPLICATION_EMAIL","length","sendEmailNotification","wasRead","notificationId","delete","avatarBase64","getAvatarBase64","login","sendMails","Promise","all","title","html","genMail","language","to","email","subject","authorId","app","NOTIFICATION_APP","COMMENTS","commentMail","currentUrl","SPACES","spaceMail","action","SPACE_ROOTS","spaceRootMail","SHARES","shareMail","LINKS","linkMail","linkUUID","linkPassword","SYNC","syncMail","AUTH_2FA","auth2FaMail","AUTH_LOCKED","authLockedMail","UNLOCK_REQUEST","requestUnlockMail","UPDATE_AVAILABLE","serverUpdateAvailableMail","Logger"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../backend/src/applications/notifications/services/notifications-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 } from '@nestjs/common'\nimport { and, desc, eq, inArray, SelectedFields, SQL } from 'drizzle-orm'\nimport { DB_TOKEN_PROVIDER } from '../../../infrastructure/database/constants'\nimport { DBSchema } from '../../../infrastructure/database/interfaces/database.interface'\nimport { dbCheckAffectedRows } from '../../../infrastructure/database/utils'\nimport { USER_NOTIFICATION } from '../../users/constants/user'\nimport { userFullNameSQL, users } from '../../users/schemas/users.schema'\nimport type { NotificationContent, NotificationFromUser } from '../interfaces/notification-properties.interface'\nimport type { UserMailNotification } from '../interfaces/user-mail-notification'\nimport { Notification } from '../schemas/notification.interface'\nimport { notifications } from '../schemas/notifications.schema'\n\n@Injectable()\nexport class NotificationsQueries {\n constructor(@Inject(DB_TOKEN_PROVIDER) private readonly db: DBSchema) {}\n\n list(userId: number, onlyUnread: boolean = false): Promise<NotificationFromUser[]> {\n const where: SQL[] = [eq(notifications.toUserId, userId), ...(onlyUnread ? [eq(notifications.wasRead, false)] : [])]\n return this.db\n .select({\n id: notifications.id,\n fromUser: { id: users.id, login: users.login, email: users.email, fullName: userFullNameSQL(users) },\n content: notifications.content,\n wasRead: notifications.wasRead,\n createdAt: notifications.createdAt\n } satisfies NotificationFromUser | SelectedFields<any, any>)\n .from(notifications)\n .leftJoin(users, eq(users.id, notifications.fromUserId))\n .where(and(...where))\n .orderBy(desc(notifications.id))\n }\n\n async create(fromUserId: number, toUserIds: number[], content: NotificationContent): Promise<void> {\n dbCheckAffectedRows(\n await this.db.insert(notifications).values(\n toUserIds.map((toUserId: number) => ({\n fromUserId: fromUserId,\n toUserId: toUserId,\n content: content\n }))\n ),\n toUserIds.length\n )\n }\n\n async wasRead(userId: number, notificationId: number): Promise<void> {\n await this.db\n .update(notifications)\n .set({ wasRead: true } as Notification)\n .where(and(eq(notifications.toUserId, userId), eq(notifications.id, notificationId), eq(notifications.wasRead, false)))\n }\n\n async delete(userId: number, notificationId?: number): Promise<void> {\n const where: SQL[] = [eq(notifications.toUserId, userId), ...(notificationId ? [eq(notifications.id, notificationId)] : [])]\n await this.db.delete(notifications).where(and(...where))\n }\n\n usersNotifiedByEmail(userIds: number[]): Promise<UserMailNotification[]> {\n return this.db\n .select({\n id: users.id,\n email: users.email,\n language: users.language,\n notification: users.notification\n } satisfies UserMailNotification | SelectedFields<any, any>)\n .from(users)\n .where(and(inArray(users.id, userIds), eq(users.notification, USER_NOTIFICATION.APPLICATION_EMAIL)))\n }\n}\n"],"names":["NotificationsQueries","list","userId","onlyUnread","where","eq","notifications","toUserId","wasRead","db","select","id","fromUser","users","login","email","fullName","userFullNameSQL","content","createdAt","from","leftJoin","fromUserId","and","orderBy","desc","create","toUserIds","dbCheckAffectedRows","insert","values","map","length","notificationId","update","set","delete","usersNotifiedByEmail","userIds","language","notification","inArray","USER_NOTIFICATION","APPLICATION_EMAIL"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../backend/src/applications/notifications/services/notifications-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 } from '@nestjs/common'\nimport { and, desc, eq, inArray, SelectedFields, SQL } from 'drizzle-orm'\nimport { DB_TOKEN_PROVIDER } from '../../../infrastructure/database/constants'\nimport { DBSchema } from '../../../infrastructure/database/interfaces/database.interface'\nimport { dbCheckAffectedRows } from '../../../infrastructure/database/utils'\nimport { USER_NOTIFICATION } from '../../users/constants/user'\nimport { userFullNameSQL, users } from '../../users/schemas/users.schema'\nimport type { NotificationContent, NotificationFromUser } from '../interfaces/notification-properties.interface'\nimport type { UserMailNotification } from '../interfaces/user-mail-notification.interface'\nimport { Notification } from '../schemas/notification.interface'\nimport { notifications } from '../schemas/notifications.schema'\n\n@Injectable()\nexport class NotificationsQueries {\n constructor(@Inject(DB_TOKEN_PROVIDER) private readonly db: DBSchema) {}\n\n list(userId: number, onlyUnread: boolean = false): Promise<NotificationFromUser[]> {\n const where: SQL[] = [eq(notifications.toUserId, userId), ...(onlyUnread ? [eq(notifications.wasRead, false)] : [])]\n return this.db\n .select({\n id: notifications.id,\n fromUser: { id: users.id, login: users.login, email: users.email, fullName: userFullNameSQL(users) },\n content: notifications.content,\n wasRead: notifications.wasRead,\n createdAt: notifications.createdAt\n } satisfies NotificationFromUser | SelectedFields<any, any>)\n .from(notifications)\n .leftJoin(users, eq(users.id, notifications.fromUserId))\n .where(and(...where))\n .orderBy(desc(notifications.id))\n }\n\n async create(fromUserId: number, toUserIds: number[], content: NotificationContent): Promise<void> {\n dbCheckAffectedRows(\n await this.db.insert(notifications).values(\n toUserIds.map((toUserId: number) => ({\n fromUserId: fromUserId,\n toUserId: toUserId,\n content: content\n }))\n ),\n toUserIds.length\n )\n }\n\n async wasRead(userId: number, notificationId: number): Promise<void> {\n await this.db\n .update(notifications)\n .set({ wasRead: true } as Notification)\n .where(and(eq(notifications.toUserId, userId), eq(notifications.id, notificationId), eq(notifications.wasRead, false)))\n }\n\n async delete(userId: number, notificationId?: number): Promise<void> {\n const where: SQL[] = [eq(notifications.toUserId, userId), ...(notificationId ? [eq(notifications.id, notificationId)] : [])]\n await this.db.delete(notifications).where(and(...where))\n }\n\n usersNotifiedByEmail(userIds: number[]): Promise<UserMailNotification[]> {\n return this.db\n .select({\n id: users.id,\n email: users.email,\n language: users.language,\n notification: users.notification\n } satisfies UserMailNotification | SelectedFields<any, any>)\n .from(users)\n .where(and(inArray(users.id, userIds), eq(users.notification, USER_NOTIFICATION.APPLICATION_EMAIL)))\n }\n}\n"],"names":["NotificationsQueries","list","userId","onlyUnread","where","eq","notifications","toUserId","wasRead","db","select","id","fromUser","users","login","email","fullName","userFullNameSQL","content","createdAt","from","leftJoin","fromUserId","and","orderBy","desc","create","toUserIds","dbCheckAffectedRows","insert","values","map","length","notificationId","update","set","delete","usersNotifiedByEmail","userIds","language","notification","inArray","USER_NOTIFICATION","APPLICATION_EMAIL"],"mappings":"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"}
@@ -16,6 +16,7 @@ const _common = require("@nestjs/common");
16
16
  const _nodepath = /*#__PURE__*/ _interop_require_default(require("node:path"));
17
17
  const _constants = require("../../../common/constants");
18
18
  const _functions = require("../../../common/functions");
19
+ const _shared = require("../../../common/shared");
19
20
  const _contextmanagerservice = require("../../../infrastructure/context/services/context-manager.service");
20
21
  const _fileerror = require("../../files/models/file-error");
21
22
  const _files = require("../../files/utils/files");
@@ -127,6 +128,12 @@ let SharesManager = class SharesManager {
127
128
  share.ownerId = user.id;
128
129
  if (createOrUpdateShareDto.file.ownerId) {
129
130
  /* PERSONAL SPACE CASE */ // check file
131
+ if (createOrUpdateShareDto.file.ownerId === user.id && createOrUpdateShareDto.file.id > 0) {
132
+ // When a user shares a root space they own, it is recommended to create the share from their personal space.
133
+ // `file.path` come from a root space with a custom name (invalid in the personal space context); if so, retrieve the original path.
134
+ const f = await this.spacesQueries.getUserFile(user.id, createOrUpdateShareDto.file.id);
135
+ if (f) createOrUpdateShareDto.file.path = f.path;
136
+ }
130
137
  const realPath = _nodepath.default.join(user.filesPath, createOrUpdateShareDto.file.path);
131
138
  if (!await (0, _files.isPathExists)(realPath)) {
132
139
  this.logger.warn(`${this.createShare.name} - location does not exist : ${realPath}`);
@@ -147,11 +154,11 @@ let SharesManager = class SharesManager {
147
154
  space.setPermissions(true);
148
155
  // intersect space permissions for members
149
156
  for (const m of createOrUpdateShareDto.members){
150
- m.permissions = (0, _functions.intersectPermissions)(space.envPermissions, m.permissions);
157
+ m.permissions = (0, _shared.intersectPermissions)(space.envPermissions, m.permissions);
151
158
  }
152
159
  // intersect space permissions for links
153
160
  for (const l of createOrUpdateShareDto.links){
154
- l.permissions = (0, _functions.intersectPermissions)(space.envPermissions, l.permissions);
161
+ l.permissions = (0, _shared.intersectPermissions)(space.envPermissions, l.permissions);
155
162
  }
156
163
  // check file
157
164
  try {
@@ -187,7 +194,7 @@ let SharesManager = class SharesManager {
187
194
  }
188
195
  // create share
189
196
  share.id = await this.sharesQueries.createShare(share);
190
- // check & update members
197
+ // check and update members
191
198
  await this.createOrUpdateLinksAsMembers(user, share, _links.LINK_TYPE.SHARE, createOrUpdateShareDto.links);
192
199
  await this.updateMembers(user, share, [], createOrUpdateShareDto.members);
193
200
  return this.getShareWithMembers(user, share.id);
@@ -224,11 +231,11 @@ let SharesManager = class SharesManager {
224
231
  const linkMembers = await this.createOrUpdateLinksAsMembers(user, share, _links.LINK_TYPE.SHARE, createOrUpdateShareDto.links);
225
232
  // intersect share permissions for members
226
233
  for (const m of createOrUpdateShareDto.members){
227
- m.permissions = (0, _functions.intersectPermissions)(share.file.permissions, m.permissions);
234
+ m.permissions = (0, _shared.intersectPermissions)(share.file.permissions, m.permissions);
228
235
  }
229
236
  // intersect share permissions for links
230
237
  for (const l of linkMembers){
231
- l.permissions = (0, _functions.intersectPermissions)(share.file.permissions, l.permissions);
238
+ l.permissions = (0, _shared.intersectPermissions)(share.file.permissions, l.permissions);
232
239
  }
233
240
  await this.updateMembers(user, share, share.members, [
234
241
  ...createOrUpdateShareDto.members,
@@ -342,11 +349,11 @@ let SharesManager = class SharesManager {
342
349
  share.id = await this.sharesQueries.createShare(share);
343
350
  // intersect parent share permissions for members
344
351
  for (const m of createOrUpdateShareDto.members){
345
- m.permissions = (0, _functions.intersectPermissions)(pSharePermissions.permissions, m.permissions);
352
+ m.permissions = (0, _shared.intersectPermissions)(pSharePermissions.permissions, m.permissions);
346
353
  }
347
354
  // intersect parent share permissions for links
348
355
  for (const l of createOrUpdateShareDto.links){
349
- l.permissions = (0, _functions.intersectPermissions)(pSharePermissions.permissions, l.permissions);
356
+ l.permissions = (0, _shared.intersectPermissions)(pSharePermissions.permissions, l.permissions);
350
357
  }
351
358
  // check & update members
352
359
  await this.createOrUpdateLinksAsMembers(user, share, _links.LINK_TYPE.SHARE, createOrUpdateShareDto.links);
@@ -547,7 +554,7 @@ let SharesManager = class SharesManager {
547
554
  // permissions are only present if the share type is link
548
555
  // intersect permissions to ensure that the user does not attempt to exceed his rights
549
556
  const shareLink = await this.getShareLink(user, spaceOrShareId);
550
- updateMember.permissions = (0, _functions.intersectPermissions)(shareLink.file.permissions, v);
557
+ updateMember.permissions = (0, _shared.intersectPermissions)(shareLink.file.permissions, v);
551
558
  }
552
559
  break;
553
560
  case 'language':
@@ -984,7 +991,7 @@ let SharesManager = class SharesManager {
984
991
  url: _spaces.SPACE_REPOSITORY.SHARES
985
992
  };
986
993
  this.notificationsManager.create(memberIds, notification, {
987
- currentUrl: this.contextManager.get('headerOriginUrl'),
994
+ currentUrl: this.contextManager.headerOriginUrl(),
988
995
  author: user,
989
996
  action: action
990
997
  }).catch((e)=>this.logger.error(`${this.clearCachePermissionsAndOrNotify.name} - ${e}`));
@@ -1010,7 +1017,7 @@ let SharesManager = class SharesManager {
1010
1017
  author: user,
1011
1018
  linkUUID: link.linkSettings.uuid,
1012
1019
  linkPassword: link.linkSettings.password,
1013
- currentUrl: this.contextManager.get('headerOriginUrl'),
1020
+ currentUrl: this.contextManager.headerOriginUrl(),
1014
1021
  action: action
1015
1022
  }).catch((e)=>this.logger.error(`${this.notifyGuestLink.name} - ${e}`));
1016
1023
  }