@sync-in/server 1.8.1 → 1.9.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 (603) hide show
  1. package/CHANGELOG.md +56 -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.module.js +4 -0
  7. package/server/app.module.js.map +1 -1
  8. package/server/applications/admin/admin.module.js +6 -1
  9. package/server/applications/admin/admin.module.js.map +1 -1
  10. package/server/applications/{notifications/interfaces/user-mail-notification.js → admin/interfaces/check-update.interfaces.js} +1 -1
  11. package/server/applications/admin/interfaces/check-update.interfaces.js.map +1 -0
  12. package/server/applications/admin/services/admin-scheduler.service.js +53 -0
  13. package/server/applications/admin/services/admin-scheduler.service.js.map +1 -0
  14. package/server/applications/admin/services/admin.service.js +102 -0
  15. package/server/applications/admin/services/admin.service.js.map +1 -0
  16. package/server/applications/admin/services/admin.service.spec.js +46 -0
  17. package/server/applications/admin/services/admin.service.spec.js.map +1 -0
  18. package/server/applications/admin/utils/check-update.js +28 -0
  19. package/server/applications/admin/utils/check-update.js.map +1 -0
  20. package/server/applications/comments/services/comments-manager.service.js +1 -1
  21. package/server/applications/comments/services/comments-manager.service.js.map +1 -1
  22. package/server/applications/comments/services/comments-manager.service.spec.js +1 -1
  23. package/server/applications/comments/services/comments-manager.service.spec.js.map +1 -1
  24. package/server/applications/comments/services/comments-queries.service.js.map +1 -1
  25. package/server/applications/files/constants/cache.js +10 -1
  26. package/server/applications/files/constants/cache.js.map +1 -1
  27. package/server/applications/files/constants/only-office.js +0 -25
  28. package/server/applications/files/constants/only-office.js.map +1 -1
  29. package/server/applications/files/constants/operations.js +20 -3
  30. package/server/applications/files/constants/operations.js.map +1 -1
  31. package/server/applications/files/dto/file-operations.dto.js +7 -0
  32. package/server/applications/files/dto/file-operations.dto.js.map +1 -1
  33. package/server/applications/files/files-only-office.controller.js +3 -2
  34. package/server/applications/files/files-only-office.controller.js.map +1 -1
  35. package/server/applications/files/files-only-office.controller.spec.js +6 -5
  36. package/server/applications/files/files-only-office.controller.spec.js.map +1 -1
  37. package/server/applications/files/files.controller.js +88 -8
  38. package/server/applications/files/files.controller.js.map +1 -1
  39. package/server/applications/files/files.controller.spec.js +11 -4
  40. package/server/applications/files/files.controller.spec.js.map +1 -1
  41. package/server/applications/files/guards/files-only-office.guard.js +6 -0
  42. package/server/applications/files/guards/files-only-office.guard.js.map +1 -1
  43. package/server/applications/files/interfaces/file-db-props.interface.js.map +1 -1
  44. package/server/applications/files/interfaces/file-props.interface.js.map +1 -1
  45. package/server/applications/files/interfaces/only-office-config.interface.js.map +1 -1
  46. package/server/applications/files/services/files-content-manager.service.js +3 -3
  47. package/server/applications/files/services/files-content-manager.service.js.map +1 -1
  48. package/server/applications/files/services/files-lock-manager.service.js +61 -22
  49. package/server/applications/files/services/files-lock-manager.service.js.map +1 -1
  50. package/server/applications/files/services/files-manager.service.js +122 -24
  51. package/server/applications/files/services/files-manager.service.js.map +1 -1
  52. package/server/applications/files/services/files-manager.service.spec.js +15 -0
  53. package/server/applications/files/services/files-manager.service.spec.js.map +1 -1
  54. package/server/applications/files/services/files-methods.service.js +38 -8
  55. package/server/applications/files/services/files-methods.service.js.map +1 -1
  56. package/server/applications/files/services/files-only-office-manager.service.js +12 -12
  57. package/server/applications/files/services/files-only-office-manager.service.js.map +1 -1
  58. package/server/applications/files/services/files-parser.service.js +1 -1
  59. package/server/applications/files/services/files-parser.service.js.map +1 -1
  60. package/server/applications/files/services/files-queries.service.js +10 -0
  61. package/server/applications/files/services/files-queries.service.js.map +1 -1
  62. package/server/applications/files/utils/files.js +1 -1
  63. package/server/applications/files/utils/files.js.map +1 -1
  64. package/server/applications/files/utils/send-file.js +3 -2
  65. package/server/applications/files/utils/send-file.js.map +1 -1
  66. package/server/applications/links/services/links-queries.service.js +1 -1
  67. package/server/applications/links/services/links-queries.service.js.map +1 -1
  68. package/server/applications/notifications/constants/notifications.js +5 -1
  69. package/server/applications/notifications/constants/notifications.js.map +1 -1
  70. package/server/applications/notifications/i18n/de.js +8 -2
  71. package/server/applications/notifications/i18n/de.js.map +1 -1
  72. package/server/applications/notifications/i18n/es.js +8 -2
  73. package/server/applications/notifications/i18n/es.js.map +1 -1
  74. package/server/applications/notifications/i18n/fr.js +8 -2
  75. package/server/applications/notifications/i18n/fr.js.map +1 -1
  76. package/server/applications/notifications/i18n/hi.js +8 -2
  77. package/server/applications/notifications/i18n/hi.js.map +1 -1
  78. package/server/applications/notifications/i18n/it.js +8 -2
  79. package/server/applications/notifications/i18n/it.js.map +1 -1
  80. package/server/applications/notifications/i18n/ja.js +8 -2
  81. package/server/applications/notifications/i18n/ja.js.map +1 -1
  82. package/server/applications/notifications/i18n/ko.js +8 -2
  83. package/server/applications/notifications/i18n/ko.js.map +1 -1
  84. package/server/applications/notifications/i18n/pl.js +8 -2
  85. package/server/applications/notifications/i18n/pl.js.map +1 -1
  86. package/server/applications/notifications/i18n/pt.js +8 -2
  87. package/server/applications/notifications/i18n/pt.js.map +1 -1
  88. package/server/applications/notifications/i18n/pt_br.js +8 -2
  89. package/server/applications/notifications/i18n/pt_br.js.map +1 -1
  90. package/server/applications/notifications/i18n/ru.js +8 -2
  91. package/server/applications/notifications/i18n/ru.js.map +1 -1
  92. package/server/applications/notifications/i18n/tr.js +8 -2
  93. package/server/applications/notifications/i18n/tr.js.map +1 -1
  94. package/server/applications/notifications/i18n/zh.js +8 -2
  95. package/server/applications/notifications/i18n/zh.js.map +1 -1
  96. package/server/applications/notifications/interfaces/notification-properties.interface.js.map +1 -1
  97. package/server/applications/notifications/interfaces/user-mail-notification.interface.js +10 -0
  98. package/server/applications/notifications/interfaces/user-mail-notification.interface.js.map +1 -0
  99. package/server/applications/notifications/mails/models.js +38 -3
  100. package/server/applications/notifications/mails/models.js.map +1 -1
  101. package/server/applications/notifications/mails/templates.js +1 -1
  102. package/server/applications/notifications/mails/templates.js.map +1 -1
  103. package/server/applications/notifications/services/notifications-manager.service.js +8 -1
  104. package/server/applications/notifications/services/notifications-manager.service.js.map +1 -1
  105. package/server/applications/notifications/services/notifications-queries.service.js.map +1 -1
  106. package/server/applications/shares/services/shares-manager.service.js +17 -10
  107. package/server/applications/shares/services/shares-manager.service.js.map +1 -1
  108. package/server/applications/shares/services/shares-manager.service.spec.js +10 -3
  109. package/server/applications/shares/services/shares-manager.service.spec.js.map +1 -1
  110. package/server/applications/shares/services/shares-queries.service.js +11 -1
  111. package/server/applications/shares/services/shares-queries.service.js.map +1 -1
  112. package/server/applications/spaces/guards/space.guard.spec.js +2 -2
  113. package/server/applications/spaces/guards/space.guard.spec.js.map +1 -1
  114. package/server/applications/spaces/services/spaces-browser.service.js +31 -11
  115. package/server/applications/spaces/services/spaces-browser.service.js.map +1 -1
  116. package/server/applications/spaces/services/spaces-manager.service.js +2 -2
  117. package/server/applications/spaces/services/spaces-manager.service.js.map +1 -1
  118. package/server/applications/spaces/services/spaces-queries.service.js +6 -2
  119. package/server/applications/spaces/services/spaces-queries.service.js.map +1 -1
  120. package/server/applications/spaces/utils/permissions.js +2 -2
  121. package/server/applications/spaces/utils/permissions.js.map +1 -1
  122. package/server/applications/sync/services/sync-manager.service.js +1 -0
  123. package/server/applications/sync/services/sync-manager.service.js.map +1 -1
  124. package/server/applications/sync/services/sync-paths-manager.service.js +1 -1
  125. package/server/applications/sync/services/sync-paths-manager.service.js.map +1 -1
  126. package/server/applications/sync/services/sync-paths-manager.service.spec.js +1 -1
  127. package/server/applications/sync/services/sync-paths-manager.service.spec.js.map +1 -1
  128. package/server/applications/users/constants/user.js +1 -1
  129. package/server/applications/users/constants/user.js.map +1 -1
  130. package/server/applications/users/services/admin-users-queries.service.js +8 -0
  131. package/server/applications/users/services/admin-users-queries.service.js.map +1 -1
  132. package/server/applications/users/services/users-queries.service.js +67 -68
  133. package/server/applications/users/services/users-queries.service.js.map +1 -1
  134. package/server/applications/users/users.module.js +2 -1
  135. package/server/applications/users/users.module.js.map +1 -1
  136. package/server/applications/webdav/guards/webdav-protocol.guard.js +4 -4
  137. package/server/applications/webdav/guards/webdav-protocol.guard.js.map +1 -1
  138. package/server/applications/webdav/guards/webdav-protocol.guard.spec.js +6 -6
  139. package/server/applications/webdav/guards/webdav-protocol.guard.spec.js.map +1 -1
  140. package/server/applications/webdav/services/webdav-methods.service.js +3 -2
  141. package/server/applications/webdav/services/webdav-methods.service.js.map +1 -1
  142. package/server/applications/webdav/services/webdav-methods.service.spec.js +2 -2
  143. package/server/applications/webdav/services/webdav-methods.service.spec.js.map +1 -1
  144. package/server/authentication/constants/auth-ldap.js +2 -0
  145. package/server/authentication/constants/auth-ldap.js.map +1 -1
  146. package/server/authentication/services/auth-methods/auth-method-ldap.service.js +34 -21
  147. package/server/authentication/services/auth-methods/auth-method-ldap.service.js.map +1 -1
  148. package/server/common/functions.js +0 -8
  149. package/server/common/functions.js.map +1 -1
  150. package/server/common/image.js +1 -0
  151. package/server/common/image.js.map +1 -1
  152. package/server/common/shared.js +18 -1
  153. package/server/common/shared.js.map +1 -1
  154. package/server/infrastructure/context/services/context-manager.service.js +3 -0
  155. package/server/infrastructure/context/services/context-manager.service.js.map +1 -1
  156. package/server/infrastructure/websocket/adapters/cluster.adapter.js +4 -4
  157. package/server/infrastructure/websocket/adapters/cluster.adapter.js.map +1 -1
  158. package/static/3rdpartylicenses.txt +1393 -44
  159. package/static/assets/favicon.svg +2 -25
  160. package/static/assets/logo-dark.svg +2 -32
  161. package/static/assets/logo.svg +2 -32
  162. package/static/assets/mimes/application-sql.svg +29 -1
  163. package/static/assets/mimes/application-x-sql.svg +29 -0
  164. package/static/assets/mimes/image-bmp.svg +12 -0
  165. package/static/assets/pdfjs/build/pdf.mjs +4869 -4454
  166. package/static/assets/pdfjs/build/pdf.mjs.map +1 -1
  167. package/static/assets/pdfjs/build/pdf.sandbox.mjs +3 -3
  168. package/static/assets/pdfjs/build/pdf.sandbox.mjs.map +1 -1
  169. package/static/assets/pdfjs/build/pdf.worker.mjs +885 -596
  170. package/static/assets/pdfjs/build/pdf.worker.mjs.map +1 -1
  171. package/static/assets/pdfjs/version +1 -1
  172. package/static/assets/pdfjs/web/locale/be/viewer.ftl +40 -0
  173. package/static/assets/pdfjs/web/locale/bg/viewer.ftl +2 -0
  174. package/static/assets/pdfjs/web/locale/cs/viewer.ftl +41 -0
  175. package/static/assets/pdfjs/web/locale/cy/viewer.ftl +43 -0
  176. package/static/assets/pdfjs/web/locale/da/viewer.ftl +39 -0
  177. package/static/assets/pdfjs/web/locale/de/viewer.ftl +41 -0
  178. package/static/assets/pdfjs/web/locale/dsb/viewer.ftl +43 -0
  179. package/static/assets/pdfjs/web/locale/el/viewer.ftl +39 -0
  180. package/static/assets/pdfjs/web/locale/en-CA/viewer.ftl +35 -0
  181. package/static/assets/pdfjs/web/locale/en-GB/viewer.ftl +41 -0
  182. package/static/assets/pdfjs/web/locale/en-US/viewer.ftl +2 -2
  183. package/static/assets/pdfjs/web/locale/eo/viewer.ftl +39 -0
  184. package/static/assets/pdfjs/web/locale/es-AR/viewer.ftl +41 -0
  185. package/static/assets/pdfjs/web/locale/es-CL/viewer.ftl +39 -0
  186. package/static/assets/pdfjs/web/locale/es-ES/viewer.ftl +72 -0
  187. package/static/assets/pdfjs/web/locale/es-MX/viewer.ftl +120 -0
  188. package/static/assets/pdfjs/web/locale/eu/viewer.ftl +41 -0
  189. package/static/assets/pdfjs/web/locale/fi/viewer.ftl +41 -0
  190. package/static/assets/pdfjs/web/locale/fr/viewer.ftl +41 -0
  191. package/static/assets/pdfjs/web/locale/fur/viewer.ftl +77 -0
  192. package/static/assets/pdfjs/web/locale/fy-NL/viewer.ftl +41 -0
  193. package/static/assets/pdfjs/web/locale/gn/viewer.ftl +39 -0
  194. package/static/assets/pdfjs/web/locale/he/viewer.ftl +41 -0
  195. package/static/assets/pdfjs/web/locale/hsb/viewer.ftl +43 -0
  196. package/static/assets/pdfjs/web/locale/hu/viewer.ftl +41 -0
  197. package/static/assets/pdfjs/web/locale/hy-AM/viewer.ftl +1 -1
  198. package/static/assets/pdfjs/web/locale/ia/viewer.ftl +41 -0
  199. package/static/assets/pdfjs/web/locale/it/viewer.ftl +41 -0
  200. package/static/assets/pdfjs/web/locale/ja/viewer.ftl +32 -0
  201. package/static/assets/pdfjs/web/locale/ka/viewer.ftl +41 -0
  202. package/static/assets/pdfjs/web/locale/kab/viewer.ftl +73 -0
  203. package/static/assets/pdfjs/web/locale/kk/viewer.ftl +21 -0
  204. package/static/assets/pdfjs/web/locale/ko/viewer.ftl +38 -1
  205. package/static/assets/pdfjs/web/locale/nb-NO/viewer.ftl +39 -0
  206. package/static/assets/pdfjs/web/locale/nl/viewer.ftl +41 -0
  207. package/static/assets/pdfjs/web/locale/nn-NO/viewer.ftl +37 -0
  208. package/static/assets/pdfjs/web/locale/pa-IN/viewer.ftl +37 -0
  209. package/static/assets/pdfjs/web/locale/pl/viewer.ftl +39 -0
  210. package/static/assets/pdfjs/web/locale/pt-BR/viewer.ftl +39 -0
  211. package/static/assets/pdfjs/web/locale/rm/viewer.ftl +73 -0
  212. package/static/assets/pdfjs/web/locale/ro/viewer.ftl +41 -0
  213. package/static/assets/pdfjs/web/locale/ru/viewer.ftl +42 -0
  214. package/static/assets/pdfjs/web/locale/sc/viewer.ftl +6 -0
  215. package/static/assets/pdfjs/web/locale/sk/viewer.ftl +43 -0
  216. package/static/assets/pdfjs/web/locale/sl/viewer.ftl +42 -1
  217. package/static/assets/pdfjs/web/locale/sq/viewer.ftl +77 -0
  218. package/static/assets/pdfjs/web/locale/sv-SE/viewer.ftl +41 -0
  219. package/static/assets/pdfjs/web/locale/tg/viewer.ftl +39 -0
  220. package/static/assets/pdfjs/web/locale/th/viewer.ftl +35 -0
  221. package/static/assets/pdfjs/web/locale/tr/viewer.ftl +39 -0
  222. package/static/assets/pdfjs/web/locale/vi/viewer.ftl +42 -5
  223. package/static/assets/pdfjs/web/locale/zh-CN/viewer.ftl +35 -0
  224. package/static/assets/pdfjs/web/locale/zh-TW/viewer.ftl +37 -0
  225. package/static/assets/pdfjs/web/viewer.css +141 -110
  226. package/static/assets/pdfjs/web/viewer.html +7 -7
  227. package/static/assets/pdfjs/web/viewer.mjs +97 -14
  228. package/static/assets/pdfjs/web/viewer.mjs.map +1 -1
  229. package/static/chunk-22DWHRCL.js +1 -0
  230. package/static/chunk-23UUFZSR.js +1 -0
  231. package/static/{chunk-MTVSJTIW.js → chunk-24Q7OUU2.js} +1 -1
  232. package/static/chunk-25QTY2GI.js +1 -0
  233. package/static/chunk-2E7IJZLL.js +1 -0
  234. package/static/chunk-2FC5EKS5.js +1 -0
  235. package/static/chunk-2FOWUJQF.js +1 -0
  236. package/static/chunk-2XPHUNYN.js +1 -0
  237. package/static/chunk-32L7RG2G.js +1 -0
  238. package/static/chunk-3IISSX63.js +1 -0
  239. package/static/chunk-3OHSTP3R.js +1 -0
  240. package/static/chunk-42L6C5MT.js +1 -0
  241. package/static/chunk-4AGQL5GV.js +1 -0
  242. package/static/chunk-4BPSQMI2.js +1 -0
  243. package/static/chunk-4FDRWZWT.js +1 -0
  244. package/static/chunk-4FJUCMEG.js +1 -0
  245. package/static/chunk-4GCCF6PF.js +1 -0
  246. package/static/chunk-4ORP3SBY.js +1 -0
  247. package/static/chunk-4QBOHIC3.js +1 -0
  248. package/static/chunk-4YT6K5KY.js +1 -0
  249. package/static/chunk-556I6YIW.js +1 -0
  250. package/static/chunk-5DPIGJU4.js +1 -0
  251. package/static/chunk-5HNQLBSW.js +3 -0
  252. package/static/chunk-5IL7C45D.js +1 -0
  253. package/static/chunk-5KJXGMKR.js +1 -0
  254. package/static/chunk-5SPGSHKL.js +1 -0
  255. package/static/chunk-5WCQBTXW.js +1 -0
  256. package/static/chunk-5XUIPWOH.js +1 -0
  257. package/static/chunk-62WT7PI3.js +1 -0
  258. package/static/chunk-6F6OMQ5H.js +1 -0
  259. package/static/chunk-6I5BGQHT.js +1 -0
  260. package/static/chunk-6NOS45DG.js +1 -0
  261. package/static/chunk-6OKLPRCD.js +1 -0
  262. package/static/chunk-6VEJCG43.js +1 -0
  263. package/static/chunk-77SS36Z2.js +1 -0
  264. package/static/chunk-7AXEPO3G.js +1 -0
  265. package/static/chunk-7CFSJ4BO.js +1 -0
  266. package/static/chunk-7CKHC72R.js +1 -0
  267. package/static/chunk-7DUTYOJG.js +1 -0
  268. package/static/chunk-7HKFYRPF.js +1 -0
  269. package/static/chunk-7NZJZATZ.js +1 -0
  270. package/static/chunk-AADK5D2H.js +1 -0
  271. package/static/chunk-ACUF7IKP.js +1 -0
  272. package/static/chunk-AGREZPV4.js +1 -0
  273. package/static/chunk-ATBJWFA3.js +1 -0
  274. package/static/chunk-ATXLZN2B.js +1 -0
  275. package/static/chunk-AZ5TF5Y3.js +1 -0
  276. package/static/chunk-BBHYIURC.js +1 -0
  277. package/static/chunk-BHZEPHRI.js +13 -0
  278. package/static/chunk-BQZWSZNN.js +1 -0
  279. package/static/chunk-BSB4VROD.js +2 -0
  280. package/static/chunk-BYWSTP3P.js +1 -0
  281. package/static/chunk-C3AAEQKW.js +1 -0
  282. package/static/chunk-CCGGCHGN.js +1 -0
  283. package/static/chunk-CFTKW432.js +1 -0
  284. package/static/chunk-CNOVT6KU.js +1 -0
  285. package/static/chunk-D56H3XE2.js +1 -0
  286. package/static/chunk-DFOOSIIA.js +1 -0
  287. package/static/chunk-DHFQIFOF.js +1 -0
  288. package/static/{chunk-3GMLWAFZ.js → chunk-DIC2MVRI.js} +1 -1
  289. package/static/chunk-DJDRX53V.js +2 -0
  290. package/static/chunk-DKGXUMLT.js +1 -0
  291. package/static/chunk-DRHPEERW.js +2 -0
  292. package/static/chunk-DWYP6ZGG.js +1 -0
  293. package/static/chunk-EDJAISWO.js +13 -0
  294. package/static/chunk-EIYRBM4J.js +1 -0
  295. package/static/chunk-EKEGRXCV.js +7 -0
  296. package/static/chunk-EL6QL4TP.js +1 -0
  297. package/static/chunk-ERDZ7IVF.js +1 -0
  298. package/static/chunk-EVQKKVUZ.js +1 -0
  299. package/static/chunk-F2XG7EWI.js +1 -0
  300. package/static/chunk-F672FY5I.js +1 -0
  301. package/static/chunk-F6V37MKG.js +1 -0
  302. package/static/chunk-F7TXTNZC.js +1 -0
  303. package/static/chunk-FCGTI42I.js +1 -0
  304. package/static/chunk-FQHOSSCO.js +1 -0
  305. package/static/chunk-FTSIPHMG.js +1 -0
  306. package/static/chunk-GAGHHYLF.js +1 -0
  307. package/static/{chunk-JPT5WEAT.js → chunk-GOJYWL2M.js} +1 -1
  308. package/static/chunk-H6WOTGQ5.js +1 -0
  309. package/static/{chunk-CHJ64RJM.js → chunk-H6ZXFINQ.js} +1 -1
  310. package/static/chunk-HC7F57NA.js +1 -0
  311. package/static/chunk-HHWXIK2M.js +7 -0
  312. package/static/chunk-HKRGIRKB.js +3 -0
  313. package/static/chunk-HNMGPG72.js +1 -0
  314. package/static/chunk-HS4S6BV3.js +1 -0
  315. package/static/chunk-IJ7K7ATQ.js +1 -0
  316. package/static/chunk-IOIBQGHN.js +562 -0
  317. package/static/chunk-ITVA26X2.js +2 -0
  318. package/static/chunk-J6YSFHLZ.js +1 -0
  319. package/static/chunk-JAEJ6IMV.js +1 -0
  320. package/static/chunk-JB5R6V33.js +1 -0
  321. package/static/chunk-JF6WIV6M.js +1 -0
  322. package/static/chunk-JGB4LLUT.js +1 -0
  323. package/static/chunk-JGXVTKLG.js +1 -0
  324. package/static/chunk-JMYAD7E2.js +1 -0
  325. package/static/chunk-JSE63Q5X.js +1 -0
  326. package/static/chunk-JVV3ZL6L.js +1 -0
  327. package/static/chunk-JXZCNFW7.js +1 -0
  328. package/static/chunk-KAVP6UXH.js +1 -0
  329. package/static/{chunk-3R74L4UU.js → chunk-KDEEERWZ.js} +1 -1
  330. package/static/chunk-KHRF67SG.js +1 -0
  331. package/static/chunk-KLOUBIO4.js +1 -0
  332. package/static/chunk-KMF3ZRAO.js +1 -0
  333. package/static/chunk-KNZ3AQPR.js +1 -0
  334. package/static/chunk-KT3TWCST.js +1 -0
  335. package/static/chunk-L6SYG23T.js +1 -0
  336. package/static/chunk-LJSVNPPQ.js +1 -0
  337. package/static/{chunk-LNTUR3GU.js → chunk-LRDKG274.js} +1 -1
  338. package/static/chunk-LRQSPCYZ.js +1 -0
  339. package/static/chunk-LUSVISM6.js +1 -0
  340. package/static/chunk-LXQGVNU2.js +1 -0
  341. package/static/{chunk-LVSNIS5P.js → chunk-LYZGJZNP.js} +1 -1
  342. package/static/chunk-LZKI5P5T.js +1 -0
  343. package/static/chunk-M4XL3JN5.js +6 -0
  344. package/static/{chunk-UNCPXHHT.js → chunk-MGWG7OD7.js} +1 -1
  345. package/static/chunk-MKUUWY6Y.js +1 -0
  346. package/static/{chunk-VJTXJ43D.js → chunk-MNNCSSHN.js} +1 -1
  347. package/static/chunk-MR3U7TKQ.js +1 -0
  348. package/static/chunk-MRF3CNLZ.js +1 -0
  349. package/static/chunk-MRMSMTWD.js +1 -0
  350. package/static/chunk-MVZJSG5R.js +1 -0
  351. package/static/chunk-MYM43ENO.js +1 -0
  352. package/static/chunk-N3P6P6GW.js +7 -0
  353. package/static/chunk-NAH4V2R6.js +2 -0
  354. package/static/chunk-NBBDVVUF.js +1 -0
  355. package/static/chunk-NMF2ZFBE.js +1 -0
  356. package/static/chunk-NN4ONTOT.js +1 -0
  357. package/static/chunk-NOPACN4F.js +1 -0
  358. package/static/chunk-NYJPOP4L.js +1 -0
  359. package/static/chunk-OJCAIKUK.js +1 -0
  360. package/static/chunk-OQRWXCLY.js +1 -0
  361. package/static/chunk-PCFH5HCI.js +2 -0
  362. package/static/chunk-PG54TWBO.js +4 -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-PZGLDZZM.js +1 -0
  367. package/static/chunk-Q4VNZGFI.js +1 -0
  368. package/static/chunk-Q556XB3S.js +1 -0
  369. package/static/{chunk-PB4AIT7O.js → chunk-Q7IXRPOO.js} +1 -1
  370. package/static/chunk-Q7U2VPIS.js +1 -0
  371. package/static/chunk-QM6CQMEX.js +1 -0
  372. package/static/chunk-QMHUIHSR.js +1 -0
  373. package/static/chunk-QNFNXDSX.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-RK7XRDNB.js +1 -0
  380. package/static/chunk-RO7SAOLK.js +1 -0
  381. package/static/chunk-RQUUINHV.js +1 -0
  382. package/static/chunk-RT3K6DZR.js +1 -0
  383. package/static/chunk-RUN556VW.js +1 -0
  384. package/static/chunk-RX3YQ67K.js +1 -0
  385. package/static/chunk-S6EVLDHA.js +5 -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-T74SMT7I.js +1 -0
  393. package/static/chunk-TAL3RTTQ.js +1 -0
  394. package/static/chunk-TJZKTNNS.js +1 -0
  395. package/static/chunk-UJTFWZEC.js +1 -0
  396. package/static/chunk-UPGVU5LG.js +1 -0
  397. package/static/chunk-UQ6O3I6W.js +1 -0
  398. package/static/{chunk-5NMSIIQB.js → chunk-V43RGNXA.js} +1 -1
  399. package/static/chunk-VWIRXLNE.js +1 -0
  400. package/static/chunk-VZMVGIVW.js +1 -0
  401. package/static/chunk-VZPCXSRG.js +2 -0
  402. package/static/chunk-WR3MA3L3.js +1 -0
  403. package/static/chunk-XCLK7NJL.js +1 -0
  404. package/static/{chunk-DSWEWLXJ.js → chunk-XCPDPB5G.js} +1 -1
  405. package/static/chunk-XEGHEUP5.js +1 -0
  406. package/static/chunk-XKEBQNQJ.js +1 -0
  407. package/static/chunk-XOF4UW3S.js +1 -0
  408. package/static/chunk-XOTKK2NJ.js +1 -0
  409. package/static/chunk-XX7JXKA6.js +1 -0
  410. package/static/chunk-Y2I36A4K.js +1 -0
  411. package/static/chunk-Y44XDRM5.js +1 -0
  412. package/static/{chunk-QO6BTONN.js → chunk-Y4MAPE2C.js} +1 -1
  413. package/static/chunk-Y5RLD72B.js +1 -0
  414. package/static/{chunk-DPUVSXRB.js → chunk-Y5XTRCFK.js} +1 -1
  415. package/static/chunk-Y63UUJGJ.js +1 -0
  416. package/static/chunk-YBNAC7QM.js +1 -0
  417. package/static/chunk-YCTCESL4.js +1 -0
  418. package/static/chunk-YMAN4LIU.js +1 -0
  419. package/static/chunk-YTDE6SXT.js +1 -0
  420. package/static/chunk-YZPIUJB3.js +1 -0
  421. package/static/chunk-ZCOWBVOT.js +1 -0
  422. package/static/chunk-ZHRYYMYE.js +1 -0
  423. package/static/chunk-ZNXTOQFG.js +1 -0
  424. package/static/{chunk-URHTCJ7G.js → chunk-ZQLBPLXI.js} +1 -1
  425. package/static/favicon.ico +0 -0
  426. package/static/index.html +2 -2
  427. package/static/main-3PLRDZTO.js +11 -0
  428. package/static/styles-Q4OZOSSK.css +1 -0
  429. package/server/applications/notifications/interfaces/user-mail-notification.js.map +0 -1
  430. package/static/assets/codemirror/mode/apl/apl.js +0 -174
  431. package/static/assets/codemirror/mode/asciiarmor/asciiarmor.js +0 -74
  432. package/static/assets/codemirror/mode/asn.1/asn.1.js +0 -204
  433. package/static/assets/codemirror/mode/asterisk/asterisk.js +0 -220
  434. package/static/assets/codemirror/mode/brainfuck/brainfuck.js +0 -85
  435. package/static/assets/codemirror/mode/clike/clike.js +0 -942
  436. package/static/assets/codemirror/mode/clojure/clojure.js +0 -293
  437. package/static/assets/codemirror/mode/cmake/cmake.js +0 -97
  438. package/static/assets/codemirror/mode/cobol/cobol.js +0 -255
  439. package/static/assets/codemirror/mode/coffeescript/coffeescript.js +0 -359
  440. package/static/assets/codemirror/mode/commonlisp/commonlisp.js +0 -125
  441. package/static/assets/codemirror/mode/crystal/crystal.js +0 -433
  442. package/static/assets/codemirror/mode/css/css.js +0 -862
  443. package/static/assets/codemirror/mode/cypher/cypher.js +0 -152
  444. package/static/assets/codemirror/mode/d/d.js +0 -223
  445. package/static/assets/codemirror/mode/dart/dart.js +0 -168
  446. package/static/assets/codemirror/mode/diff/diff.js +0 -47
  447. package/static/assets/codemirror/mode/django/django.js +0 -356
  448. package/static/assets/codemirror/mode/dockerfile/dockerfile.js +0 -211
  449. package/static/assets/codemirror/mode/dtd/dtd.js +0 -142
  450. package/static/assets/codemirror/mode/dylan/dylan.js +0 -352
  451. package/static/assets/codemirror/mode/ebnf/ebnf.js +0 -195
  452. package/static/assets/codemirror/mode/ecl/ecl.js +0 -206
  453. package/static/assets/codemirror/mode/eiffel/eiffel.js +0 -160
  454. package/static/assets/codemirror/mode/elm/elm.js +0 -245
  455. package/static/assets/codemirror/mode/erlang/erlang.js +0 -619
  456. package/static/assets/codemirror/mode/factor/factor.js +0 -85
  457. package/static/assets/codemirror/mode/fcl/fcl.js +0 -173
  458. package/static/assets/codemirror/mode/forth/forth.js +0 -180
  459. package/static/assets/codemirror/mode/fortran/fortran.js +0 -188
  460. package/static/assets/codemirror/mode/gas/gas.js +0 -355
  461. package/static/assets/codemirror/mode/gfm/gfm.js +0 -129
  462. package/static/assets/codemirror/mode/gherkin/gherkin.js +0 -194
  463. package/static/assets/codemirror/mode/go/go.js +0 -187
  464. package/static/assets/codemirror/mode/groovy/groovy.js +0 -245
  465. package/static/assets/codemirror/mode/haml/haml.js +0 -161
  466. package/static/assets/codemirror/mode/handlebars/handlebars.js +0 -70
  467. package/static/assets/codemirror/mode/haskell/haskell.js +0 -268
  468. package/static/assets/codemirror/mode/haskell-literate/haskell-literate.js +0 -43
  469. package/static/assets/codemirror/mode/haxe/haxe.js +0 -515
  470. package/static/assets/codemirror/mode/htmlembedded/htmlembedded.js +0 -37
  471. package/static/assets/codemirror/mode/htmlmixed/htmlmixed.js +0 -153
  472. package/static/assets/codemirror/mode/http/http.js +0 -113
  473. package/static/assets/codemirror/mode/idl/idl.js +0 -290
  474. package/static/assets/codemirror/mode/javascript/javascript.js +0 -960
  475. package/static/assets/codemirror/mode/jinja2/jinja2.js +0 -193
  476. package/static/assets/codemirror/mode/jsx/jsx.js +0 -149
  477. package/static/assets/codemirror/mode/julia/julia.js +0 -390
  478. package/static/assets/codemirror/mode/livescript/livescript.js +0 -280
  479. package/static/assets/codemirror/mode/lua/lua.js +0 -160
  480. package/static/assets/codemirror/mode/markdown/markdown.js +0 -886
  481. package/static/assets/codemirror/mode/mathematica/mathematica.js +0 -176
  482. package/static/assets/codemirror/mode/mbox/mbox.js +0 -129
  483. package/static/assets/codemirror/mode/meta.js +0 -221
  484. package/static/assets/codemirror/mode/mirc/mirc.js +0 -193
  485. package/static/assets/codemirror/mode/mllike/mllike.js +0 -359
  486. package/static/assets/codemirror/mode/modelica/modelica.js +0 -245
  487. package/static/assets/codemirror/mode/mscgen/mscgen.js +0 -175
  488. package/static/assets/codemirror/mode/mumps/mumps.js +0 -148
  489. package/static/assets/codemirror/mode/nginx/nginx.js +0 -178
  490. package/static/assets/codemirror/mode/nsis/nsis.js +0 -95
  491. package/static/assets/codemirror/mode/ntriples/ntriples.js +0 -195
  492. package/static/assets/codemirror/mode/octave/octave.js +0 -139
  493. package/static/assets/codemirror/mode/oz/oz.js +0 -252
  494. package/static/assets/codemirror/mode/pascal/pascal.js +0 -136
  495. package/static/assets/codemirror/mode/pegjs/pegjs.js +0 -111
  496. package/static/assets/codemirror/mode/perl/perl.js +0 -836
  497. package/static/assets/codemirror/mode/php/php.js +0 -234
  498. package/static/assets/codemirror/mode/pig/pig.js +0 -178
  499. package/static/assets/codemirror/mode/powershell/powershell.js +0 -398
  500. package/static/assets/codemirror/mode/properties/properties.js +0 -78
  501. package/static/assets/codemirror/mode/protobuf/protobuf.js +0 -72
  502. package/static/assets/codemirror/mode/pug/pug.js +0 -591
  503. package/static/assets/codemirror/mode/puppet/puppet.js +0 -220
  504. package/static/assets/codemirror/mode/python/python.js +0 -402
  505. package/static/assets/codemirror/mode/q/q.js +0 -139
  506. package/static/assets/codemirror/mode/r/r.js +0 -190
  507. package/static/assets/codemirror/mode/rpm/changes/index.html +0 -66
  508. package/static/assets/codemirror/mode/rpm/rpm.js +0 -109
  509. package/static/assets/codemirror/mode/rst/rst.js +0 -557
  510. package/static/assets/codemirror/mode/ruby/ruby.js +0 -303
  511. package/static/assets/codemirror/mode/rust/rust.js +0 -72
  512. package/static/assets/codemirror/mode/sas/sas.js +0 -303
  513. package/static/assets/codemirror/mode/sass/sass.js +0 -459
  514. package/static/assets/codemirror/mode/scheme/scheme.js +0 -284
  515. package/static/assets/codemirror/mode/shell/shell.js +0 -168
  516. package/static/assets/codemirror/mode/sieve/sieve.js +0 -193
  517. package/static/assets/codemirror/mode/slim/slim.js +0 -575
  518. package/static/assets/codemirror/mode/smalltalk/smalltalk.js +0 -168
  519. package/static/assets/codemirror/mode/smarty/smarty.js +0 -225
  520. package/static/assets/codemirror/mode/solr/solr.js +0 -104
  521. package/static/assets/codemirror/mode/soy/soy.js +0 -665
  522. package/static/assets/codemirror/mode/sparql/sparql.js +0 -184
  523. package/static/assets/codemirror/mode/spreadsheet/spreadsheet.js +0 -112
  524. package/static/assets/codemirror/mode/sql/sql.js +0 -529
  525. package/static/assets/codemirror/mode/stex/stex.js +0 -264
  526. package/static/assets/codemirror/mode/stylus/stylus.js +0 -775
  527. package/static/assets/codemirror/mode/swift/swift.js +0 -221
  528. package/static/assets/codemirror/mode/tcl/tcl.js +0 -140
  529. package/static/assets/codemirror/mode/textile/textile.js +0 -469
  530. package/static/assets/codemirror/mode/tiddlywiki/tiddlywiki.css +0 -14
  531. package/static/assets/codemirror/mode/tiddlywiki/tiddlywiki.js +0 -308
  532. package/static/assets/codemirror/mode/tiki/tiki.css +0 -26
  533. package/static/assets/codemirror/mode/tiki/tiki.js +0 -312
  534. package/static/assets/codemirror/mode/toml/toml.js +0 -88
  535. package/static/assets/codemirror/mode/tornado/tornado.js +0 -68
  536. package/static/assets/codemirror/mode/troff/troff.js +0 -84
  537. package/static/assets/codemirror/mode/ttcn/ttcn.js +0 -283
  538. package/static/assets/codemirror/mode/ttcn-cfg/ttcn-cfg.js +0 -214
  539. package/static/assets/codemirror/mode/turtle/turtle.js +0 -162
  540. package/static/assets/codemirror/mode/twig/twig.js +0 -141
  541. package/static/assets/codemirror/mode/vb/vb.js +0 -275
  542. package/static/assets/codemirror/mode/vbscript/vbscript.js +0 -350
  543. package/static/assets/codemirror/mode/velocity/velocity.js +0 -202
  544. package/static/assets/codemirror/mode/verilog/verilog.js +0 -781
  545. package/static/assets/codemirror/mode/vhdl/vhdl.js +0 -189
  546. package/static/assets/codemirror/mode/vue/vue.js +0 -77
  547. package/static/assets/codemirror/mode/wast/wast.js +0 -132
  548. package/static/assets/codemirror/mode/webidl/webidl.js +0 -195
  549. package/static/assets/codemirror/mode/xml/xml.js +0 -417
  550. package/static/assets/codemirror/mode/xquery/xquery.js +0 -448
  551. package/static/assets/codemirror/mode/yacas/yacas.js +0 -204
  552. package/static/assets/codemirror/mode/yaml/yaml.js +0 -120
  553. package/static/assets/codemirror/mode/yaml-frontmatter/yaml-frontmatter.js +0 -72
  554. package/static/assets/codemirror/mode/z80/z80.js +0 -116
  555. package/static/chunk-2KLC4T2Z.js +0 -1
  556. package/static/chunk-2VMSXRCB.js +0 -12
  557. package/static/chunk-3OHSRRKH.js +0 -4
  558. package/static/chunk-3R4WKOHQ.js +0 -1
  559. package/static/chunk-3XVM35O2.js +0 -1
  560. package/static/chunk-3YVRP3VM.js +0 -2
  561. package/static/chunk-5UKZLU5H.js +0 -1
  562. package/static/chunk-AF24EYXU.js +0 -1
  563. package/static/chunk-AKQVEHO6.js +0 -2
  564. package/static/chunk-BCVX464U.js +0 -2
  565. package/static/chunk-BQV4FRM6.js +0 -1
  566. package/static/chunk-CETH7UYS.js +0 -1
  567. package/static/chunk-DIT6W7VM.js +0 -562
  568. package/static/chunk-DKSEQTMX.js +0 -1
  569. package/static/chunk-FZ3JPGYZ.js +0 -1
  570. package/static/chunk-IQSKQXC3.js +0 -1
  571. package/static/chunk-ITUFI2BJ.js +0 -1
  572. package/static/chunk-LCTZJ537.js +0 -1
  573. package/static/chunk-LK2UCQJ6.js +0 -1
  574. package/static/chunk-LP5TBXEN.js +0 -7
  575. package/static/chunk-N3U6637P.js +0 -1
  576. package/static/chunk-NNV4OXSB.js +0 -1
  577. package/static/chunk-O6FYXVHI.js +0 -1
  578. package/static/chunk-OOGP4WSH.js +0 -2
  579. package/static/chunk-PCWDQPOM.js +0 -2
  580. package/static/chunk-PNR6M34W.js +0 -1
  581. package/static/chunk-Q5KM7LTX.js +0 -1
  582. package/static/chunk-QHC6ZPQ4.js +0 -1
  583. package/static/chunk-QMRBZHE4.js +0 -1
  584. package/static/chunk-QSJRY3TF.js +0 -1
  585. package/static/chunk-QUUIRSYT.js +0 -1
  586. package/static/chunk-RFH46UW3.js +0 -1
  587. package/static/chunk-RSXHRKM5.js +0 -1
  588. package/static/chunk-RV3VZJPZ.js +0 -1
  589. package/static/chunk-S7HNXVRB.js +0 -1
  590. package/static/chunk-SBZ572Q4.js +0 -2
  591. package/static/chunk-SJR5R3Y4.js +0 -1
  592. package/static/chunk-SLHTEGRU.js +0 -1
  593. package/static/chunk-SSFF27P2.js +0 -24
  594. package/static/chunk-V3LHHZYN.js +0 -1
  595. package/static/chunk-VQQKMY2C.js +0 -1
  596. package/static/chunk-WSSU2HXE.js +0 -1
  597. package/static/chunk-XDZGW64M.js +0 -3
  598. package/static/chunk-XTRDKGKG.js +0 -1
  599. package/static/chunk-YLWTEC3X.js +0 -1
  600. package/static/chunk-Z5J5F5SX.js +0 -1
  601. package/static/main-4H5BJY3J.js +0 -9
  602. package/static/scripts-WRDOQIU5.js +0 -24
  603. package/static/styles-2C2UNCNB.css +0 -1
package/CHANGELOG.md CHANGED
@@ -1,17 +1,62 @@
1
- ## [1.8.1](https://github.com/Sync-in/server/compare/v1.8.0...v1.8.1) (2025-10-30)
2
1
 
3
- ### Highlights
2
+ ## [1.9.0](https://github.com/Sync-in/server/compare/v1.8.1...v1.9.0) (2025-11-24)
3
+
4
+ ### Highlights 1.9
5
+
6
+ * 🎨 **Visual identity updated** — refreshed branding.
7
+ * 🖼️ **Enhanced image viewer** — browse all images in a directory, start slideshows, use fullscreen mode, and view detailed properties.
8
+ * ✏️ **Native text editor** — search, syntax highlighting, undo/redo, and lock/unlock capabilities built directly into the UI.
9
+ * 🔐 **Improved file lock management** — users can request unlocks from lock owners, and file owners can now remove locks themselves.
10
+ * ⚠️ **Overwrite confirmation dialogs** — added confirmation prompts for uploads, renaming, copying, and moving files to prevent accidental overwrites.
11
+
12
+ ➡️ [More details](https://sync-in.com/news/sync-in-server-1-9)
13
+
14
+
15
+ ### Features
16
+
17
+ * **admin:** add server update notification support ([fc72430](https://github.com/Sync-in/server/commit/fc72430d69b9d2fb31d24ef680efd602a2c94d87))
18
+ * **backend:auth:** allow cn LDAP attribute and add AD-specific logic ([6998b1a](https://github.com/Sync-in/server/commit/6998b1af24bc6a360a146f71d8d264c582e89edc))
19
+ * **backend:auth:** Allow the LDAP `mail` attribute to be used as the login attribute, and allow users to authenticate using either the login attribute or their email address ([a683b57](https://github.com/Sync-in/server/commit/a683b5760ce9386b51c7e21e8699bb8a8d9335c5))
20
+ * **backend:files:** improve file upload handling with comprehensive overwrite support and directory conflict resolution ([e69a687](https://github.com/Sync-in/server/commit/e69a687071c0d5e7fc8bd76cef820c87a35e852c))
21
+ * **docker:onlyoffice:** update DocumentServer image to v9.1 ([c64a3ae](https://github.com/Sync-in/server/commit/c64a3aeafc70b275acc9d2fa50a5b30517325673))
22
+ * **files:** add directory size retrieval with UI and API integration ([4528b43](https://github.com/Sync-in/server/commit/4528b438e0819d3e6d9f72c11fab931257cadad0))
23
+ * **files:** add overwrite confirmation dialog for file rename and update API to support overwrite behavior ([c7c0d96](https://github.com/Sync-in/server/commit/c7c0d96d46144062cda739e8f32726f27deb8911))
24
+ * **files:** add overwrite confirmation dialog for file uploads and adapt API to support overwrite functionality ([d39822f](https://github.com/Sync-in/server/commit/d39822fd2d787b2b3477214c5ab885e7f712264e))
25
+ * **files:** add unlock request feature and enable force unlock for file owners ([7441337](https://github.com/Sync-in/server/commit/7441337dd0035ef681ece616d3e21870134ea511))
26
+ * **files:** enable locking and unlocking of edited files with improved handling and UI integration ([24ad66b](https://github.com/Sync-in/server/commit/24ad66b034e3287a5bc81c504b383539e025fc10))
27
+ * **files:** improve file handling with edit mode toggle, unsaved changes warning, enhanced modal logic, and updated constants ([bcc3ad2](https://github.com/Sync-in/server/commit/bcc3ad28bd26b042de50506c6a5bb71aa1e720ca))
28
+ * **frontend:config:** enhance notifications with `maxOpened` and `autoDismiss` properties ([cf850bf](https://github.com/Sync-in/server/commit/cf850bf43f61306e7bb2ee5306741f2628f2d89a))
29
+ * **frontend:files:** add ability to edit basic text files ([85b56e2](https://github.com/Sync-in/server/commit/85b56e23d5c8c11ed62ef281bc2370965090305f))
30
+ * **frontend:files:** add fulscreen button in image viewer ([b834618](https://github.com/Sync-in/server/commit/b8346182fd3d01061573111bf80ba9aecca86e23))
31
+ * **frontend:files:** add new translations and improve text viewer with updated read-only state handling and line wrapping ([e90c91e](https://github.com/Sync-in/server/commit/e90c91ec48e0d46cbbb4245a0e2fc53549cc8e3a))
32
+ * **frontend:files:** add overwrite confirmation dialog for copy/move actions ([fa2d601](https://github.com/Sync-in/server/commit/fa2d601aba4aa0ad1e4f7142212ee64db3e73a96))
33
+ * **frontend:files:** add undo and redo functionality with i18n updates and improved editor error handling ([daccfbc](https://github.com/Sync-in/server/commit/daccfbcf7c01fe71421c696a4857a966f9bfef9b))
34
+ * **frontend:files:** enhance overwrite handling by updating MIME type on rename and improving file model consistency and UI visuals ([f68a073](https://github.com/Sync-in/server/commit/f68a07395487dd27779fa9ec52943ccbd7e1f722))
35
+ * **frontend:files:** enhance text viewer with search panel toggle and keyboard shortcuts handling ([5b411f0](https://github.com/Sync-in/server/commit/5b411f084913ab2ece2d499d85e3fab3b1c26f29))
36
+ * **frontend:files:** image viewer slideshow ([49bbd4e](https://github.com/Sync-in/server/commit/49bbd4e2ea325832e30a97b969b3043c8d294ebc))
37
+ * **frontend:files:** improve text viewer with line wrapping, saving state, and enhanced search panel handling ([e5f0863](https://github.com/Sync-in/server/commit/e5f0863bbd921ef97879ff076475aaa46a21d051))
38
+ * **frontend:files:** improve text viewer with save error handling and updated file upload logic ([034c7a4](https://github.com/Sync-in/server/commit/034c7a4db4961433c2d9223229edbee345f2ee67))
39
+ * **frontend:files:** start implementing image viewer and folder slideshow ([7a65927](https://github.com/Sync-in/server/commit/7a65927bc3bcfee88372f0a913db68c0daa1f768))
40
+ * **frontend:links:** update navigation to enter spaces and shares directly instead of selecting them ([fd64265](https://github.com/Sync-in/server/commit/fd6426566c0275daaf82dc4ae21809e6682b90b8))
41
+ * **frontend:modals:** improve modal animations, lifecycle handling, and state management ([bad0696](https://github.com/Sync-in/server/commit/bad06964b65586b751ce0c9cd4e163d921828a63))
42
+
4
43
 
5
- * 🌍 **14 languages supported** — added 12 new ones: 🇩🇪 🇪🇸 🇵🇹 🇧🇷 🇮🇹 🇨🇳 🇮🇳 🇹🇷 🇯🇵 🇰🇷 🇵🇱 🇷🇺
6
- * ⚡ **Better suited for small systems** – reduced the default number of backend workers from **2 to 1** to improve memory efficiency on lightweight
7
- setups (e.g. Raspberry Pi).
8
- * 😈 **FreeBSD support** npm distribution is now compatible with FreeBSD
9
- * 🔍 **Indexing & search controls** new config to enable/disable indexing, per-space toggles, and full-text search preferences.
10
- * 📊 **Quotas** define storage quotas for external shares; storage from anchored external locations now counts toward the space’s total usage.
11
- * 🖼️ **Thumbnails** photo thumbnail generation is now **3× faster**.
12
- * 🐳 **Docker** minimized system dependencies for a **lighter and more efficient image** (from 562MB to 357MB, saving 205MB!).
44
+ ### Bug Fixes
45
+
46
+ * **backend:common:** prevent errors on invalid image metadata with `failOn: 'none'` option in sharp ([901fdf8](https://github.com/Sync-in/server/commit/901fdf8cf9ede111cd821363a2a28470c5d9d314))
47
+ * **backend:files:** avoid copy failures when sample documents are read-only and files are written to a CIFS share by falling back to stream copy ([3b734b8](https://github.com/Sync-in/server/commit/3b734b82b8d02072aa09d941ffd7b911cfcf3950))
48
+ * **backend:files:** correct `isDir` SQL logic to handle external paths without associated file IDs ([b3ce7d4](https://github.com/Sync-in/server/commit/b3ce7d4ae66556d455bc5d5495ed2fe070c15efc))
49
+ * **backend:files:** correct directory flag and ensure consistent file move operation in trash handling ([e85ead7](https://github.com/Sync-in/server/commit/e85ead7e7f8a327466279af2d103d3a4d5644b80))
50
+ * **backend:files:** enable `cacheControl` to ensure consistent client-side caching behavior ([25ab568](https://github.com/Sync-in/server/commit/25ab56808b7f4507a09c570bc7e7623077d5c594))
51
+ * **backend:files:** ensure locks are visible on anchored and shared files ([6445333](https://github.com/Sync-in/server/commit/64453339e1ae7f4e8a8e8f061effbccaf5070aa6))
52
+ * **backend:files:** set `maxAge` to 0 to enforce immediate cache invalidation ([293f34c](https://github.com/Sync-in/server/commit/293f34cb0e4bf7ac46bde6b4dc2a2432c57c04ec))
53
+ * **backend:links:** restore access to anchored files from an external location when shared via a link ([f61f09f](https://github.com/Sync-in/server/commit/f61f09fdeefaff2492ae39423ef0958962562db3))
54
+ * **backend:shares:** ensure correct file path for root space shares owned by user ([f5adb55](https://github.com/Sync-in/server/commit/f5adb55612622875ccfcb29ebcc754c974f186fd))
55
+ * **backend:websocket:** prevent server connection from closing on shutdown hooks ([8714644](https://github.com/Sync-in/server/commit/8714644f4d6d35d8d9297bc2f47e2e3eed485938))
56
+ * **frontend:drag:** prevent drag-and-drop actions in the shares list and ensure proper drag event handling ([f19ab4f](https://github.com/Sync-in/server/commit/f19ab4f7ed976d909cda323f1839d458a895ec3d))
57
+ * **frontend:files:** sync read-only value with opening mode in the text editor ([dfff2dc](https://github.com/Sync-in/server/commit/dfff2dcf152e049e25a3f07f92a41ea4a8af4805))
13
58
 
14
- ➡️ [More details](https://sync-in.com/news/sync-in-server-1-8)
59
+ ## [1.8.1](https://github.com/Sync-in/server/compare/v1.8.0...v1.8.1) (2025-10-30)
15
60
 
16
61
  ### Bug Fixes
17
62
 
@@ -19,10 +19,10 @@ logger:
19
19
  # stdout: if false logs are written to the run directory
20
20
  # default: `true`
21
21
  stdout: true
22
- # colorize output
22
+ # Colorize output.
23
23
  # default: `true`
24
24
  colorize: true
25
- # path to the log file used when stdout is set to false
25
+ # Path to the log file used when stdout is set to false
26
26
  filePath:
27
27
  mysql:
28
28
  # required
@@ -33,20 +33,20 @@ cache:
33
33
  # adapter: `mysql` | `redis`
34
34
  # default: `mysql`
35
35
  adapter: mysql
36
- # ttl in seconds
36
+ # TTL in seconds
37
37
  # default: `60`
38
38
  ttl: 60
39
- # redis adapter url
39
+ # Redis adapter url
40
40
  # default: `redis://127.0.0.1:6379`
41
41
  redis: redis://127.0.0.1:6379
42
42
  websocket:
43
43
  # adapter: `cluster` (Node.js Workers: default) | `redis`
44
44
  # default: `cluster`
45
45
  adapter: cluster
46
- # cors origin allowed
46
+ # Cors origin allowed
47
47
  # default: `*`
48
48
  corsOrigin: '*'
49
- # redis adapter url
49
+ # Redis adapter url
50
50
  # default: `redis://127.0.0.1:6379`
51
51
  redis: redis://127.0.0.1:6379
52
52
  mail:
@@ -59,9 +59,9 @@ mail:
59
59
  auth:
60
60
  user: user
61
61
  pass: password
62
- # secure: defines if the connection should use SSL (if true) or not (if false)
63
- # note: setting `secure: false` does not necessarily mean messages are sent in plaintext
64
- # if the server supports STARTTLS, the connection is usually upgraded to TLS automatically
62
+ # Defines if the connection should use SSL (if true) or not (if false)
63
+ # Note: setting `secure: false` does not necessarily mean messages are sent in plaintext
64
+ # If the server supports STARTTLS, the connection is usually upgraded to TLS automatically
65
65
  # default: `false`
66
66
  secure: false
67
67
  # ignoreTLS: if true, disables the use of STARTTLS even if the server advertises it
@@ -70,28 +70,28 @@ mail:
70
70
  # rejectUnauthorized: reject the connection if the server's TLS certificate is invalid
71
71
  # default: false
72
72
  rejectUnauthorized: false
73
- # enable logger
73
+ # Enable logger
74
74
  # default: `false`
75
75
  logger: false
76
- # set log level to debug
76
+ # Set log level to debug
77
77
  # default: `false`
78
78
  debug: false
79
79
  auth:
80
80
  # adapter : `mysql` | `ldap`
81
81
  # default: `mysql`
82
82
  method: mysql
83
- # key used to encrypt user secret keys in the database
84
- # optional, but strongly recommended
85
- # warning: do not change or remove the encryption key after MFA activation, or the codes will become invalid
83
+ # Key used to encrypt user secret keys in the database
84
+ # Optional but strongly recommended
85
+ # Warning: do not change or remove the encryption key after MFA activation, or the codes will become invalid
86
86
  encryptionKey: changeEncryptionKeyWithStrongKey
87
- # multifactor authentication
87
+ # Multifactor authentication
88
88
  mfa:
89
- # totp configuration
89
+ # TOTP configuration
90
90
  totp:
91
- # enable TOTP authentication
91
+ # Enable TOTP authentication
92
92
  # default: true
93
93
  enabled: true
94
- # name displayed in the authentication app (FreeOTP, Proton Authenticator, Aegis Authenticator etc.)
94
+ # Name displayed in the authentication app (FreeOTP, Proton Authenticator, Aegis Authenticator etc.)
95
95
  # default: Sync-in
96
96
  issuer: Sync-in
97
97
  # cookie sameSite setting: `lax` | `strict`
@@ -99,14 +99,14 @@ auth:
99
99
  cookieSameSite: strict
100
100
  token:
101
101
  access:
102
- # used for token and cookie signatures
102
+ # Used for token and cookie signatures
103
103
  # required
104
104
  secret: changeAccessWithStrongSecret
105
105
  # token expiration = cookie maxAge
106
106
  # default: `30m`
107
107
  expiration: 30m
108
108
  refresh:
109
- # used for token and cookie signatures
109
+ # Used for token and cookie signatures
110
110
  # required
111
111
  secret: changeRefreshWithStrongSecret
112
112
  # token expiration = cookie maxAge
@@ -120,10 +120,13 @@ auth:
120
120
  # filter, e.g: (acl=admin)
121
121
  filter:
122
122
  attributes:
123
- # login attribute: `uid` | `sAMAccountName` | `userPrincipalName`, used to authenticate the user
123
+ # Login attribute used to construct the user's DN for binding.
124
+ # The value of this attribute is used as the naming attribute (first RDN) when forming the Distinguished Name (DN) during authentication
125
+ # login: `uid` | `cn` | `mail` | `sAMAccountName` | `userPrincipalName`, used to authenticate the user
124
126
  # default: `uid`
125
127
  login: uid
126
- # email attribute: `mail` or `email`
128
+ # Attribute used to retrieve the user's email address
129
+ # email: `mail` or `email`
127
130
  # default: `mail`
128
131
  email: mail
129
132
  # adminGroup: The CN of a group containing Sync-in administrators (e.g., administrators)
@@ -148,14 +151,14 @@ applications:
148
151
  # enable onlyoffice integration
149
152
  # default: false
150
153
  enabled: false
151
- # for an external server (e.g., https://onlyoffice.domain.com), remember the url must be accessible from browser !
152
- # if externalServer is empty (case of official docker compose), we use the local instance
154
+ # For an external server (e.g., https://onlyoffice.domain.com), remember the url must be accessible from browser!
155
+ # If externalServer is empty (case of official docker compose), we use the local instance
153
156
  # default: null
154
157
  externalServer:
155
- # secret used for jwt tokens, it must be the same on the onlyoffice server
158
+ # Secret used for jwt tokens, it must be the same on the onlyoffice server
156
159
  # required
157
160
  secret: onlyOfficeSecret
158
- # if you use https, set to `true`
161
+ # If you use https, set to `true`.
159
162
  # default: `false`
160
163
  verifySSL: false
161
164
  appStore:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sync-in/server",
3
- "version": "1.8.1",
3
+ "version": "1.9.0",
4
4
  "description": "The secure, open-source platform for file storage, sharing, collaboration, and sync",
5
5
  "author": {
6
6
  "name": "Johan Legrand",
@@ -80,29 +80,29 @@
80
80
  "@knaadh/nestjs-drizzle-mysql2": "1.2.0",
81
81
  "@lukeed/ms": "2.0.2",
82
82
  "@nestjs/axios": "4.0.1",
83
- "@nestjs/common": "11.1.8",
83
+ "@nestjs/common": "11.1.9",
84
84
  "@nestjs/config": "4.0.2",
85
- "@nestjs/core": "11.1.8",
85
+ "@nestjs/core": "11.1.9",
86
86
  "@nestjs/jwt": "11.0.1",
87
87
  "@nestjs/passport": "11.0.5",
88
- "@nestjs/platform-fastify": "11.1.8",
89
- "@nestjs/platform-socket.io": "11.1.8",
88
+ "@nestjs/platform-fastify": "11.1.9",
89
+ "@nestjs/platform-socket.io": "11.1.9",
90
90
  "@nestjs/schedule": "6.0.1",
91
- "@nestjs/websockets": "11.1.8",
91
+ "@nestjs/websockets": "11.1.9",
92
92
  "@socket.io/cluster-adapter": "0.3.0",
93
93
  "@socket.io/redis-adapter": "8.3.0",
94
94
  "@types/text-to-svg": "3.1.4",
95
95
  "archiver": "7.0.1",
96
- "bcryptjs": "3.0.2",
96
+ "bcryptjs": "3.0.3",
97
97
  "class-transformer": "0.5.1",
98
98
  "class-validator": "0.14.2",
99
99
  "deepmerge": "4.3.1",
100
- "drizzle-kit": "0.31.5",
100
+ "drizzle-kit": "0.31.7",
101
101
  "drizzle-orm": "0.44.7",
102
- "fast-xml-parser": "5.3.0",
102
+ "fast-xml-parser": "5.3.2",
103
103
  "fs-extra": "11.3.2",
104
104
  "html-to-text": "9.0.5",
105
- "js-yaml": "4.1.0",
105
+ "js-yaml": "4.1.1",
106
106
  "ldapts": "8.0.9",
107
107
  "mime-types": "3.0.1",
108
108
  "mysql2": "3.15.3",
@@ -114,14 +114,14 @@
114
114
  "passport": "0.7.0",
115
115
  "pino-pretty": "13.1.2",
116
116
  "qrcode-generator": "2.0.4",
117
- "redis": "5.9.0",
118
- "sax": "1.4.1",
119
- "sharp": "0.34.4",
117
+ "redis": "5.10.0",
118
+ "sax": "1.4.3",
119
+ "sharp": "0.34.5",
120
120
  "socket.io": "4.8.1",
121
- "tar": "7.5.1",
121
+ "tar": "7.5.2",
122
122
  "text-to-svg": "3.1.5",
123
123
  "time2fa": "1.4.2",
124
- "unpdf": "1.3.2",
124
+ "unpdf": "1.4.0",
125
125
  "yauzl": "3.2.0"
126
126
  }
127
127
  }
@@ -18,8 +18,17 @@ _export(exports, {
18
18
  },
19
19
  get CONTENT_SECURITY_POLICY () {
20
20
  return CONTENT_SECURITY_POLICY;
21
+ },
22
+ get USER_AGENT () {
23
+ return USER_AGENT;
24
+ },
25
+ get VERSION () {
26
+ return VERSION;
21
27
  }
22
28
  });
29
+ const _packagejson = require("../../package.json");
30
+ const VERSION = _packagejson.version;
31
+ const USER_AGENT = `sync-in-server/${_packagejson.version}`;
23
32
  const CONTENT_SECURITY_POLICY = (onlyOfficeServer)=>({
24
33
  useDefaults: false,
25
34
  directives: {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../backend/src/app.constants.ts"],"sourcesContent":["/*\n * Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com>\n * This file is part of Sync-in | The open source file sync and share solution\n * See the LICENSE file for licensing details\n */\n\nexport const CONTENT_SECURITY_POLICY = (onlyOfficeServer: string) => ({\n useDefaults: false,\n directives: {\n defaultSrc: [\"'self'\", onlyOfficeServer || ''],\n scriptSrc: [\"'self'\", \"'unsafe-inline'\", onlyOfficeServer || ''],\n styleSrc: [\"'self'\", \"'unsafe-inline'\"],\n imgSrc: [\"'self'\", 'data:'],\n fontSrc: [\"'self'\"]\n }\n})\n\nexport const CONNECT_ERROR_CODE = new Set(['ECONNREFUSED', 'ETIMEDOUT', 'ENOTFOUND'])\n"],"names":["CONNECT_ERROR_CODE","CONTENT_SECURITY_POLICY","onlyOfficeServer","useDefaults","directives","defaultSrc","scriptSrc","styleSrc","imgSrc","fontSrc","Set"],"mappings":"AAAA;;;;CAIC;;;;;;;;;;;QAaYA;eAAAA;;QAXAC;eAAAA;;;AAAN,MAAMA,0BAA0B,CAACC,mBAA8B,CAAA;QACpEC,aAAa;QACbC,YAAY;YACVC,YAAY;gBAAC;gBAAUH,oBAAoB;aAAG;YAC9CI,WAAW;gBAAC;gBAAU;gBAAmBJ,oBAAoB;aAAG;YAChEK,UAAU;gBAAC;gBAAU;aAAkB;YACvCC,QAAQ;gBAAC;gBAAU;aAAQ;YAC3BC,SAAS;gBAAC;aAAS;QACrB;IACF,CAAA;AAEO,MAAMT,qBAAqB,IAAIU,IAAI;IAAC;IAAgB;IAAa;CAAY"}
1
+ {"version":3,"sources":["../../backend/src/app.constants.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 */\nimport { version } from '../../package.json'\n\nexport const VERSION = version\nexport const USER_AGENT = `sync-in-server/${version}`\nexport const CONTENT_SECURITY_POLICY = (onlyOfficeServer: string) => ({\n useDefaults: false,\n directives: {\n defaultSrc: [\"'self'\", onlyOfficeServer || ''],\n scriptSrc: [\"'self'\", \"'unsafe-inline'\", onlyOfficeServer || ''],\n styleSrc: [\"'self'\", \"'unsafe-inline'\"],\n imgSrc: [\"'self'\", 'data:'],\n fontSrc: [\"'self'\"]\n }\n})\n\nexport const CONNECT_ERROR_CODE = new Set(['ECONNREFUSED', 'ETIMEDOUT', 'ENOTFOUND'])\n"],"names":["CONNECT_ERROR_CODE","CONTENT_SECURITY_POLICY","USER_AGENT","VERSION","version","onlyOfficeServer","useDefaults","directives","defaultSrc","scriptSrc","styleSrc","imgSrc","fontSrc","Set"],"mappings":"AAAA;;;;CAIC;;;;;;;;;;;QAgBYA;eAAAA;;QAXAC;eAAAA;;QADAC;eAAAA;;QADAC;eAAAA;;;6BAFW;AAEjB,MAAMA,UAAUC,oBAAO;AACvB,MAAMF,aAAa,CAAC,eAAe,EAAEE,oBAAO,EAAE;AAC9C,MAAMH,0BAA0B,CAACI,mBAA8B,CAAA;QACpEC,aAAa;QACbC,YAAY;YACVC,YAAY;gBAAC;gBAAUH,oBAAoB;aAAG;YAC9CI,WAAW;gBAAC;gBAAU;gBAAmBJ,oBAAoB;aAAG;YAChEK,UAAU;gBAAC;gBAAU;aAAkB;YACvCC,QAAQ;gBAAC;gBAAU;aAAQ;YAC3BC,SAAS;gBAAC;aAAS;QACrB;IACF,CAAA;AAEO,MAAMZ,qBAAqB,IAAIa,IAAI;IAAC;IAAgB;IAAa;CAAY"}
@@ -16,6 +16,7 @@ const _axios = require("@nestjs/axios");
16
16
  const _common = require("@nestjs/common");
17
17
  const _config = require("@nestjs/config");
18
18
  const _nestjspino = require("nestjs-pino");
19
+ const _appconstants = require("./app.constants");
19
20
  const _appservice = require("./app.service");
20
21
  const _applicationsmodule = require("./applications/applications.module");
21
22
  const _authmodule = require("./authentication/auth.module");
@@ -59,6 +60,9 @@ AppModule = _ts_decorate([
59
60
  _applicationsmodule.ApplicationsModule,
60
61
  _axios.HttpModule.register({
61
62
  global: true,
63
+ headers: {
64
+ 'User-Agent': _appconstants.USER_AGENT
65
+ },
62
66
  timeout: 5000,
63
67
  maxRedirects: 5
64
68
  })
@@ -1 +1 @@
1
- {"version":3,"sources":["../../backend/src/app.module.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 { HttpModule } from '@nestjs/axios'\nimport { Module } from '@nestjs/common'\nimport { ConfigModule } from '@nestjs/config'\nimport { LoggerModule } from 'nestjs-pino'\nimport { AppService } from './app.service'\nimport { ApplicationsModule } from './applications/applications.module'\nimport { AuthModule } from './authentication/auth.module'\nimport { configuration, exportConfiguration } from './configuration/config.environment'\nimport { configLogger } from './configuration/config.logger'\nimport { CacheModule } from './infrastructure/cache/cache.module'\nimport { ContextModule } from './infrastructure/context/context.module'\nimport { DatabaseModule } from './infrastructure/database/database.module'\nimport { MailerModule } from './infrastructure/mailer/mailer.module'\nimport { SchedulerModule } from './infrastructure/scheduler/scheduler.module'\n\n@Module({\n imports: [\n ConfigModule.forRoot({ load: [exportConfiguration], validatePredefined: false, ignoreEnvFile: true, isGlobal: true }),\n LoggerModule.forRootAsync({\n useFactory: async () => ({\n pinoHttp: configLogger(configuration.logger)\n })\n }),\n AuthModule,\n DatabaseModule,\n CacheModule,\n MailerModule,\n ContextModule,\n SchedulerModule.register(),\n ApplicationsModule,\n HttpModule.register({\n global: true,\n timeout: 5000,\n maxRedirects: 5\n })\n ],\n providers: [AppService]\n})\nexport class AppModule {}\n"],"names":["AppModule","imports","ConfigModule","forRoot","load","exportConfiguration","validatePredefined","ignoreEnvFile","isGlobal","LoggerModule","forRootAsync","useFactory","pinoHttp","configLogger","configuration","logger","AuthModule","DatabaseModule","CacheModule","MailerModule","ContextModule","SchedulerModule","register","ApplicationsModule","HttpModule","global","timeout","maxRedirects","providers","AppService"],"mappings":"AAAA;;;;CAIC;;;;+BAwCYA;;;eAAAA;;;uBAtCc;wBACJ;wBACM;4BACA;4BACF;oCACQ;4BACR;mCACwB;8BACtB;6BACD;+BACE;gCACC;8BACF;iCACG;;;;;;;AAyBzB,IAAA,AAAMA,YAAN,MAAMA;AAAW;;;QAtBtBC,SAAS;YACPC,oBAAY,CAACC,OAAO,CAAC;gBAAEC,MAAM;oBAACC,sCAAmB;iBAAC;gBAAEC,oBAAoB;gBAAOC,eAAe;gBAAMC,UAAU;YAAK;YACnHC,wBAAY,CAACC,YAAY,CAAC;gBACxBC,YAAY,UAAa,CAAA;wBACvBC,UAAUC,IAAAA,0BAAY,EAACC,gCAAa,CAACC,MAAM;oBAC7C,CAAA;YACF;YACAC,sBAAU;YACVC,8BAAc;YACdC,wBAAW;YACXC,0BAAY;YACZC,4BAAa;YACbC,gCAAe,CAACC,QAAQ;YACxBC,sCAAkB;YAClBC,iBAAU,CAACF,QAAQ,CAAC;gBAClBG,QAAQ;gBACRC,SAAS;gBACTC,cAAc;YAChB;SACD;QACDC,WAAW;YAACC,sBAAU;SAAC"}
1
+ {"version":3,"sources":["../../backend/src/app.module.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 { HttpModule } from '@nestjs/axios'\nimport { Module } from '@nestjs/common'\nimport { ConfigModule } from '@nestjs/config'\nimport { LoggerModule } from 'nestjs-pino'\nimport { USER_AGENT } from './app.constants'\nimport { AppService } from './app.service'\nimport { ApplicationsModule } from './applications/applications.module'\nimport { AuthModule } from './authentication/auth.module'\nimport { configuration, exportConfiguration } from './configuration/config.environment'\nimport { configLogger } from './configuration/config.logger'\nimport { CacheModule } from './infrastructure/cache/cache.module'\nimport { ContextModule } from './infrastructure/context/context.module'\nimport { DatabaseModule } from './infrastructure/database/database.module'\nimport { MailerModule } from './infrastructure/mailer/mailer.module'\nimport { SchedulerModule } from './infrastructure/scheduler/scheduler.module'\n\n@Module({\n imports: [\n ConfigModule.forRoot({ load: [exportConfiguration], validatePredefined: false, ignoreEnvFile: true, isGlobal: true }),\n LoggerModule.forRootAsync({\n useFactory: async () => ({\n pinoHttp: configLogger(configuration.logger)\n })\n }),\n AuthModule,\n DatabaseModule,\n CacheModule,\n MailerModule,\n ContextModule,\n SchedulerModule.register(),\n ApplicationsModule,\n HttpModule.register({\n global: true,\n headers: {\n 'User-Agent': USER_AGENT\n },\n timeout: 5000,\n maxRedirects: 5\n })\n ],\n providers: [AppService]\n})\nexport class AppModule {}\n"],"names":["AppModule","imports","ConfigModule","forRoot","load","exportConfiguration","validatePredefined","ignoreEnvFile","isGlobal","LoggerModule","forRootAsync","useFactory","pinoHttp","configLogger","configuration","logger","AuthModule","DatabaseModule","CacheModule","MailerModule","ContextModule","SchedulerModule","register","ApplicationsModule","HttpModule","global","headers","USER_AGENT","timeout","maxRedirects","providers","AppService"],"mappings":"AAAA;;;;CAIC;;;;+BA4CYA;;;eAAAA;;;uBA1Cc;wBACJ;wBACM;4BACA;8BACF;4BACA;oCACQ;4BACR;mCACwB;8BACtB;6BACD;+BACE;gCACC;8BACF;iCACG;;;;;;;AA4BzB,IAAA,AAAMA,YAAN,MAAMA;AAAW;;;QAzBtBC,SAAS;YACPC,oBAAY,CAACC,OAAO,CAAC;gBAAEC,MAAM;oBAACC,sCAAmB;iBAAC;gBAAEC,oBAAoB;gBAAOC,eAAe;gBAAMC,UAAU;YAAK;YACnHC,wBAAY,CAACC,YAAY,CAAC;gBACxBC,YAAY,UAAa,CAAA;wBACvBC,UAAUC,IAAAA,0BAAY,EAACC,gCAAa,CAACC,MAAM;oBAC7C,CAAA;YACF;YACAC,sBAAU;YACVC,8BAAc;YACdC,wBAAW;YACXC,0BAAY;YACZC,4BAAa;YACbC,gCAAe,CAACC,QAAQ;YACxBC,sCAAkB;YAClBC,iBAAU,CAACF,QAAQ,CAAC;gBAClBG,QAAQ;gBACRC,SAAS;oBACP,cAAcC,wBAAU;gBAC1B;gBACAC,SAAS;gBACTC,cAAc;YAChB;SACD;QACDC,WAAW;YAACC,sBAAU;SAAC"}
@@ -13,6 +13,8 @@ Object.defineProperty(exports, "AdminModule", {
13
13
  }
14
14
  });
15
15
  const _common = require("@nestjs/common");
16
+ const _adminschedulerservice = require("./services/admin-scheduler.service");
17
+ const _adminservice = require("./services/admin.service");
16
18
  function _ts_decorate(decorators, target, key, desc) {
17
19
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
18
20
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
@@ -24,7 +26,10 @@ let AdminModule = class AdminModule {
24
26
  AdminModule = _ts_decorate([
25
27
  (0, _common.Module)({
26
28
  controllers: [],
27
- providers: []
29
+ providers: [
30
+ _adminservice.AdminService,
31
+ _adminschedulerservice.AdminSchedulerService
32
+ ]
28
33
  })
29
34
  ], AdminModule);
30
35
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../backend/src/applications/admin/admin.module.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 { Module } from '@nestjs/common'\n\n@Module({\n controllers: [],\n providers: []\n})\nexport class AdminModule {}\n"],"names":["AdminModule","controllers","providers"],"mappings":"AAAA;;;;CAIC;;;;+BAQYA;;;eAAAA;;;wBANU;;;;;;;AAMhB,IAAA,AAAMA,cAAN,MAAMA;AAAa;;;QAHxBC,aAAa,EAAE;QACfC,WAAW,EAAE"}
1
+ {"version":3,"sources":["../../../../backend/src/applications/admin/admin.module.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 { Module } from '@nestjs/common'\nimport { AdminSchedulerService } from './services/admin-scheduler.service'\nimport { AdminService } from './services/admin.service'\n\n@Module({\n controllers: [],\n providers: [AdminService, AdminSchedulerService]\n})\nexport class AdminModule {}\n"],"names":["AdminModule","controllers","providers","AdminService","AdminSchedulerService"],"mappings":"AAAA;;;;CAIC;;;;+BAUYA;;;eAAAA;;;wBARU;uCACe;8BACT;;;;;;;AAMtB,IAAA,AAAMA,cAAN,MAAMA;AAAa;;;QAHxBC,aAAa,EAAE;QACfC,WAAW;YAACC,0BAAY;YAAEC,4CAAqB;SAAC"}
@@ -7,4 +7,4 @@ Object.defineProperty(exports, "__esModule", {
7
7
  value: true
8
8
  });
9
9
 
10
- //# sourceMappingURL=user-mail-notification.js.map
10
+ //# sourceMappingURL=check-update.interfaces.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../backend/src/applications/admin/interfaces/check-update.interfaces.ts"],"sourcesContent":["/*\n * Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com>\n * This file is part of Sync-in | The open source file sync and share solution\n * See the LICENSE file for licensing details\n */\n\nexport interface ServerReleaseVersionManifest {\n // tag_name: `v1.0.0`\n tag_name: string\n}\n\nexport interface ServerReleaseNotification {\n version: string\n}\n"],"names":[],"mappings":"AAAA;;;;CAIC"}
@@ -0,0 +1,53 @@
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";
6
+ Object.defineProperty(exports, "__esModule", {
7
+ value: true
8
+ });
9
+ Object.defineProperty(exports, "AdminSchedulerService", {
10
+ enumerable: true,
11
+ get: function() {
12
+ return AdminSchedulerService;
13
+ }
14
+ });
15
+ const _common = require("@nestjs/common");
16
+ const _schedule = require("@nestjs/schedule");
17
+ const _promises = require("node:timers/promises");
18
+ const _adminservice = require("./admin.service");
19
+ function _ts_decorate(decorators, target, key, desc) {
20
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
21
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
22
+ else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
23
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
24
+ }
25
+ function _ts_metadata(k, v) {
26
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
27
+ }
28
+ let AdminSchedulerService = class AdminSchedulerService {
29
+ async checkServerUpdateAndNotify() {
30
+ // Apply a random delay so instances don't trigger the check simultaneously
31
+ const randomDelay = Math.floor(Math.random() * 900 * 1000);
32
+ await (0, _promises.setTimeout)(randomDelay);
33
+ await this.adminService.checkServerUpdateAndNotify();
34
+ }
35
+ constructor(adminService){
36
+ this.adminService = adminService;
37
+ }
38
+ };
39
+ _ts_decorate([
40
+ (0, _schedule.Cron)(_schedule.CronExpression.EVERY_DAY_AT_9AM),
41
+ _ts_metadata("design:type", Function),
42
+ _ts_metadata("design:paramtypes", []),
43
+ _ts_metadata("design:returntype", Promise)
44
+ ], AdminSchedulerService.prototype, "checkServerUpdateAndNotify", null);
45
+ AdminSchedulerService = _ts_decorate([
46
+ (0, _common.Injectable)(),
47
+ _ts_metadata("design:type", Function),
48
+ _ts_metadata("design:paramtypes", [
49
+ typeof _adminservice.AdminService === "undefined" ? Object : _adminservice.AdminService
50
+ ])
51
+ ], AdminSchedulerService);
52
+
53
+ //# sourceMappingURL=admin-scheduler.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../backend/src/applications/admin/services/admin-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 } from '@nestjs/common'\nimport { Cron, CronExpression } from '@nestjs/schedule'\nimport { setTimeout } from 'node:timers/promises'\nimport { AdminService } from './admin.service'\n\n@Injectable()\nexport class AdminSchedulerService {\n constructor(private readonly adminService: AdminService) {}\n\n @Cron(CronExpression.EVERY_DAY_AT_9AM)\n async checkServerUpdateAndNotify() {\n // Apply a random delay so instances don't trigger the check simultaneously\n const randomDelay = Math.floor(Math.random() * 900 * 1000)\n await setTimeout(randomDelay)\n await this.adminService.checkServerUpdateAndNotify()\n }\n}\n"],"names":["AdminSchedulerService","checkServerUpdateAndNotify","randomDelay","Math","floor","random","setTimeout","adminService","EVERY_DAY_AT_9AM"],"mappings":"AAAA;;;;CAIC;;;;+BAQYA;;;eAAAA;;;wBANc;0BACU;0BACV;8BACE;;;;;;;;;;AAGtB,IAAA,AAAMA,wBAAN,MAAMA;IAGX,MACMC,6BAA6B;QACjC,2EAA2E;QAC3E,MAAMC,cAAcC,KAAKC,KAAK,CAACD,KAAKE,MAAM,KAAK,MAAM;QACrD,MAAMC,IAAAA,oBAAU,EAACJ;QACjB,MAAM,IAAI,CAACK,YAAY,CAACN,0BAA0B;IACpD;IARA,YAAY,AAAiBM,YAA0B,CAAE;aAA5BA,eAAAA;IAA6B;AAS5D;;iDAPuBC"}
@@ -0,0 +1,102 @@
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";
6
+ Object.defineProperty(exports, "__esModule", {
7
+ value: true
8
+ });
9
+ Object.defineProperty(exports, "AdminService", {
10
+ enumerable: true,
11
+ get: function() {
12
+ return AdminService;
13
+ }
14
+ });
15
+ const _axios = require("@nestjs/axios");
16
+ const _common = require("@nestjs/common");
17
+ const _appconstants = require("../../../app.constants");
18
+ const _shared = require("../../../common/shared");
19
+ const _cacheservice = require("../../../infrastructure/cache/services/cache.service");
20
+ const _applicationsconstants = require("../../applications.constants");
21
+ const _notifications = require("../../notifications/constants/notifications");
22
+ const _notificationsmanagerservice = require("../../notifications/services/notifications-manager.service");
23
+ const _adminusersqueriesservice = require("../../users/services/admin-users-queries.service");
24
+ const _checkupdate = require("../utils/check-update");
25
+ function _ts_decorate(decorators, target, key, desc) {
26
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
27
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
28
+ else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
29
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
30
+ }
31
+ function _ts_metadata(k, v) {
32
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
33
+ }
34
+ let AdminService = class AdminService {
35
+ async checkServerUpdateAndNotify() {
36
+ let lastVersion;
37
+ try {
38
+ const res = await this.http.axiosRef({
39
+ method: _applicationsconstants.HTTP_METHOD.GET,
40
+ url: _shared.APP_URL.SERVER_VERSION_MANIFEST
41
+ });
42
+ lastVersion = res.data?.tag_name || '';
43
+ } catch (e) {
44
+ this.logger.warn(`${this.checkServerUpdateAndNotify.name} - unable to check update: ${e}`);
45
+ return;
46
+ }
47
+ if (!lastVersion.startsWith('v')) {
48
+ this.logger.warn(`${this.checkServerUpdateAndNotify.name} - unable to check version: ${lastVersion}`);
49
+ return;
50
+ }
51
+ lastVersion = lastVersion.slice(1); // remove 'v' to compare with the current version
52
+ if (!(0, _checkupdate.isServerUpdateAvailable)(_appconstants.VERSION, lastVersion)) {
53
+ return;
54
+ }
55
+ // Get the last version that was notified to administrators
56
+ const notifiedVersion = await this.cache.get(this.checkServerUpdateAndNotify.name);
57
+ if (!notifiedVersion?.version) {
58
+ // The version was never stored, do it
59
+ await this.cache.set(this.checkServerUpdateAndNotify.name, {
60
+ version: _appconstants.VERSION
61
+ }, 0);
62
+ return;
63
+ }
64
+ if (notifiedVersion.version === lastVersion) {
65
+ // Notification was already sent to administrators
66
+ return;
67
+ }
68
+ const adminsToNotify = await this.adminUsersQueries.listAdminsToNotify();
69
+ if (!adminsToNotify.length) {
70
+ return;
71
+ }
72
+ const notification = {
73
+ app: _notifications.NOTIFICATION_APP.UPDATE_AVAILABLE,
74
+ event: _notifications.NOTIFICATION_APP_EVENT.UPDATE_AVAILABLE,
75
+ element: lastVersion,
76
+ externalUrl: _shared.APP_URL.RELEASES,
77
+ url: null
78
+ };
79
+ this.notificationsManager.create(adminsToNotify, notification).then(()=>this.cache.set(this.checkServerUpdateAndNotify.name, {
80
+ version: lastVersion
81
+ }, 0)).catch((e)=>this.logger.error(`${this.checkServerUpdateAndNotify.name} - ${e}`));
82
+ }
83
+ constructor(http, cache, notificationsManager, adminUsersQueries){
84
+ this.http = http;
85
+ this.cache = cache;
86
+ this.notificationsManager = notificationsManager;
87
+ this.adminUsersQueries = adminUsersQueries;
88
+ this.logger = new _common.Logger(AdminService.name);
89
+ }
90
+ };
91
+ AdminService = _ts_decorate([
92
+ (0, _common.Injectable)(),
93
+ _ts_metadata("design:type", Function),
94
+ _ts_metadata("design:paramtypes", [
95
+ typeof _axios.HttpService === "undefined" ? Object : _axios.HttpService,
96
+ typeof _cacheservice.Cache === "undefined" ? Object : _cacheservice.Cache,
97
+ typeof _notificationsmanagerservice.NotificationsManager === "undefined" ? Object : _notificationsmanagerservice.NotificationsManager,
98
+ typeof _adminusersqueriesservice.AdminUsersQueries === "undefined" ? Object : _adminusersqueriesservice.AdminUsersQueries
99
+ ])
100
+ ], AdminService);
101
+
102
+ //# sourceMappingURL=admin.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../backend/src/applications/admin/services/admin.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 { HttpService } from '@nestjs/axios'\nimport { Injectable, Logger } from '@nestjs/common'\nimport type { AxiosResponse } from 'axios'\nimport { VERSION } from '../../../app.constants'\nimport { APP_URL } from '../../../common/shared'\nimport { Cache } from '../../../infrastructure/cache/services/cache.service'\nimport { HTTP_METHOD } from '../../applications.constants'\nimport { NOTIFICATION_APP, NOTIFICATION_APP_EVENT } from '../../notifications/constants/notifications'\nimport { NotificationContent } from '../../notifications/interfaces/notification-properties.interface'\nimport type { UserMailNotification } from '../../notifications/interfaces/user-mail-notification.interface'\nimport { NotificationsManager } from '../../notifications/services/notifications-manager.service'\nimport { AdminUsersQueries } from '../../users/services/admin-users-queries.service'\nimport type { ServerReleaseNotification, ServerReleaseVersionManifest } from '../interfaces/check-update.interfaces'\nimport { isServerUpdateAvailable } from '../utils/check-update'\n\n@Injectable()\nexport class AdminService {\n private readonly logger = new Logger(AdminService.name)\n\n constructor(\n private readonly http: HttpService,\n private readonly cache: Cache,\n private readonly notificationsManager: NotificationsManager,\n private readonly adminUsersQueries: AdminUsersQueries\n ) {}\n\n async checkServerUpdateAndNotify() {\n let lastVersion: string\n try {\n const res: AxiosResponse<ServerReleaseVersionManifest> = await this.http.axiosRef({\n method: HTTP_METHOD.GET,\n url: APP_URL.SERVER_VERSION_MANIFEST\n })\n lastVersion = res.data?.tag_name || ''\n } catch (e) {\n this.logger.warn(`${this.checkServerUpdateAndNotify.name} - unable to check update: ${e}`)\n return\n }\n if (!lastVersion.startsWith('v')) {\n this.logger.warn(`${this.checkServerUpdateAndNotify.name} - unable to check version: ${lastVersion}`)\n return\n }\n lastVersion = lastVersion.slice(1) // remove 'v' to compare with the current version\n if (!isServerUpdateAvailable(VERSION, lastVersion)) {\n return\n }\n // Get the last version that was notified to administrators\n const notifiedVersion: ServerReleaseNotification = await this.cache.get(this.checkServerUpdateAndNotify.name)\n if (!notifiedVersion?.version) {\n // The version was never stored, do it\n await this.cache.set(this.checkServerUpdateAndNotify.name, { version: VERSION } satisfies ServerReleaseNotification, 0)\n return\n }\n if (notifiedVersion.version === lastVersion) {\n // Notification was already sent to administrators\n return\n }\n const adminsToNotify: UserMailNotification[] = await this.adminUsersQueries.listAdminsToNotify()\n if (!adminsToNotify.length) {\n return\n }\n const notification: NotificationContent = {\n app: NOTIFICATION_APP.UPDATE_AVAILABLE,\n event: NOTIFICATION_APP_EVENT.UPDATE_AVAILABLE,\n element: lastVersion,\n externalUrl: APP_URL.RELEASES,\n url: null\n }\n this.notificationsManager\n .create(adminsToNotify, notification)\n .then(() => this.cache.set(this.checkServerUpdateAndNotify.name, { version: lastVersion } satisfies ServerReleaseNotification, 0))\n .catch((e: Error) => this.logger.error(`${this.checkServerUpdateAndNotify.name} - ${e}`))\n }\n}\n"],"names":["AdminService","checkServerUpdateAndNotify","lastVersion","res","http","axiosRef","method","HTTP_METHOD","GET","url","APP_URL","SERVER_VERSION_MANIFEST","data","tag_name","e","logger","warn","name","startsWith","slice","isServerUpdateAvailable","VERSION","notifiedVersion","cache","get","version","set","adminsToNotify","adminUsersQueries","listAdminsToNotify","length","notification","app","NOTIFICATION_APP","UPDATE_AVAILABLE","event","NOTIFICATION_APP_EVENT","element","externalUrl","RELEASES","notificationsManager","create","then","catch","error","Logger"],"mappings":"AAAA;;;;CAIC;;;;+BAkBYA;;;eAAAA;;;uBAhBe;wBACO;8BAEX;wBACA;8BACF;uCACM;+BAC6B;6CAGpB;0CACH;6BAEM;;;;;;;;;;AAGjC,IAAA,AAAMA,eAAN,MAAMA;IAUX,MAAMC,6BAA6B;QACjC,IAAIC;QACJ,IAAI;YACF,MAAMC,MAAmD,MAAM,IAAI,CAACC,IAAI,CAACC,QAAQ,CAAC;gBAChFC,QAAQC,kCAAW,CAACC,GAAG;gBACvBC,KAAKC,eAAO,CAACC,uBAAuB;YACtC;YACAT,cAAcC,IAAIS,IAAI,EAAEC,YAAY;QACtC,EAAE,OAAOC,GAAG;YACV,IAAI,CAACC,MAAM,CAACC,IAAI,CAAC,GAAG,IAAI,CAACf,0BAA0B,CAACgB,IAAI,CAAC,2BAA2B,EAAEH,GAAG;YACzF;QACF;QACA,IAAI,CAACZ,YAAYgB,UAAU,CAAC,MAAM;YAChC,IAAI,CAACH,MAAM,CAACC,IAAI,CAAC,GAAG,IAAI,CAACf,0BAA0B,CAACgB,IAAI,CAAC,4BAA4B,EAAEf,aAAa;YACpG;QACF;QACAA,cAAcA,YAAYiB,KAAK,CAAC,IAAG,iDAAiD;QACpF,IAAI,CAACC,IAAAA,oCAAuB,EAACC,qBAAO,EAAEnB,cAAc;YAClD;QACF;QACA,2DAA2D;QAC3D,MAAMoB,kBAA6C,MAAM,IAAI,CAACC,KAAK,CAACC,GAAG,CAAC,IAAI,CAACvB,0BAA0B,CAACgB,IAAI;QAC5G,IAAI,CAACK,iBAAiBG,SAAS;YAC7B,sCAAsC;YACtC,MAAM,IAAI,CAACF,KAAK,CAACG,GAAG,CAAC,IAAI,CAACzB,0BAA0B,CAACgB,IAAI,EAAE;gBAAEQ,SAASJ,qBAAO;YAAC,GAAuC;YACrH;QACF;QACA,IAAIC,gBAAgBG,OAAO,KAAKvB,aAAa;YAC3C,kDAAkD;YAClD;QACF;QACA,MAAMyB,iBAAyC,MAAM,IAAI,CAACC,iBAAiB,CAACC,kBAAkB;QAC9F,IAAI,CAACF,eAAeG,MAAM,EAAE;YAC1B;QACF;QACA,MAAMC,eAAoC;YACxCC,KAAKC,+BAAgB,CAACC,gBAAgB;YACtCC,OAAOC,qCAAsB,CAACF,gBAAgB;YAC9CG,SAASnC;YACToC,aAAa5B,eAAO,CAAC6B,QAAQ;YAC7B9B,KAAK;QACP;QACA,IAAI,CAAC+B,oBAAoB,CACtBC,MAAM,CAACd,gBAAgBI,cACvBW,IAAI,CAAC,IAAM,IAAI,CAACnB,KAAK,CAACG,GAAG,CAAC,IAAI,CAACzB,0BAA0B,CAACgB,IAAI,EAAE;gBAAEQ,SAASvB;YAAY,GAAuC,IAC9HyC,KAAK,CAAC,CAAC7B,IAAa,IAAI,CAACC,MAAM,CAAC6B,KAAK,CAAC,GAAG,IAAI,CAAC3C,0BAA0B,CAACgB,IAAI,CAAC,GAAG,EAAEH,GAAG;IAC3F;IArDA,YACE,AAAiBV,IAAiB,EAClC,AAAiBmB,KAAY,EAC7B,AAAiBiB,oBAA0C,EAC3D,AAAiBZ,iBAAoC,CACrD;aAJiBxB,OAAAA;aACAmB,QAAAA;aACAiB,uBAAAA;aACAZ,oBAAAA;aANFb,SAAS,IAAI8B,cAAM,CAAC7C,aAAaiB,IAAI;IAOnD;AAiDL"}
@@ -0,0 +1,46 @@
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";
6
+ Object.defineProperty(exports, "__esModule", {
7
+ value: true
8
+ });
9
+ const _axios = require("@nestjs/axios");
10
+ const _testing = require("@nestjs/testing");
11
+ const _cacheservice = require("../../../infrastructure/cache/services/cache.service");
12
+ const _notificationsmanagerservice = require("../../notifications/services/notifications-manager.service");
13
+ const _adminusersqueriesservice = require("../../users/services/admin-users-queries.service");
14
+ const _adminservice = require("./admin.service");
15
+ describe(_adminservice.AdminService.name, ()=>{
16
+ let service;
17
+ beforeAll(async ()=>{
18
+ const module = await _testing.Test.createTestingModule({
19
+ providers: [
20
+ _adminservice.AdminService,
21
+ {
22
+ provide: _axios.HttpService,
23
+ useValue: {}
24
+ },
25
+ {
26
+ provide: _cacheservice.Cache,
27
+ useValue: {}
28
+ },
29
+ {
30
+ provide: _adminusersqueriesservice.AdminUsersQueries,
31
+ useValue: {}
32
+ },
33
+ {
34
+ provide: _notificationsmanagerservice.NotificationsManager,
35
+ useValue: {}
36
+ }
37
+ ]
38
+ }).compile();
39
+ service = module.get(_adminservice.AdminService);
40
+ });
41
+ it('should be defined', ()=>{
42
+ expect(service).toBeDefined();
43
+ });
44
+ });
45
+
46
+ //# sourceMappingURL=admin.service.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../backend/src/applications/admin/services/admin.service.spec.ts"],"sourcesContent":["/*\n * Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com>\n * This file is part of Sync-in | The open source file sync and share solution\n * See the LICENSE file for licensing details\n */\n\nimport { HttpService } from '@nestjs/axios'\nimport { Test, TestingModule } from '@nestjs/testing'\nimport { Cache } from '../../../infrastructure/cache/services/cache.service'\nimport { NotificationsManager } from '../../notifications/services/notifications-manager.service'\nimport { AdminUsersQueries } from '../../users/services/admin-users-queries.service'\nimport { AdminService } from './admin.service'\n\ndescribe(AdminService.name, () => {\n let service: AdminService\n\n beforeAll(async () => {\n const module: TestingModule = await Test.createTestingModule({\n providers: [\n AdminService,\n { provide: HttpService, useValue: {} },\n { provide: Cache, useValue: {} },\n { provide: AdminUsersQueries, useValue: {} },\n { provide: NotificationsManager, useValue: {} }\n ]\n }).compile()\n\n service = module.get<AdminService>(AdminService)\n })\n\n it('should be defined', () => {\n expect(service).toBeDefined()\n })\n})\n"],"names":["describe","AdminService","name","service","beforeAll","module","Test","createTestingModule","providers","provide","HttpService","useValue","Cache","AdminUsersQueries","NotificationsManager","compile","get","it","expect","toBeDefined"],"mappings":"AAAA;;;;CAIC;;;;uBAE2B;yBACQ;8BACd;6CACe;0CACH;8BACL;AAE7BA,SAASC,0BAAY,CAACC,IAAI,EAAE;IAC1B,IAAIC;IAEJC,UAAU;QACR,MAAMC,SAAwB,MAAMC,aAAI,CAACC,mBAAmB,CAAC;YAC3DC,WAAW;gBACTP,0BAAY;gBACZ;oBAAEQ,SAASC,kBAAW;oBAAEC,UAAU,CAAC;gBAAE;gBACrC;oBAAEF,SAASG,mBAAK;oBAAED,UAAU,CAAC;gBAAE;gBAC/B;oBAAEF,SAASI,2CAAiB;oBAAEF,UAAU,CAAC;gBAAE;gBAC3C;oBAAEF,SAASK,iDAAoB;oBAAEH,UAAU,CAAC;gBAAE;aAC/C;QACH,GAAGI,OAAO;QAEVZ,UAAUE,OAAOW,GAAG,CAAef,0BAAY;IACjD;IAEAgB,GAAG,qBAAqB;QACtBC,OAAOf,SAASgB,WAAW;IAC7B;AACF"}