@sync-in/server 1.11.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1040) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/LICENSE +1 -1
  3. package/README.md +3 -11
  4. package/environment/environment.dist.min.yaml +1 -1
  5. package/environment/environment.dist.yaml +173 -28
  6. package/package.json +17 -16
  7. package/server/app.bootstrap.js +1 -5
  8. package/server/app.bootstrap.js.map +1 -1
  9. package/server/app.constants.js +1 -5
  10. package/server/app.constants.js.map +1 -1
  11. package/server/app.e2e-spec.js +1 -5
  12. package/server/app.e2e-spec.js.map +1 -1
  13. package/server/app.functions.js +1 -5
  14. package/server/app.functions.js.map +1 -1
  15. package/server/app.module.js +1 -5
  16. package/server/app.module.js.map +1 -1
  17. package/server/app.service.js +1 -5
  18. package/server/app.service.js.map +1 -1
  19. package/server/app.service.spec.js +2 -6
  20. package/server/app.service.spec.js.map +1 -1
  21. package/server/applications/admin/admin.module.js +1 -5
  22. package/server/applications/admin/admin.module.js.map +1 -1
  23. package/server/applications/admin/constants/routes.js +1 -5
  24. package/server/applications/admin/constants/routes.js.map +1 -1
  25. package/server/applications/admin/interfaces/check-update.interfaces.js +1 -5
  26. package/server/applications/admin/interfaces/check-update.interfaces.js.map +1 -1
  27. package/server/applications/admin/services/admin-scheduler.service.js +1 -5
  28. package/server/applications/admin/services/admin-scheduler.service.js.map +1 -1
  29. package/server/applications/admin/services/admin.service.js +13 -8
  30. package/server/applications/admin/services/admin.service.js.map +1 -1
  31. package/server/applications/admin/services/admin.service.spec.js +1 -5
  32. package/server/applications/admin/services/admin.service.spec.js.map +1 -1
  33. package/server/applications/admin/utils/check-update.js +1 -5
  34. package/server/applications/admin/utils/check-update.js.map +1 -1
  35. package/server/applications/applications.config.js +1 -5
  36. package/server/applications/applications.config.js.map +1 -1
  37. package/server/applications/applications.constants.js +5 -5
  38. package/server/applications/applications.constants.js.map +1 -1
  39. package/server/applications/applications.module.js +1 -5
  40. package/server/applications/applications.module.js.map +1 -1
  41. package/server/applications/comments/comments.controller.js +1 -5
  42. package/server/applications/comments/comments.controller.js.map +1 -1
  43. package/server/applications/comments/comments.controller.spec.js +1 -5
  44. package/server/applications/comments/comments.controller.spec.js.map +1 -1
  45. package/server/applications/comments/comments.module.js +1 -5
  46. package/server/applications/comments/comments.module.js.map +1 -1
  47. package/server/applications/comments/constants/routes.js +1 -5
  48. package/server/applications/comments/constants/routes.js.map +1 -1
  49. package/server/applications/comments/dto/comment.dto.js +1 -5
  50. package/server/applications/comments/dto/comment.dto.js.map +1 -1
  51. package/server/applications/comments/interfaces/comment-recent.interface.js +1 -5
  52. package/server/applications/comments/interfaces/comment-recent.interface.js.map +1 -1
  53. package/server/applications/comments/schemas/comment.interface.js +1 -5
  54. package/server/applications/comments/schemas/comment.interface.js.map +1 -1
  55. package/server/applications/comments/schemas/comments.schema.js +1 -5
  56. package/server/applications/comments/schemas/comments.schema.js.map +1 -1
  57. package/server/applications/comments/services/comments-manager.service.js +9 -7
  58. package/server/applications/comments/services/comments-manager.service.js.map +1 -1
  59. package/server/applications/comments/services/comments-manager.service.spec.js +10 -8
  60. package/server/applications/comments/services/comments-manager.service.spec.js.map +1 -1
  61. package/server/applications/comments/services/comments-queries.service.js +1 -5
  62. package/server/applications/comments/services/comments-queries.service.js.map +1 -1
  63. package/server/applications/files/adapters/files-indexer-mysql.service.js +29 -12
  64. package/server/applications/files/adapters/files-indexer-mysql.service.js.map +1 -1
  65. package/server/applications/files/adapters/files-indexer-mysql.service.spec.js +1 -5
  66. package/server/applications/files/adapters/files-indexer-mysql.service.spec.js.map +1 -1
  67. package/server/applications/files/constants/cache.js +1 -5
  68. package/server/applications/files/constants/cache.js.map +1 -1
  69. package/server/applications/files/constants/compress.js +1 -5
  70. package/server/applications/files/constants/compress.js.map +1 -1
  71. package/server/applications/files/constants/files.js +1 -5
  72. package/server/applications/files/constants/files.js.map +1 -1
  73. package/server/applications/files/constants/indexing.js +1 -5
  74. package/server/applications/files/constants/indexing.js.map +1 -1
  75. package/server/applications/files/constants/operations.js +1 -5
  76. package/server/applications/files/constants/operations.js.map +1 -1
  77. package/server/applications/files/constants/routes.js +1 -5
  78. package/server/applications/files/constants/routes.js.map +1 -1
  79. package/server/applications/files/constants/samples.js +1 -5
  80. package/server/applications/files/constants/samples.js.map +1 -1
  81. package/server/applications/files/dto/file-operations.dto.js +1 -5
  82. package/server/applications/files/dto/file-operations.dto.js.map +1 -1
  83. package/server/applications/files/events/file-task-event.js +1 -5
  84. package/server/applications/files/events/file-task-event.js.map +1 -1
  85. package/server/applications/files/files-tasks.controller.js +1 -5
  86. package/server/applications/files/files-tasks.controller.js.map +1 -1
  87. package/server/applications/files/files-tasks.controller.spec.js +1 -5
  88. package/server/applications/files/files-tasks.controller.spec.js.map +1 -1
  89. package/server/applications/files/files.config.js +1 -5
  90. package/server/applications/files/files.config.js.map +1 -1
  91. package/server/applications/files/files.controller.js +1 -5
  92. package/server/applications/files/files.controller.js.map +1 -1
  93. package/server/applications/files/files.controller.spec.js +1 -5
  94. package/server/applications/files/files.controller.spec.js.map +1 -1
  95. package/server/applications/files/files.module.js +1 -5
  96. package/server/applications/files/files.module.js.map +1 -1
  97. package/server/applications/files/interfaces/file-db-props.interface.js +1 -5
  98. package/server/applications/files/interfaces/file-db-props.interface.js.map +1 -1
  99. package/server/applications/files/interfaces/file-lock.interface.js +1 -5
  100. package/server/applications/files/interfaces/file-lock.interface.js.map +1 -1
  101. package/server/applications/files/interfaces/file-parse-index.js +1 -5
  102. package/server/applications/files/interfaces/file-parse-index.js.map +1 -1
  103. package/server/applications/files/interfaces/file-props.interface.js +1 -5
  104. package/server/applications/files/interfaces/file-props.interface.js.map +1 -1
  105. package/server/applications/files/interfaces/file-recent-location.interface.js +1 -5
  106. package/server/applications/files/interfaces/file-recent-location.interface.js.map +1 -1
  107. package/server/applications/files/interfaces/file-space.interface.js +1 -5
  108. package/server/applications/files/interfaces/file-space.interface.js.map +1 -1
  109. package/server/applications/files/interfaces/file-tree.interface.js +1 -5
  110. package/server/applications/files/interfaces/file-tree.interface.js.map +1 -1
  111. package/server/applications/files/models/file-error.js +1 -5
  112. package/server/applications/files/models/file-error.js.map +1 -1
  113. package/server/applications/files/models/file-lock-error.js +1 -5
  114. package/server/applications/files/models/file-lock-error.js.map +1 -1
  115. package/server/applications/files/models/file-task.js +1 -5
  116. package/server/applications/files/models/file-task.js.map +1 -1
  117. package/server/applications/files/models/files-indexer.js +1 -5
  118. package/server/applications/files/models/files-indexer.js.map +1 -1
  119. package/server/applications/files/modules/collabora-online/collabora-online-environment.decorator.js +1 -5
  120. package/server/applications/files/modules/collabora-online/collabora-online-environment.decorator.js.map +1 -1
  121. package/server/applications/files/modules/collabora-online/collabora-online-manager.service.js +21 -10
  122. package/server/applications/files/modules/collabora-online/collabora-online-manager.service.js.map +1 -1
  123. package/server/applications/files/modules/collabora-online/collabora-online-manager.service.spec.js +1 -5
  124. package/server/applications/files/modules/collabora-online/collabora-online-manager.service.spec.js.map +1 -1
  125. package/server/applications/files/modules/collabora-online/collabora-online.config.js +1 -5
  126. package/server/applications/files/modules/collabora-online/collabora-online.config.js.map +1 -1
  127. package/server/applications/files/modules/collabora-online/collabora-online.constants.js +1 -5
  128. package/server/applications/files/modules/collabora-online/collabora-online.constants.js.map +1 -1
  129. package/server/applications/files/modules/collabora-online/collabora-online.controller.js +1 -5
  130. package/server/applications/files/modules/collabora-online/collabora-online.controller.js.map +1 -1
  131. package/server/applications/files/modules/collabora-online/collabora-online.controller.spec.js +1 -5
  132. package/server/applications/files/modules/collabora-online/collabora-online.controller.spec.js.map +1 -1
  133. package/server/applications/files/modules/collabora-online/collabora-online.dtos.js +1 -5
  134. package/server/applications/files/modules/collabora-online/collabora-online.dtos.js.map +1 -1
  135. package/server/applications/files/modules/collabora-online/collabora-online.guard.js +1 -5
  136. package/server/applications/files/modules/collabora-online/collabora-online.guard.js.map +1 -1
  137. package/server/applications/files/modules/collabora-online/collabora-online.guard.spec.js +1 -5
  138. package/server/applications/files/modules/collabora-online/collabora-online.guard.spec.js.map +1 -1
  139. package/server/applications/files/modules/collabora-online/collabora-online.interface.js +1 -5
  140. package/server/applications/files/modules/collabora-online/collabora-online.interface.js.map +1 -1
  141. package/server/applications/files/modules/collabora-online/collabora-online.module.js +1 -5
  142. package/server/applications/files/modules/collabora-online/collabora-online.module.js.map +1 -1
  143. package/server/applications/files/modules/collabora-online/collabora-online.routes.js +1 -5
  144. package/server/applications/files/modules/collabora-online/collabora-online.routes.js.map +1 -1
  145. package/server/applications/files/modules/collabora-online/collabora-online.strategy.js +1 -5
  146. package/server/applications/files/modules/collabora-online/collabora-online.strategy.js.map +1 -1
  147. package/server/applications/files/modules/collabora-online/collabora-online.utils.js +1 -5
  148. package/server/applications/files/modules/collabora-online/collabora-online.utils.js.map +1 -1
  149. package/server/applications/files/modules/file-editor-providers.interface.js +6 -0
  150. package/server/applications/files/modules/file-editor-providers.interface.js.map +1 -0
  151. package/server/applications/files/modules/only-office/only-office-environment.decorator.js +1 -5
  152. package/server/applications/files/modules/only-office/only-office-environment.decorator.js.map +1 -1
  153. package/server/applications/files/modules/only-office/only-office-manager.service.js +57 -19
  154. package/server/applications/files/modules/only-office/only-office-manager.service.js.map +1 -1
  155. package/server/applications/files/modules/only-office/only-office-manager.service.spec.js +1 -5
  156. package/server/applications/files/modules/only-office/only-office-manager.service.spec.js.map +1 -1
  157. package/server/applications/files/modules/only-office/only-office.config.js +1 -5
  158. package/server/applications/files/modules/only-office/only-office.config.js.map +1 -1
  159. package/server/applications/files/modules/only-office/only-office.constants.js +1 -5
  160. package/server/applications/files/modules/only-office/only-office.constants.js.map +1 -1
  161. package/server/applications/files/modules/only-office/only-office.controller.js +1 -5
  162. package/server/applications/files/modules/only-office/only-office.controller.js.map +1 -1
  163. package/server/applications/files/modules/only-office/only-office.controller.spec.js +1 -5
  164. package/server/applications/files/modules/only-office/only-office.controller.spec.js.map +1 -1
  165. package/server/applications/files/modules/only-office/only-office.dtos.js +1 -5
  166. package/server/applications/files/modules/only-office/only-office.dtos.js.map +1 -1
  167. package/server/applications/files/modules/only-office/only-office.guard.js +1 -5
  168. package/server/applications/files/modules/only-office/only-office.guard.js.map +1 -1
  169. package/server/applications/files/modules/only-office/only-office.guard.spec.js +1 -5
  170. package/server/applications/files/modules/only-office/only-office.guard.spec.js.map +1 -1
  171. package/server/applications/files/modules/only-office/only-office.interface.js +1 -5
  172. package/server/applications/files/modules/only-office/only-office.interface.js.map +1 -1
  173. package/server/applications/files/modules/only-office/only-office.module.js +1 -5
  174. package/server/applications/files/modules/only-office/only-office.module.js.map +1 -1
  175. package/server/applications/files/modules/only-office/only-office.routes.js +1 -5
  176. package/server/applications/files/modules/only-office/only-office.routes.js.map +1 -1
  177. package/server/applications/files/modules/only-office/only-office.strategy.js +1 -5
  178. package/server/applications/files/modules/only-office/only-office.strategy.js.map +1 -1
  179. package/server/applications/files/schemas/file-content.interface.js +1 -5
  180. package/server/applications/files/schemas/file-content.interface.js.map +1 -1
  181. package/server/applications/files/schemas/file-recent.interface.js +1 -5
  182. package/server/applications/files/schemas/file-recent.interface.js.map +1 -1
  183. package/server/applications/files/schemas/file.interface.js +1 -5
  184. package/server/applications/files/schemas/file.interface.js.map +1 -1
  185. package/server/applications/files/schemas/files-content.schema.js +1 -5
  186. package/server/applications/files/schemas/files-content.schema.js.map +1 -1
  187. package/server/applications/files/schemas/files-recents.schema.js +1 -5
  188. package/server/applications/files/schemas/files-recents.schema.js.map +1 -1
  189. package/server/applications/files/schemas/files.schema.js +1 -5
  190. package/server/applications/files/schemas/files.schema.js.map +1 -1
  191. package/server/applications/files/services/files-content-manager.service.js +45 -16
  192. package/server/applications/files/services/files-content-manager.service.js.map +1 -1
  193. package/server/applications/files/services/files-lock-manager.service.js +53 -18
  194. package/server/applications/files/services/files-lock-manager.service.js.map +1 -1
  195. package/server/applications/files/services/files-lock-manager.service.spec.js +1 -5
  196. package/server/applications/files/services/files-lock-manager.service.spec.js.map +1 -1
  197. package/server/applications/files/services/files-manager.service.js +77 -24
  198. package/server/applications/files/services/files-manager.service.js.map +1 -1
  199. package/server/applications/files/services/files-manager.service.spec.js +1 -5
  200. package/server/applications/files/services/files-manager.service.spec.js.map +1 -1
  201. package/server/applications/files/services/files-methods.service.js +5 -6
  202. package/server/applications/files/services/files-methods.service.js.map +1 -1
  203. package/server/applications/files/services/files-methods.service.spec.js +1 -5
  204. package/server/applications/files/services/files-methods.service.spec.js.map +1 -1
  205. package/server/applications/files/services/files-parser.service.js +13 -8
  206. package/server/applications/files/services/files-parser.service.js.map +1 -1
  207. package/server/applications/files/services/files-parser.service.spec.js +1 -5
  208. package/server/applications/files/services/files-parser.service.spec.js.map +1 -1
  209. package/server/applications/files/services/files-queries.service.js +29 -12
  210. package/server/applications/files/services/files-queries.service.js.map +1 -1
  211. package/server/applications/files/services/files-recents.service.js +1 -5
  212. package/server/applications/files/services/files-recents.service.js.map +1 -1
  213. package/server/applications/files/services/files-recents.service.spec.js +1 -5
  214. package/server/applications/files/services/files-recents.service.spec.js.map +1 -1
  215. package/server/applications/files/services/files-scheduler.service.js +77 -24
  216. package/server/applications/files/services/files-scheduler.service.js.map +1 -1
  217. package/server/applications/files/services/files-search-manager.service.js +9 -7
  218. package/server/applications/files/services/files-search-manager.service.js.map +1 -1
  219. package/server/applications/files/services/files-search-manager.service.spec.js +1 -5
  220. package/server/applications/files/services/files-search-manager.service.spec.js.map +1 -1
  221. package/server/applications/files/services/files-tasks-manager.service.js +77 -24
  222. package/server/applications/files/services/files-tasks-manager.service.js.map +1 -1
  223. package/server/applications/files/services/files-tasks-manager.service.spec.js +1 -5
  224. package/server/applications/files/services/files-tasks-manager.service.spec.js.map +1 -1
  225. package/server/applications/files/utils/doc-textify/adapters/excel.js +1 -5
  226. package/server/applications/files/utils/doc-textify/adapters/excel.js.map +1 -1
  227. package/server/applications/files/utils/doc-textify/adapters/html.js +1 -5
  228. package/server/applications/files/utils/doc-textify/adapters/html.js.map +1 -1
  229. package/server/applications/files/utils/doc-textify/adapters/open-office.js +1 -5
  230. package/server/applications/files/utils/doc-textify/adapters/open-office.js.map +1 -1
  231. package/server/applications/files/utils/doc-textify/adapters/pdf.js +1 -5
  232. package/server/applications/files/utils/doc-textify/adapters/pdf.js.map +1 -1
  233. package/server/applications/files/utils/doc-textify/adapters/power-point.js +1 -5
  234. package/server/applications/files/utils/doc-textify/adapters/power-point.js.map +1 -1
  235. package/server/applications/files/utils/doc-textify/adapters/text.js +1 -5
  236. package/server/applications/files/utils/doc-textify/adapters/text.js.map +1 -1
  237. package/server/applications/files/utils/doc-textify/adapters/word.js +1 -5
  238. package/server/applications/files/utils/doc-textify/adapters/word.js.map +1 -1
  239. package/server/applications/files/utils/doc-textify/doc-textify.js +1 -5
  240. package/server/applications/files/utils/doc-textify/doc-textify.js.map +1 -1
  241. package/server/applications/files/utils/doc-textify/interfaces/doc-textify.interfaces.js +1 -5
  242. package/server/applications/files/utils/doc-textify/interfaces/doc-textify.interfaces.js.map +1 -1
  243. package/server/applications/files/utils/doc-textify/utils/clean.js +1 -5
  244. package/server/applications/files/utils/doc-textify/utils/clean.js.map +1 -1
  245. package/server/applications/files/utils/files-search.js +1 -5
  246. package/server/applications/files/utils/files-search.js.map +1 -1
  247. package/server/applications/files/utils/files-tree.js +1 -5
  248. package/server/applications/files/utils/files-tree.js.map +1 -1
  249. package/server/applications/files/utils/files.js +1 -5
  250. package/server/applications/files/utils/files.js.map +1 -1
  251. package/server/applications/files/utils/send-file.js +1 -5
  252. package/server/applications/files/utils/send-file.js.map +1 -1
  253. package/server/applications/files/utils/unzip-file.js +1 -5
  254. package/server/applications/files/utils/unzip-file.js.map +1 -1
  255. package/server/applications/files/utils/url-file.js +1 -5
  256. package/server/applications/files/utils/url-file.js.map +1 -1
  257. package/server/applications/links/constants/cache.js +1 -5
  258. package/server/applications/links/constants/cache.js.map +1 -1
  259. package/server/applications/links/constants/links.js +1 -5
  260. package/server/applications/links/constants/links.js.map +1 -1
  261. package/server/applications/links/constants/routes.js +1 -5
  262. package/server/applications/links/constants/routes.js.map +1 -1
  263. package/server/applications/links/dto/create-or-update-link.dto.js +1 -5
  264. package/server/applications/links/dto/create-or-update-link.dto.js.map +1 -1
  265. package/server/applications/links/interfaces/link-guest.interface.js +1 -5
  266. package/server/applications/links/interfaces/link-guest.interface.js.map +1 -1
  267. package/server/applications/links/interfaces/link-space.interface.js +1 -5
  268. package/server/applications/links/interfaces/link-space.interface.js.map +1 -1
  269. package/server/applications/links/links.controller.js +1 -5
  270. package/server/applications/links/links.controller.js.map +1 -1
  271. package/server/applications/links/links.controller.spec.js +1 -5
  272. package/server/applications/links/links.controller.spec.js.map +1 -1
  273. package/server/applications/links/schemas/link.interface.js +1 -5
  274. package/server/applications/links/schemas/link.interface.js.map +1 -1
  275. package/server/applications/links/schemas/links.schema.js +1 -5
  276. package/server/applications/links/schemas/links.schema.js.map +1 -1
  277. package/server/applications/links/services/links-manager.service.js +55 -20
  278. package/server/applications/links/services/links-manager.service.js.map +1 -1
  279. package/server/applications/links/services/links-manager.service.spec.js +3 -7
  280. package/server/applications/links/services/links-manager.service.spec.js.map +1 -1
  281. package/server/applications/links/services/links-queries.service.js +1 -5
  282. package/server/applications/links/services/links-queries.service.js.map +1 -1
  283. package/server/applications/notifications/constants/notifications.js +1 -5
  284. package/server/applications/notifications/constants/notifications.js.map +1 -1
  285. package/server/applications/notifications/constants/routes.js +1 -5
  286. package/server/applications/notifications/constants/routes.js.map +1 -1
  287. package/server/applications/notifications/constants/websocket.js +1 -5
  288. package/server/applications/notifications/constants/websocket.js.map +1 -1
  289. package/server/applications/notifications/i18n/de.js +1 -9
  290. package/server/applications/notifications/i18n/de.js.map +1 -1
  291. package/server/applications/notifications/i18n/es.js +1 -5
  292. package/server/applications/notifications/i18n/es.js.map +1 -1
  293. package/server/applications/notifications/i18n/fr.js +1 -5
  294. package/server/applications/notifications/i18n/fr.js.map +1 -1
  295. package/server/applications/notifications/i18n/hi.js +1 -5
  296. package/server/applications/notifications/i18n/hi.js.map +1 -1
  297. package/server/applications/notifications/i18n/index.js +1 -5
  298. package/server/applications/notifications/i18n/index.js.map +1 -1
  299. package/server/applications/notifications/i18n/it.js +1 -5
  300. package/server/applications/notifications/i18n/it.js.map +1 -1
  301. package/server/applications/notifications/i18n/ja.js +1 -5
  302. package/server/applications/notifications/i18n/ja.js.map +1 -1
  303. package/server/applications/notifications/i18n/ko.js +1 -5
  304. package/server/applications/notifications/i18n/ko.js.map +1 -1
  305. package/server/applications/notifications/i18n/pl.js +1 -5
  306. package/server/applications/notifications/i18n/pl.js.map +1 -1
  307. package/server/applications/notifications/i18n/pt.js +1 -5
  308. package/server/applications/notifications/i18n/pt.js.map +1 -1
  309. package/server/applications/notifications/i18n/pt_br.js +1 -5
  310. package/server/applications/notifications/i18n/pt_br.js.map +1 -1
  311. package/server/applications/notifications/i18n/ru.js +1 -5
  312. package/server/applications/notifications/i18n/ru.js.map +1 -1
  313. package/server/applications/notifications/i18n/tr.js +1 -5
  314. package/server/applications/notifications/i18n/tr.js.map +1 -1
  315. package/server/applications/notifications/i18n/zh.js +1 -5
  316. package/server/applications/notifications/i18n/zh.js.map +1 -1
  317. package/server/applications/notifications/interfaces/notification-properties.interface.js +1 -5
  318. package/server/applications/notifications/interfaces/notification-properties.interface.js.map +1 -1
  319. package/server/applications/notifications/interfaces/user-mail-notification.interface.js +1 -5
  320. package/server/applications/notifications/interfaces/user-mail-notification.interface.js.map +1 -1
  321. package/server/applications/notifications/mails/models.js +1 -5
  322. package/server/applications/notifications/mails/models.js.map +1 -1
  323. package/server/applications/notifications/mails/templates.js +1 -5
  324. package/server/applications/notifications/mails/templates.js.map +1 -1
  325. package/server/applications/notifications/mails/urls.js +1 -5
  326. package/server/applications/notifications/mails/urls.js.map +1 -1
  327. package/server/applications/notifications/notifications.controller.js +1 -5
  328. package/server/applications/notifications/notifications.controller.js.map +1 -1
  329. package/server/applications/notifications/notifications.controller.spec.js +1 -5
  330. package/server/applications/notifications/notifications.controller.spec.js.map +1 -1
  331. package/server/applications/notifications/notifications.gateway.js +1 -5
  332. package/server/applications/notifications/notifications.gateway.js.map +1 -1
  333. package/server/applications/notifications/notifications.module.js +1 -5
  334. package/server/applications/notifications/notifications.module.js.map +1 -1
  335. package/server/applications/notifications/schemas/notification.interface.js +1 -5
  336. package/server/applications/notifications/schemas/notification.interface.js.map +1 -1
  337. package/server/applications/notifications/schemas/notifications.schema.js +1 -5
  338. package/server/applications/notifications/schemas/notifications.schema.js.map +1 -1
  339. package/server/applications/notifications/services/notifications-manager.service.js +25 -11
  340. package/server/applications/notifications/services/notifications-manager.service.js.map +1 -1
  341. package/server/applications/notifications/services/notifications-manager.service.spec.js +20 -11
  342. package/server/applications/notifications/services/notifications-manager.service.spec.js.map +1 -1
  343. package/server/applications/notifications/services/notifications-queries.service.js +1 -5
  344. package/server/applications/notifications/services/notifications-queries.service.js.map +1 -1
  345. package/server/applications/shares/constants/routes.js +1 -5
  346. package/server/applications/shares/constants/routes.js.map +1 -1
  347. package/server/applications/shares/constants/shares.js +1 -5
  348. package/server/applications/shares/constants/shares.js.map +1 -1
  349. package/server/applications/shares/dto/create-or-update-share.dto.js +1 -5
  350. package/server/applications/shares/dto/create-or-update-share.dto.js.map +1 -1
  351. package/server/applications/shares/interfaces/share-child.interface.js +1 -5
  352. package/server/applications/shares/interfaces/share-child.interface.js.map +1 -1
  353. package/server/applications/shares/interfaces/share-env.interface.js +1 -5
  354. package/server/applications/shares/interfaces/share-env.interface.js.map +1 -1
  355. package/server/applications/shares/interfaces/share-file.interface.js +1 -5
  356. package/server/applications/shares/interfaces/share-file.interface.js.map +1 -1
  357. package/server/applications/shares/interfaces/share-link.interface.js +1 -5
  358. package/server/applications/shares/interfaces/share-link.interface.js.map +1 -1
  359. package/server/applications/shares/interfaces/share-props.interface.js +1 -5
  360. package/server/applications/shares/interfaces/share-props.interface.js.map +1 -1
  361. package/server/applications/shares/models/share-child.model.js +1 -5
  362. package/server/applications/shares/models/share-child.model.js.map +1 -1
  363. package/server/applications/shares/schemas/share-members.interface.js +1 -5
  364. package/server/applications/shares/schemas/share-members.interface.js.map +1 -1
  365. package/server/applications/shares/schemas/share.interface.js +1 -5
  366. package/server/applications/shares/schemas/share.interface.js.map +1 -1
  367. package/server/applications/shares/schemas/shares-members.schema.js +1 -5
  368. package/server/applications/shares/schemas/shares-members.schema.js.map +1 -1
  369. package/server/applications/shares/schemas/shares.schema.js +1 -5
  370. package/server/applications/shares/schemas/shares.schema.js.map +1 -1
  371. package/server/applications/shares/services/shares-manager.service.js +214 -68
  372. package/server/applications/shares/services/shares-manager.service.js.map +1 -1
  373. package/server/applications/shares/services/shares-manager.service.spec.js +1 -5
  374. package/server/applications/shares/services/shares-manager.service.spec.js.map +1 -1
  375. package/server/applications/shares/services/shares-queries.service.js +49 -17
  376. package/server/applications/shares/services/shares-queries.service.js.map +1 -1
  377. package/server/applications/shares/shares.controller.js +1 -5
  378. package/server/applications/shares/shares.controller.js.map +1 -1
  379. package/server/applications/shares/shares.controller.spec.js +1 -5
  380. package/server/applications/shares/shares.controller.spec.js.map +1 -1
  381. package/server/applications/shares/shares.module.js +1 -5
  382. package/server/applications/shares/shares.module.js.map +1 -1
  383. package/server/applications/spaces/constants/cache.js +1 -5
  384. package/server/applications/spaces/constants/cache.js.map +1 -1
  385. package/server/applications/spaces/constants/routes.js +1 -5
  386. package/server/applications/spaces/constants/routes.js.map +1 -1
  387. package/server/applications/spaces/constants/spaces.js +1 -5
  388. package/server/applications/spaces/constants/spaces.js.map +1 -1
  389. package/server/applications/spaces/decorators/space-override-permission.decorator.js +1 -5
  390. package/server/applications/spaces/decorators/space-override-permission.decorator.js.map +1 -1
  391. package/server/applications/spaces/decorators/space-skip-guard.decorator.js +1 -5
  392. package/server/applications/spaces/decorators/space-skip-guard.decorator.js.map +1 -1
  393. package/server/applications/spaces/decorators/space-skip-permissions.decorator.js +1 -5
  394. package/server/applications/spaces/decorators/space-skip-permissions.decorator.js.map +1 -1
  395. package/server/applications/spaces/decorators/space.decorator.js +1 -5
  396. package/server/applications/spaces/decorators/space.decorator.js.map +1 -1
  397. package/server/applications/spaces/dto/create-or-update-space.dto.js +1 -5
  398. package/server/applications/spaces/dto/create-or-update-space.dto.js.map +1 -1
  399. package/server/applications/spaces/dto/delete-space.dto.js +1 -5
  400. package/server/applications/spaces/dto/delete-space.dto.js.map +1 -1
  401. package/server/applications/spaces/dto/search-space.dto.js +1 -5
  402. package/server/applications/spaces/dto/search-space.dto.js.map +1 -1
  403. package/server/applications/spaces/dto/space-roots.dto.js +1 -5
  404. package/server/applications/spaces/dto/space-roots.dto.js.map +1 -1
  405. package/server/applications/spaces/guards/space.guard.js +17 -9
  406. package/server/applications/spaces/guards/space.guard.js.map +1 -1
  407. package/server/applications/spaces/guards/space.guard.spec.js +1 -5
  408. package/server/applications/spaces/guards/space.guard.spec.js.map +1 -1
  409. package/server/applications/spaces/interfaces/space-diff.interface.js +1 -5
  410. package/server/applications/spaces/interfaces/space-diff.interface.js.map +1 -1
  411. package/server/applications/spaces/interfaces/space-files.interface.js +1 -5
  412. package/server/applications/spaces/interfaces/space-files.interface.js.map +1 -1
  413. package/server/applications/spaces/interfaces/space-request.interface.js +1 -5
  414. package/server/applications/spaces/interfaces/space-request.interface.js.map +1 -1
  415. package/server/applications/spaces/interfaces/space-trash.interface.js +1 -5
  416. package/server/applications/spaces/interfaces/space-trash.interface.js.map +1 -1
  417. package/server/applications/spaces/models/space-env.model.js +1 -5
  418. package/server/applications/spaces/models/space-env.model.js.map +1 -1
  419. package/server/applications/spaces/models/space-props.model.js +1 -5
  420. package/server/applications/spaces/models/space-props.model.js.map +1 -1
  421. package/server/applications/spaces/models/space-root-props.model.js +1 -5
  422. package/server/applications/spaces/models/space-root-props.model.js.map +1 -1
  423. package/server/applications/spaces/models/space.model.js +1 -5
  424. package/server/applications/spaces/models/space.model.js.map +1 -1
  425. package/server/applications/spaces/schemas/space-members.interface.js +1 -5
  426. package/server/applications/spaces/schemas/space-members.interface.js.map +1 -1
  427. package/server/applications/spaces/schemas/space-root.interface.js +1 -5
  428. package/server/applications/spaces/schemas/space-root.interface.js.map +1 -1
  429. package/server/applications/spaces/schemas/space.interface.js +1 -5
  430. package/server/applications/spaces/schemas/space.interface.js.map +1 -1
  431. package/server/applications/spaces/schemas/spaces-members.schema.js +1 -5
  432. package/server/applications/spaces/schemas/spaces-members.schema.js.map +1 -1
  433. package/server/applications/spaces/schemas/spaces-roots.schema.js +1 -5
  434. package/server/applications/spaces/schemas/spaces-roots.schema.js.map +1 -1
  435. package/server/applications/spaces/schemas/spaces.schema.js +1 -5
  436. package/server/applications/spaces/schemas/spaces.schema.js.map +1 -1
  437. package/server/applications/spaces/services/spaces-browser.service.js +77 -24
  438. package/server/applications/spaces/services/spaces-browser.service.js.map +1 -1
  439. package/server/applications/spaces/services/spaces-browser.service.spec.js +1 -5
  440. package/server/applications/spaces/services/spaces-browser.service.spec.js.map +1 -1
  441. package/server/applications/spaces/services/spaces-manager.service.js +193 -53
  442. package/server/applications/spaces/services/spaces-manager.service.js.map +1 -1
  443. package/server/applications/spaces/services/spaces-manager.service.spec.js +1 -5
  444. package/server/applications/spaces/services/spaces-manager.service.spec.js.map +1 -1
  445. package/server/applications/spaces/services/spaces-queries.service.js +65 -21
  446. package/server/applications/spaces/services/spaces-queries.service.js.map +1 -1
  447. package/server/applications/spaces/services/spaces-scheduler.service.js +49 -17
  448. package/server/applications/spaces/services/spaces-scheduler.service.js.map +1 -1
  449. package/server/applications/spaces/spaces.controller.js +1 -5
  450. package/server/applications/spaces/spaces.controller.js.map +1 -1
  451. package/server/applications/spaces/spaces.controller.spec.js +1 -5
  452. package/server/applications/spaces/spaces.controller.spec.js.map +1 -1
  453. package/server/applications/spaces/spaces.module.js +1 -5
  454. package/server/applications/spaces/spaces.module.js.map +1 -1
  455. package/server/applications/spaces/utils/paths.js +1 -5
  456. package/server/applications/spaces/utils/paths.js.map +1 -1
  457. package/server/applications/spaces/utils/permissions.js +1 -5
  458. package/server/applications/spaces/utils/permissions.js.map +1 -1
  459. package/server/applications/spaces/utils/routes.js +1 -5
  460. package/server/applications/spaces/utils/routes.js.map +1 -1
  461. package/server/applications/sync/constants/auth.js +1 -5
  462. package/server/applications/sync/constants/auth.js.map +1 -1
  463. package/server/applications/sync/constants/routes.js +6 -5
  464. package/server/applications/sync/constants/routes.js.map +1 -1
  465. package/server/applications/sync/constants/store.js +1 -9
  466. package/server/applications/sync/constants/store.js.map +1 -1
  467. package/server/applications/sync/constants/sync.js +2 -6
  468. package/server/applications/sync/constants/sync.js.map +1 -1
  469. package/server/applications/sync/decorators/sync-context.decorator.js +1 -5
  470. package/server/applications/sync/decorators/sync-context.decorator.js.map +1 -1
  471. package/server/applications/sync/decorators/sync-environment.decorator.js +1 -5
  472. package/server/applications/sync/decorators/sync-environment.decorator.js.map +1 -1
  473. package/server/applications/sync/dtos/sync-client-auth.dto.js +12 -8
  474. package/server/applications/sync/dtos/sync-client-auth.dto.js.map +1 -1
  475. package/server/applications/sync/dtos/sync-client-info.dto.js +49 -0
  476. package/server/applications/sync/dtos/sync-client-info.dto.js.map +1 -0
  477. package/server/applications/sync/dtos/sync-client-registration.dto.js +34 -11
  478. package/server/applications/sync/dtos/sync-client-registration.dto.js.map +1 -1
  479. package/server/applications/sync/dtos/sync-operations.dto.js +1 -5
  480. package/server/applications/sync/dtos/sync-operations.dto.js.map +1 -1
  481. package/server/applications/sync/dtos/sync-path.dto.js +1 -5
  482. package/server/applications/sync/dtos/sync-path.dto.js.map +1 -1
  483. package/server/applications/sync/dtos/sync-upload.dto.js +1 -5
  484. package/server/applications/sync/dtos/sync-upload.dto.js.map +1 -1
  485. package/server/applications/sync/interceptors/sync-diff-gzip-body.interceptor.js +1 -5
  486. package/server/applications/sync/interceptors/sync-diff-gzip-body.interceptor.js.map +1 -1
  487. package/server/applications/sync/interceptors/sync-diff-gzip-body.interceptor.spec.js +1 -5
  488. package/server/applications/sync/interceptors/sync-diff-gzip-body.interceptor.spec.js.map +1 -1
  489. package/server/applications/sync/interfaces/store-manifest.interface.js +1 -5
  490. package/server/applications/sync/interfaces/store-manifest.interface.js.map +1 -1
  491. package/server/applications/sync/interfaces/sync-client-auth.interface.js +1 -25
  492. package/server/applications/sync/interfaces/sync-client-auth.interface.js.map +1 -1
  493. package/server/applications/sync/interfaces/sync-client-paths.interface.js +1 -5
  494. package/server/applications/sync/interfaces/sync-client-paths.interface.js.map +1 -1
  495. package/server/applications/sync/interfaces/sync-client.interface.js +1 -5
  496. package/server/applications/sync/interfaces/sync-client.interface.js.map +1 -1
  497. package/server/applications/sync/interfaces/sync-diff.interface.js +1 -5
  498. package/server/applications/sync/interfaces/sync-diff.interface.js.map +1 -1
  499. package/server/applications/sync/interfaces/sync-path.interface.js +1 -5
  500. package/server/applications/sync/interfaces/sync-path.interface.js.map +1 -1
  501. package/server/applications/sync/schemas/sync-client.interface.js +1 -5
  502. package/server/applications/sync/schemas/sync-client.interface.js.map +1 -1
  503. package/server/applications/sync/schemas/sync-clients.schema.js +1 -5
  504. package/server/applications/sync/schemas/sync-clients.schema.js.map +1 -1
  505. package/server/applications/sync/schemas/sync-path.interface.js +1 -5
  506. package/server/applications/sync/schemas/sync-path.interface.js.map +1 -1
  507. package/server/applications/sync/schemas/sync-paths.schema.js +1 -5
  508. package/server/applications/sync/schemas/sync-paths.schema.js.map +1 -1
  509. package/server/applications/sync/services/sync-clients-manager.service.js +108 -44
  510. package/server/applications/sync/services/sync-clients-manager.service.js.map +1 -1
  511. package/server/applications/sync/services/sync-clients-manager.service.spec.js +14 -17
  512. package/server/applications/sync/services/sync-clients-manager.service.spec.js.map +1 -1
  513. package/server/applications/sync/services/sync-manager.service.js +29 -12
  514. package/server/applications/sync/services/sync-manager.service.js.map +1 -1
  515. package/server/applications/sync/services/sync-manager.service.spec.js +1 -5
  516. package/server/applications/sync/services/sync-manager.service.spec.js.map +1 -1
  517. package/server/applications/sync/services/sync-paths-manager.service.js +27 -17
  518. package/server/applications/sync/services/sync-paths-manager.service.js.map +1 -1
  519. package/server/applications/sync/services/sync-paths-manager.service.spec.js +11 -15
  520. package/server/applications/sync/services/sync-paths-manager.service.spec.js.map +1 -1
  521. package/server/applications/sync/services/sync-queries.service.js +1 -5
  522. package/server/applications/sync/services/sync-queries.service.js.map +1 -1
  523. package/server/applications/sync/sync.config.js +1 -5
  524. package/server/applications/sync/sync.config.js.map +1 -1
  525. package/server/applications/sync/sync.controller.js +21 -6
  526. package/server/applications/sync/sync.controller.js.map +1 -1
  527. package/server/applications/sync/sync.controller.spec.js +1 -5
  528. package/server/applications/sync/sync.controller.spec.js.map +1 -1
  529. package/server/applications/sync/sync.module.js +1 -5
  530. package/server/applications/sync/sync.module.js.map +1 -1
  531. package/server/applications/sync/utils/functions.js +1 -5
  532. package/server/applications/sync/utils/functions.js.map +1 -1
  533. package/server/applications/sync/utils/normalizedMap.js +1 -5
  534. package/server/applications/sync/utils/normalizedMap.js.map +1 -1
  535. package/server/applications/sync/utils/routes.js +1 -5
  536. package/server/applications/sync/utils/routes.js.map +1 -1
  537. package/server/applications/users/admin-users.controller.js +2 -6
  538. package/server/applications/users/admin-users.controller.js.map +1 -1
  539. package/server/applications/users/admin-users.controller.spec.js +6 -10
  540. package/server/applications/users/admin-users.controller.spec.js.map +1 -1
  541. package/server/applications/users/constants/group.js +1 -5
  542. package/server/applications/users/constants/group.js.map +1 -1
  543. package/server/applications/users/constants/member.js +1 -5
  544. package/server/applications/users/constants/member.js.map +1 -1
  545. package/server/applications/users/constants/routes.js +1 -5
  546. package/server/applications/users/constants/routes.js.map +1 -1
  547. package/server/applications/users/constants/user.js +1 -5
  548. package/server/applications/users/constants/user.js.map +1 -1
  549. package/server/applications/users/constants/websocket.js +1 -5
  550. package/server/applications/users/constants/websocket.js.map +1 -1
  551. package/server/applications/users/decorators/permissions.decorator.js +1 -5
  552. package/server/applications/users/decorators/permissions.decorator.js.map +1 -1
  553. package/server/applications/users/decorators/roles.decorator.js +1 -5
  554. package/server/applications/users/decorators/roles.decorator.js.map +1 -1
  555. package/server/applications/users/decorators/user.decorator.js +1 -5
  556. package/server/applications/users/decorators/user.decorator.js.map +1 -1
  557. package/server/applications/users/dto/create-or-update-group.dto.js +1 -5
  558. package/server/applications/users/dto/create-or-update-group.dto.js.map +1 -1
  559. package/server/applications/users/dto/create-or-update-user.dto.js +1 -5
  560. package/server/applications/users/dto/create-or-update-user.dto.js.map +1 -1
  561. package/server/applications/users/dto/delete-user.dto.js +1 -5
  562. package/server/applications/users/dto/delete-user.dto.js.map +1 -1
  563. package/server/applications/users/dto/search-members.dto.js +1 -5
  564. package/server/applications/users/dto/search-members.dto.js.map +1 -1
  565. package/server/applications/users/dto/user-properties.dto.js +1 -5
  566. package/server/applications/users/dto/user-properties.dto.js.map +1 -1
  567. package/server/applications/users/guards/permissions.guard.js +1 -5
  568. package/server/applications/users/guards/permissions.guard.js.map +1 -1
  569. package/server/applications/users/guards/permissions.guard.spec.js +1 -5
  570. package/server/applications/users/guards/permissions.guard.spec.js.map +1 -1
  571. package/server/applications/users/guards/roles.guard.js +1 -5
  572. package/server/applications/users/guards/roles.guard.js.map +1 -1
  573. package/server/applications/users/guards/roles.guard.spec.js +1 -5
  574. package/server/applications/users/guards/roles.guard.spec.js.map +1 -1
  575. package/server/applications/users/interfaces/admin-group.interface.js +1 -5
  576. package/server/applications/users/interfaces/admin-group.interface.js.map +1 -1
  577. package/server/applications/users/interfaces/admin-user.interface.js +1 -5
  578. package/server/applications/users/interfaces/admin-user.interface.js.map +1 -1
  579. package/server/applications/users/interfaces/group-browse.interface.js +1 -5
  580. package/server/applications/users/interfaces/group-browse.interface.js.map +1 -1
  581. package/server/applications/users/interfaces/group-member.js +1 -5
  582. package/server/applications/users/interfaces/group-member.js.map +1 -1
  583. package/server/applications/users/interfaces/guest-user.interface.js +1 -5
  584. package/server/applications/users/interfaces/guest-user.interface.js.map +1 -1
  585. package/server/applications/users/interfaces/member.interface.js +1 -5
  586. package/server/applications/users/interfaces/member.interface.js.map +1 -1
  587. package/server/applications/users/interfaces/owner.interface.js +1 -5
  588. package/server/applications/users/interfaces/owner.interface.js.map +1 -1
  589. package/server/applications/users/interfaces/user-secrets.interface.js +1 -5
  590. package/server/applications/users/interfaces/user-secrets.interface.js.map +1 -1
  591. package/server/applications/users/interfaces/websocket.interface.js +1 -5
  592. package/server/applications/users/interfaces/websocket.interface.js.map +1 -1
  593. package/server/applications/users/models/user.model.js +1 -5
  594. package/server/applications/users/models/user.model.js.map +1 -1
  595. package/server/applications/users/schemas/group.interface.js +1 -5
  596. package/server/applications/users/schemas/group.interface.js.map +1 -1
  597. package/server/applications/users/schemas/groups.schema.js +1 -5
  598. package/server/applications/users/schemas/groups.schema.js.map +1 -1
  599. package/server/applications/users/schemas/user-group.interface.js +1 -5
  600. package/server/applications/users/schemas/user-group.interface.js.map +1 -1
  601. package/server/applications/users/schemas/user.interface.js +1 -5
  602. package/server/applications/users/schemas/user.interface.js.map +1 -1
  603. package/server/applications/users/schemas/users-groups.schema.js +1 -5
  604. package/server/applications/users/schemas/users-groups.schema.js.map +1 -1
  605. package/server/applications/users/schemas/users-guests.schema.js +1 -5
  606. package/server/applications/users/schemas/users-guests.schema.js.map +1 -1
  607. package/server/applications/users/schemas/users.schema.js +1 -5
  608. package/server/applications/users/schemas/users.schema.js.map +1 -1
  609. package/server/applications/users/services/admin-users-manager.service.js +67 -23
  610. package/server/applications/users/services/admin-users-manager.service.js.map +1 -1
  611. package/server/applications/users/services/admin-users-manager.service.spec.js +3 -7
  612. package/server/applications/users/services/admin-users-manager.service.spec.js.map +1 -1
  613. package/server/applications/users/services/admin-users-queries.service.js +65 -21
  614. package/server/applications/users/services/admin-users-queries.service.js.map +1 -1
  615. package/server/applications/users/services/users-manager.service.js +81 -25
  616. package/server/applications/users/services/users-manager.service.js.map +1 -1
  617. package/server/applications/users/services/users-manager.service.spec.js +14 -12
  618. package/server/applications/users/services/users-manager.service.spec.js.map +1 -1
  619. package/server/applications/users/services/users-queries.service.js +49 -17
  620. package/server/applications/users/services/users-queries.service.js.map +1 -1
  621. package/server/applications/users/users.controller.js +2 -6
  622. package/server/applications/users/users.controller.js.map +1 -1
  623. package/server/applications/users/users.controller.spec.js +5 -9
  624. package/server/applications/users/users.controller.spec.js.map +1 -1
  625. package/server/applications/users/users.e2e-spec.js +3 -7
  626. package/server/applications/users/users.e2e-spec.js.map +1 -1
  627. package/server/applications/users/users.gateway.js +29 -12
  628. package/server/applications/users/users.gateway.js.map +1 -1
  629. package/server/applications/users/users.gateway.spec.js +1 -5
  630. package/server/applications/users/users.gateway.spec.js.map +1 -1
  631. package/server/applications/users/users.module.js +1 -5
  632. package/server/applications/users/users.module.js.map +1 -1
  633. package/server/applications/users/utils/avatar.js +1 -5
  634. package/server/applications/users/utils/avatar.js.map +1 -1
  635. package/server/applications/users/utils/test.js +1 -5
  636. package/server/applications/users/utils/test.js.map +1 -1
  637. package/server/applications/webdav/constants/routes.js +1 -5
  638. package/server/applications/webdav/constants/routes.js.map +1 -1
  639. package/server/applications/webdav/constants/webdav.js +1 -5
  640. package/server/applications/webdav/constants/webdav.js.map +1 -1
  641. package/server/applications/webdav/decorators/if-header.decorator.js +1 -5
  642. package/server/applications/webdav/decorators/if-header.decorator.js.map +1 -1
  643. package/server/applications/webdav/decorators/webdav-context.decorator.js +1 -5
  644. package/server/applications/webdav/decorators/webdav-context.decorator.js.map +1 -1
  645. package/server/applications/webdav/filters/webdav.filter.js +1 -5
  646. package/server/applications/webdav/filters/webdav.filter.js.map +1 -1
  647. package/server/applications/webdav/filters/webdav.filter.spec.js +1 -5
  648. package/server/applications/webdav/filters/webdav.filter.spec.js.map +1 -1
  649. package/server/applications/webdav/guards/webdav-protocol.guard.js +54 -20
  650. package/server/applications/webdav/guards/webdav-protocol.guard.js.map +1 -1
  651. package/server/applications/webdav/guards/webdav-protocol.guard.spec.js +54 -0
  652. package/server/applications/webdav/guards/webdav-protocol.guard.spec.js.map +1 -1
  653. package/server/applications/webdav/interfaces/if-header.interface.js +1 -5
  654. package/server/applications/webdav/interfaces/if-header.interface.js.map +1 -1
  655. package/server/applications/webdav/interfaces/webdav.interface.js +1 -5
  656. package/server/applications/webdav/interfaces/webdav.interface.js.map +1 -1
  657. package/server/applications/webdav/models/webdav-file.model.js +1 -5
  658. package/server/applications/webdav/models/webdav-file.model.js.map +1 -1
  659. package/server/applications/webdav/services/webdav-methods.service.js +74 -26
  660. package/server/applications/webdav/services/webdav-methods.service.js.map +1 -1
  661. package/server/applications/webdav/services/webdav-methods.service.spec.js +15 -18
  662. package/server/applications/webdav/services/webdav-methods.service.spec.js.map +1 -1
  663. package/server/applications/webdav/services/webdav-spaces.service.js +17 -9
  664. package/server/applications/webdav/services/webdav-spaces.service.js.map +1 -1
  665. package/server/applications/webdav/services/webdav-spaces.service.spec.js +1 -5
  666. package/server/applications/webdav/services/webdav-spaces.service.spec.js.map +1 -1
  667. package/server/applications/webdav/utils/bootstrap.js +1 -5
  668. package/server/applications/webdav/utils/bootstrap.js.map +1 -1
  669. package/server/applications/webdav/utils/if-header.js +1 -5
  670. package/server/applications/webdav/utils/if-header.js.map +1 -1
  671. package/server/applications/webdav/utils/routes.js +1 -5
  672. package/server/applications/webdav/utils/routes.js.map +1 -1
  673. package/server/applications/webdav/utils/webdav.js +1 -5
  674. package/server/applications/webdav/utils/webdav.js.map +1 -1
  675. package/server/applications/webdav/utils/xml.js +1 -5
  676. package/server/applications/webdav/utils/xml.js.map +1 -1
  677. package/server/applications/webdav/webdav.controller.js +1 -5
  678. package/server/applications/webdav/webdav.controller.js.map +1 -1
  679. package/server/applications/webdav/webdav.controller.spec.js +1 -5
  680. package/server/applications/webdav/webdav.controller.spec.js.map +1 -1
  681. package/server/applications/webdav/webdav.e2e-spec.js +1 -5
  682. package/server/applications/webdav/webdav.e2e-spec.js.map +1 -1
  683. package/server/applications/webdav/webdav.module.js +1 -5
  684. package/server/applications/webdav/webdav.module.js.map +1 -1
  685. package/server/authentication/auth.config.js +23 -123
  686. package/server/authentication/auth.config.js.map +1 -1
  687. package/server/authentication/auth.controller.js +27 -21
  688. package/server/authentication/auth.controller.js.map +1 -1
  689. package/server/authentication/auth.controller.spec.js +6 -10
  690. package/server/authentication/auth.controller.spec.js.map +1 -1
  691. package/server/authentication/auth.e2e-spec.js +1 -5
  692. package/server/authentication/auth.e2e-spec.js.map +1 -1
  693. package/server/authentication/auth.module.js +17 -20
  694. package/server/authentication/auth.module.js.map +1 -1
  695. package/server/authentication/{services/auth-manager.service.js → auth.service.js} +41 -18
  696. package/server/authentication/auth.service.js.map +1 -0
  697. package/server/authentication/{services/auth-manager.service.spec.js → auth.service.spec.js} +6 -10
  698. package/server/authentication/auth.service.spec.js.map +1 -0
  699. package/server/authentication/constants/auth.js +1 -5
  700. package/server/authentication/constants/auth.js.map +1 -1
  701. package/server/authentication/constants/routes.js +41 -30
  702. package/server/authentication/constants/routes.js.map +1 -1
  703. package/server/authentication/constants/scope.js +2 -5
  704. package/server/authentication/constants/scope.js.map +1 -1
  705. package/server/authentication/decorators/auth-token-optional.decorator.js +1 -5
  706. package/server/authentication/decorators/auth-token-optional.decorator.js.map +1 -1
  707. package/server/authentication/decorators/auth-token-skip.decorator.js +1 -5
  708. package/server/authentication/decorators/auth-token-skip.decorator.js.map +1 -1
  709. package/server/authentication/dto/login-response.dto.js +1 -10
  710. package/server/authentication/dto/login-response.dto.js.map +1 -1
  711. package/server/authentication/dto/token-response.dto.js +1 -5
  712. package/server/authentication/dto/token-response.dto.js.map +1 -1
  713. package/server/authentication/guards/auth-anonymous.guard.js +1 -5
  714. package/server/authentication/guards/auth-anonymous.guard.js.map +1 -1
  715. package/server/authentication/guards/auth-anonymous.guard.spec.js +1 -5
  716. package/server/authentication/guards/auth-anonymous.guard.spec.js.map +1 -1
  717. package/server/authentication/guards/auth-anonymous.strategy.js +1 -5
  718. package/server/authentication/guards/auth-anonymous.strategy.js.map +1 -1
  719. package/server/authentication/guards/auth-basic.guard.js +1 -5
  720. package/server/authentication/guards/auth-basic.guard.js.map +1 -1
  721. package/server/authentication/guards/auth-basic.guard.spec.js +13 -14
  722. package/server/authentication/guards/auth-basic.guard.spec.js.map +1 -1
  723. package/server/authentication/guards/auth-basic.strategy.js +10 -11
  724. package/server/authentication/guards/auth-basic.strategy.js.map +1 -1
  725. package/server/authentication/guards/auth-digest.guard.js +1 -5
  726. package/server/authentication/guards/auth-digest.guard.js.map +1 -1
  727. package/server/authentication/guards/auth-digest.strategy.js +1 -5
  728. package/server/authentication/guards/auth-digest.strategy.js.map +1 -1
  729. package/server/authentication/guards/auth-local.guard.js +1 -5
  730. package/server/authentication/guards/auth-local.guard.js.map +1 -1
  731. package/server/authentication/guards/auth-local.guard.spec.js +9 -13
  732. package/server/authentication/guards/auth-local.guard.spec.js.map +1 -1
  733. package/server/authentication/guards/auth-local.strategy.js +6 -10
  734. package/server/authentication/guards/auth-local.strategy.js.map +1 -1
  735. package/server/authentication/guards/auth-token-access.guard.js +1 -5
  736. package/server/authentication/guards/auth-token-access.guard.js.map +1 -1
  737. package/server/authentication/guards/auth-token-access.guard.spec.js +3 -7
  738. package/server/authentication/guards/auth-token-access.guard.spec.js.map +1 -1
  739. package/server/authentication/guards/auth-token-access.strategy.js +3 -7
  740. package/server/authentication/guards/auth-token-access.strategy.js.map +1 -1
  741. package/server/authentication/guards/auth-token-refresh.guard.js +1 -5
  742. package/server/authentication/guards/auth-token-refresh.guard.js.map +1 -1
  743. package/server/authentication/guards/auth-token-refresh.guard.spec.js +3 -7
  744. package/server/authentication/guards/auth-token-refresh.guard.spec.js.map +1 -1
  745. package/server/authentication/guards/auth-token-refresh.strategy.js +3 -7
  746. package/server/authentication/guards/auth-token-refresh.strategy.js.map +1 -1
  747. package/server/authentication/guards/implementations/http-basic.strategy.js +1 -5
  748. package/server/authentication/guards/implementations/http-basic.strategy.js.map +1 -1
  749. package/server/authentication/guards/implementations/http-digest.strategy.js +1 -5
  750. package/server/authentication/guards/implementations/http-digest.strategy.js.map +1 -1
  751. package/server/authentication/interfaces/auth-request.interface.js +1 -5
  752. package/server/authentication/interfaces/auth-request.interface.js.map +1 -1
  753. package/server/authentication/interfaces/jwt-payload.interface.js +1 -5
  754. package/server/authentication/interfaces/jwt-payload.interface.js.map +1 -1
  755. package/server/authentication/interfaces/token.interface.js +1 -5
  756. package/server/authentication/interfaces/token.interface.js.map +1 -1
  757. package/server/authentication/providers/auth-providers.constants.js +18 -0
  758. package/server/authentication/providers/auth-providers.constants.js.map +1 -0
  759. package/server/authentication/providers/auth-providers.models.js +14 -0
  760. package/server/authentication/providers/auth-providers.models.js.map +1 -0
  761. package/server/authentication/providers/auth-providers.utils.js +42 -0
  762. package/server/authentication/providers/auth-providers.utils.js.map +1 -0
  763. package/server/authentication/providers/ldap/auth-ldap.config.js +143 -0
  764. package/server/authentication/providers/ldap/auth-ldap.config.js.map +1 -0
  765. package/server/authentication/{constants/auth-ldap.js → providers/ldap/auth-ldap.constants.js} +12 -6
  766. package/server/authentication/providers/ldap/auth-ldap.constants.js.map +1 -0
  767. package/server/authentication/providers/ldap/auth-provider-ldap.service.js +506 -0
  768. package/server/authentication/providers/ldap/auth-provider-ldap.service.js.map +1 -0
  769. package/server/authentication/providers/ldap/auth-provider-ldap.service.spec.js +674 -0
  770. package/server/authentication/providers/ldap/auth-provider-ldap.service.spec.js.map +1 -0
  771. package/server/authentication/{services/auth-methods/auth-method-database.service.js → providers/mysql/auth-provider-mysql.service.js} +16 -14
  772. package/server/authentication/providers/mysql/auth-provider-mysql.service.js.map +1 -0
  773. package/server/authentication/{services/auth-methods/auth-method-database.service.spec.js → providers/mysql/auth-provider-mysql.service.spec.js} +15 -19
  774. package/server/authentication/providers/mysql/auth-provider-mysql.service.spec.js.map +1 -0
  775. package/server/authentication/providers/oidc/auth-oidc-desktop.constants.js +30 -0
  776. package/server/authentication/providers/oidc/auth-oidc-desktop.constants.js.map +1 -0
  777. package/server/authentication/providers/oidc/auth-oidc.config.js +149 -0
  778. package/server/authentication/providers/oidc/auth-oidc.config.js.map +1 -0
  779. package/server/authentication/providers/oidc/auth-oidc.constants.js +39 -0
  780. package/server/authentication/providers/oidc/auth-oidc.constants.js.map +1 -0
  781. package/server/authentication/providers/oidc/auth-oidc.controller.js +83 -0
  782. package/server/authentication/providers/oidc/auth-oidc.controller.js.map +1 -0
  783. package/server/authentication/providers/oidc/auth-oidc.interfaces.js +6 -0
  784. package/server/authentication/providers/oidc/auth-oidc.interfaces.js.map +1 -0
  785. package/server/authentication/providers/oidc/auth-provider-oidc.module.js +36 -0
  786. package/server/authentication/providers/oidc/auth-provider-oidc.module.js.map +1 -0
  787. package/server/authentication/providers/oidc/auth-provider-oidc.service.js +373 -0
  788. package/server/authentication/providers/oidc/auth-provider-oidc.service.js.map +1 -0
  789. package/server/authentication/providers/oidc/auth-provider-oidc.service.spec.js +270 -0
  790. package/server/authentication/providers/oidc/auth-provider-oidc.service.spec.js.map +1 -0
  791. package/server/authentication/{services/auth-methods/auth-method-two-fa.service.js → providers/two-fa/auth-provider-two-fa.service.js} +56 -38
  792. package/server/authentication/providers/two-fa/auth-provider-two-fa.service.js.map +1 -0
  793. package/server/authentication/{services/auth-methods/auth-method-two-fa.service.spec.js → providers/two-fa/auth-provider-two-fa.service.spec.js} +6 -10
  794. package/server/authentication/providers/two-fa/auth-provider-two-fa.service.spec.js.map +1 -0
  795. package/server/authentication/{guards → providers/two-fa}/auth-two-fa-guard.js +10 -14
  796. package/server/authentication/providers/two-fa/auth-two-fa-guard.js.map +1 -0
  797. package/server/authentication/providers/two-fa/auth-two-fa.config.js +57 -0
  798. package/server/authentication/providers/two-fa/auth-two-fa.config.js.map +1 -0
  799. package/server/authentication/{dto/two-fa-verify.dto.js → providers/two-fa/auth-two-fa.dtos.js} +8 -6
  800. package/server/authentication/providers/two-fa/auth-two-fa.dtos.js.map +1 -0
  801. package/server/authentication/providers/two-fa/auth-two-fa.interfaces.js +6 -0
  802. package/server/authentication/providers/two-fa/auth-two-fa.interfaces.js.map +1 -0
  803. package/server/authentication/utils/crypt-secret.js +1 -5
  804. package/server/authentication/utils/crypt-secret.js.map +1 -1
  805. package/server/common/constants.js +1 -5
  806. package/server/common/constants.js.map +1 -1
  807. package/server/common/decorators.js +1 -5
  808. package/server/common/decorators.js.map +1 -1
  809. package/server/common/functions.js +25 -9
  810. package/server/common/functions.js.map +1 -1
  811. package/server/common/i18n.js +1 -5
  812. package/server/common/i18n.js.map +1 -1
  813. package/server/common/image.js +1 -5
  814. package/server/common/image.js.map +1 -1
  815. package/server/common/interfaces.js +1 -5
  816. package/server/common/interfaces.js.map +1 -1
  817. package/server/common/qrcode.js +1 -5
  818. package/server/common/qrcode.js.map +1 -1
  819. package/server/common/shared.js +6 -6
  820. package/server/common/shared.js.map +1 -1
  821. package/server/configuration/config.constants.js +1 -5
  822. package/server/configuration/config.constants.js.map +1 -1
  823. package/server/configuration/config.environment.js +2 -6
  824. package/server/configuration/config.environment.js.map +1 -1
  825. package/server/configuration/config.interfaces.js +1 -5
  826. package/server/configuration/config.interfaces.js.map +1 -1
  827. package/server/configuration/config.loader.js +1 -5
  828. package/server/configuration/config.loader.js.map +1 -1
  829. package/server/configuration/config.logger.js +4 -8
  830. package/server/configuration/config.logger.js.map +1 -1
  831. package/server/configuration/config.validation.js +7 -5
  832. package/server/configuration/config.validation.js.map +1 -1
  833. package/server/infrastructure/cache/adapters/mysql-cache.adapter.js +9 -7
  834. package/server/infrastructure/cache/adapters/mysql-cache.adapter.js.map +1 -1
  835. package/server/infrastructure/cache/adapters/redis-cache.adapter.js +1 -5
  836. package/server/infrastructure/cache/adapters/redis-cache.adapter.js.map +1 -1
  837. package/server/infrastructure/cache/cache.config.js +1 -5
  838. package/server/infrastructure/cache/cache.config.js.map +1 -1
  839. package/server/infrastructure/cache/cache.decorator.js +9 -7
  840. package/server/infrastructure/cache/cache.decorator.js.map +1 -1
  841. package/server/infrastructure/cache/cache.e2e-spec.js +1 -5
  842. package/server/infrastructure/cache/cache.e2e-spec.js.map +1 -1
  843. package/server/infrastructure/cache/cache.module.js +1 -5
  844. package/server/infrastructure/cache/cache.module.js.map +1 -1
  845. package/server/infrastructure/cache/schemas/mysql-cache.interface.js +1 -5
  846. package/server/infrastructure/cache/schemas/mysql-cache.interface.js.map +1 -1
  847. package/server/infrastructure/cache/schemas/mysql-cache.schema.js +1 -5
  848. package/server/infrastructure/cache/schemas/mysql-cache.schema.js.map +1 -1
  849. package/server/infrastructure/cache/services/cache.service.js +1 -5
  850. package/server/infrastructure/cache/services/cache.service.js.map +1 -1
  851. package/server/infrastructure/context/context.module.js +1 -5
  852. package/server/infrastructure/context/context.module.js.map +1 -1
  853. package/server/infrastructure/context/interceptors/context.interceptor.js +1 -5
  854. package/server/infrastructure/context/interceptors/context.interceptor.js.map +1 -1
  855. package/server/infrastructure/context/interceptors/context.interceptor.spec.js +2 -6
  856. package/server/infrastructure/context/interceptors/context.interceptor.spec.js.map +1 -1
  857. package/server/infrastructure/context/interfaces/context-store.interface.js +1 -5
  858. package/server/infrastructure/context/interfaces/context-store.interface.js.map +1 -1
  859. package/server/infrastructure/context/services/context-manager.service.js +1 -5
  860. package/server/infrastructure/context/services/context-manager.service.js.map +1 -1
  861. package/server/infrastructure/context/services/context-manager.service.spec.js +1 -5
  862. package/server/infrastructure/context/services/context-manager.service.spec.js.map +1 -1
  863. package/server/infrastructure/database/columns.js +1 -5
  864. package/server/infrastructure/database/columns.js.map +1 -1
  865. package/server/infrastructure/database/configuration.js +1 -5
  866. package/server/infrastructure/database/configuration.js.map +1 -1
  867. package/server/infrastructure/database/constants.js +2 -6
  868. package/server/infrastructure/database/constants.js.map +1 -1
  869. package/server/infrastructure/database/database.config.js +1 -5
  870. package/server/infrastructure/database/database.config.js.map +1 -1
  871. package/server/infrastructure/database/database.logger.js +1 -5
  872. package/server/infrastructure/database/database.logger.js.map +1 -1
  873. package/server/infrastructure/database/database.module.js +1 -5
  874. package/server/infrastructure/database/database.module.js.map +1 -1
  875. package/server/infrastructure/database/interfaces/database.interface.js +1 -5
  876. package/server/infrastructure/database/interfaces/database.interface.js.map +1 -1
  877. package/server/infrastructure/database/schema.js +1 -5
  878. package/server/infrastructure/database/schema.js.map +1 -1
  879. package/server/infrastructure/database/scripts/create-user.js +1 -5
  880. package/server/infrastructure/database/scripts/create-user.js.map +1 -1
  881. package/server/infrastructure/database/scripts/db.js +1 -5
  882. package/server/infrastructure/database/scripts/db.js.map +1 -1
  883. package/server/infrastructure/database/scripts/seed/main.js +1 -5
  884. package/server/infrastructure/database/scripts/seed/main.js.map +1 -1
  885. package/server/infrastructure/database/scripts/seed/usersgroups.js +1 -5
  886. package/server/infrastructure/database/scripts/seed/usersgroups.js.map +1 -1
  887. package/server/infrastructure/database/utils.js +1 -5
  888. package/server/infrastructure/database/utils.js.map +1 -1
  889. package/server/infrastructure/mailer/interfaces/mail.interface.js +1 -5
  890. package/server/infrastructure/mailer/interfaces/mail.interface.js.map +1 -1
  891. package/server/infrastructure/mailer/mailer.config.js +1 -5
  892. package/server/infrastructure/mailer/mailer.config.js.map +1 -1
  893. package/server/infrastructure/mailer/mailer.module.js +1 -5
  894. package/server/infrastructure/mailer/mailer.module.js.map +1 -1
  895. package/server/infrastructure/mailer/mailer.service.js +1 -5
  896. package/server/infrastructure/mailer/mailer.service.js.map +1 -1
  897. package/server/infrastructure/mailer/mailer.service.spec.js +2 -6
  898. package/server/infrastructure/mailer/mailer.service.spec.js.map +1 -1
  899. package/server/infrastructure/scheduler/scheduler.constants.js +1 -5
  900. package/server/infrastructure/scheduler/scheduler.constants.js.map +1 -1
  901. package/server/infrastructure/scheduler/scheduler.module.js +1 -5
  902. package/server/infrastructure/scheduler/scheduler.module.js.map +1 -1
  903. package/server/infrastructure/websocket/adapters/cluster.adapter.js +1 -5
  904. package/server/infrastructure/websocket/adapters/cluster.adapter.js.map +1 -1
  905. package/server/infrastructure/websocket/adapters/redis.adapter.js +1 -5
  906. package/server/infrastructure/websocket/adapters/redis.adapter.js.map +1 -1
  907. package/server/infrastructure/websocket/adapters/web-socket.adapter.js +1 -5
  908. package/server/infrastructure/websocket/adapters/web-socket.adapter.js.map +1 -1
  909. package/server/infrastructure/websocket/decorators/web-socket-user.decorator.js +1 -5
  910. package/server/infrastructure/websocket/decorators/web-socket-user.decorator.js.map +1 -1
  911. package/server/infrastructure/websocket/interfaces/auth-socket-io.interface.js +1 -5
  912. package/server/infrastructure/websocket/interfaces/auth-socket-io.interface.js.map +1 -1
  913. package/server/infrastructure/websocket/utils.js +1 -5
  914. package/server/infrastructure/websocket/utils.js.map +1 -1
  915. package/server/infrastructure/websocket/web-socket.config.js +1 -5
  916. package/server/infrastructure/websocket/web-socket.config.js.map +1 -1
  917. package/server/main.js +5 -0
  918. package/server/main.js.map +1 -1
  919. package/static/assets/pdfjs/build/pdf.mjs +724 -745
  920. package/static/assets/pdfjs/build/pdf.mjs.map +1 -1
  921. package/static/assets/pdfjs/build/pdf.sandbox.mjs +2 -2
  922. package/static/assets/pdfjs/build/pdf.worker.mjs +706 -193
  923. package/static/assets/pdfjs/build/pdf.worker.mjs.map +1 -1
  924. package/static/assets/pdfjs/version +1 -1
  925. package/static/assets/pdfjs/web/locale/dsb/viewer.ftl +5 -5
  926. package/static/assets/pdfjs/web/locale/en-US/viewer.ftl +1 -0
  927. package/static/assets/pdfjs/web/locale/fur/viewer.ftl +5 -0
  928. package/static/assets/pdfjs/web/locale/kk/viewer.ftl +28 -0
  929. package/static/assets/pdfjs/web/locale/ml/viewer.ftl +4 -0
  930. package/static/assets/pdfjs/web/locale/ru/viewer.ftl +3 -3
  931. package/static/assets/pdfjs/web/viewer.css +207 -65
  932. package/static/assets/pdfjs/web/viewer.html +11 -10
  933. package/static/assets/pdfjs/web/viewer.mjs +850 -270
  934. package/static/assets/pdfjs/web/viewer.mjs.map +1 -1
  935. package/static/assets/pdfjs/web/wasm/LICENSE_JBIG2 +196 -0
  936. package/static/assets/pdfjs/web/wasm/LICENSE_PDFJS_JBIG2 +13 -0
  937. package/static/assets/pdfjs/web/wasm/jbig2.wasm +0 -0
  938. package/static/chunk-22TZP6HW.js +1 -0
  939. package/static/{chunk-G7TLKY5X.js → chunk-27ATUHBH.js} +1 -1
  940. package/static/{chunk-CQOQXVYG.js → chunk-2CKLZ3FM.js} +1 -1
  941. package/static/{chunk-FVFOX6OP.js → chunk-2QZPX7LO.js} +1 -1
  942. package/static/{chunk-32AVRWC3.js → chunk-2R6IBBPZ.js} +1 -1
  943. package/static/{chunk-76JDXKD7.js → chunk-4FIGEBNL.js} +1 -1
  944. package/static/{chunk-ACCGBDUZ.js → chunk-4P3JABAP.js} +4 -4
  945. package/static/chunk-5CZOSAMZ.js +1 -0
  946. package/static/{chunk-2PDTP6N4.js → chunk-677WUBCT.js} +1 -1
  947. package/static/{chunk-K5VO5XTG.js → chunk-74CAHBFM.js} +1 -1
  948. package/static/{chunk-WTWGBCFO.js → chunk-7GWW6MJO.js} +1 -1
  949. package/static/{chunk-JXZOYX4N.js → chunk-A4UGPSWX.js} +1 -1
  950. package/static/{chunk-44D7RWET.js → chunk-AHO37FKW.js} +1 -1
  951. package/static/{chunk-WB2DECOA.js → chunk-AQCXMKP3.js} +1 -1
  952. package/static/chunk-B6PDYCRO.js +3 -0
  953. package/static/{chunk-JVGN5V5E.js → chunk-CU76ATCF.js} +1 -1
  954. package/static/{chunk-Q5K4ZUHK.js → chunk-CWYHOPOP.js} +1 -1
  955. package/static/{chunk-IOX3ANJR.js → chunk-E5WI5725.js} +1 -1
  956. package/static/{chunk-NUG54Y65.js → chunk-FC5HTKVM.js} +1 -1
  957. package/static/{chunk-LRK6RNPR.js → chunk-FOSM7EYI.js} +1 -1
  958. package/static/{chunk-B4UP2EQM.js → chunk-GAZO25PI.js} +1 -1
  959. package/static/{chunk-3WBCGTYW.js → chunk-GB7ABR5N.js} +1 -1
  960. package/static/{chunk-XFZ37WVK.js → chunk-GEHFKZQ5.js} +1 -1
  961. package/static/{chunk-4CQLN5HL.js → chunk-GQFMWVFD.js} +1 -1
  962. package/static/{chunk-YBEH442D.js → chunk-GVNTC564.js} +1 -1
  963. package/static/{chunk-WO6GBHBZ.js → chunk-HGL3NYP2.js} +2 -2
  964. package/static/{chunk-IAWRRL6J.js → chunk-HLIWPWRA.js} +1 -1
  965. package/static/{chunk-6LHJBXUE.js → chunk-HNYB3M4S.js} +1 -1
  966. package/static/{chunk-5WTIUYFF.js → chunk-HUXAUQMN.js} +1 -1
  967. package/static/{chunk-VBH3Y2M5.js → chunk-I2XA6PPK.js} +1 -1
  968. package/static/{chunk-I3XI72AV.js → chunk-ISV3BO6R.js} +1 -1
  969. package/static/{chunk-P7X53PEP.js → chunk-JV3AGU5B.js} +1 -1
  970. package/static/{chunk-ZFAXICUH.js → chunk-K25E7YGG.js} +1 -1
  971. package/static/{chunk-CAD3RHAY.js → chunk-K46PUTZB.js} +1 -1
  972. package/static/{chunk-GYFLVCFN.js → chunk-KERFLJ56.js} +1 -7
  973. package/static/{chunk-WSTGWBVW.js → chunk-KJD3KFF3.js} +1 -1
  974. package/static/{chunk-R4P4NBUL.js → chunk-KPKSI23S.js} +1 -1
  975. package/static/{chunk-M7IFVC5D.js → chunk-KZS7CTNR.js} +1 -1
  976. package/static/{chunk-P2IJCGWD.js → chunk-L5IHUVXL.js} +1 -1
  977. package/static/{chunk-DXESTGOH.js → chunk-L7RRX2M3.js} +1 -1
  978. package/static/{chunk-WE3ISL7O.js → chunk-LGWJ2WKU.js} +1 -1
  979. package/static/{chunk-OKI3N5AI.js → chunk-MLC7JK2H.js} +2 -2
  980. package/static/{chunk-NG7QWUFM.js → chunk-MOHNYW2A.js} +1 -1
  981. package/static/{chunk-SQYWQUL4.js → chunk-NCDUOVMW.js} +1 -1
  982. package/static/chunk-NGUAJIGI.js +1 -0
  983. package/static/{chunk-OYPJUVD6.js → chunk-NIPP6JDI.js} +1 -1
  984. package/static/{chunk-Y433XOAJ.js → chunk-NMTBMHUL.js} +1 -1
  985. package/static/chunk-O4XXMZFX.js +4 -0
  986. package/static/{chunk-IOP3ON2H.js → chunk-OANZITPM.js} +1 -1
  987. package/static/{chunk-WJFKUJJX.js → chunk-OGE4SAHU.js} +1 -1
  988. package/static/{chunk-7EHP6HO3.js → chunk-OI3ME22C.js} +1 -1
  989. package/static/{chunk-D4XDSS6P.js → chunk-Q3EGCMF5.js} +1 -1
  990. package/static/{chunk-TQBCGNFG.js → chunk-QF2NSHZA.js} +1 -1
  991. package/static/{chunk-RBBMH2FM.js → chunk-QKN6LAAA.js} +1 -1
  992. package/static/{chunk-J45SD6RC.js → chunk-QRFESU5O.js} +2 -2
  993. package/static/chunk-QVRVFYJH.js +1 -0
  994. package/static/{chunk-BAHNSFET.js → chunk-RFJIPIOK.js} +1 -1
  995. package/static/{chunk-IZ7TCHUW.js → chunk-RLL634K4.js} +1 -1
  996. package/static/{chunk-MOWL3ILT.js → chunk-RS2OFKWP.js} +1 -1
  997. package/static/{chunk-WM56LPJ3.js → chunk-RWAAC3A4.js} +1 -1
  998. package/static/{chunk-F3GMI6OL.js → chunk-S5Y64DDS.js} +1 -1
  999. package/static/{chunk-VNNLMUK7.js → chunk-SLG5KDU6.js} +1 -1
  1000. package/static/chunk-TJ4CVFEL.js +1 -0
  1001. package/static/{chunk-SAN35XTD.js → chunk-TWCGKSYE.js} +1 -1
  1002. package/static/{chunk-EUKVDBBK.js → chunk-UMDRE4S7.js} +1 -1
  1003. package/static/{chunk-YKCUUBZP.js → chunk-VRIOLRYR.js} +4 -4
  1004. package/static/chunk-VS4O2XDP.js +1 -0
  1005. package/static/{chunk-2MRTBCSV.js → chunk-VSBFNFOM.js} +1 -1
  1006. package/static/{chunk-CTPKDDVI.js → chunk-WN4WXCVK.js} +1 -1
  1007. package/static/{chunk-2AA3WMW5.js → chunk-WX7RXW7K.js} +1 -1
  1008. package/static/{chunk-J2BUPRCZ.js → chunk-XC4POKR3.js} +2 -2
  1009. package/static/{chunk-AXLDYLIO.js → chunk-Y4AUYQTG.js} +1 -1
  1010. package/static/{chunk-RPHWIW7S.js → chunk-YMIXHRJQ.js} +1 -7
  1011. package/static/{chunk-AFNUBQMD.js → chunk-ZUNKFAKP.js} +1 -1
  1012. package/static/index.html +3 -3
  1013. package/static/main-QN4UCOC5.js +5 -0
  1014. package/static/{styles-PD6764CP.css → styles-46GLIE7Y.css} +1 -1
  1015. package/server/authentication/constants/auth-ldap.js.map +0 -1
  1016. package/server/authentication/dto/two-fa-verify.dto.js.map +0 -1
  1017. package/server/authentication/guards/auth-two-fa-guard.js.map +0 -1
  1018. package/server/authentication/interfaces/two-fa-setup.interface.js +0 -10
  1019. package/server/authentication/interfaces/two-fa-setup.interface.js.map +0 -1
  1020. package/server/authentication/models/auth-method.js +0 -18
  1021. package/server/authentication/models/auth-method.js.map +0 -1
  1022. package/server/authentication/services/auth-manager.service.js.map +0 -1
  1023. package/server/authentication/services/auth-manager.service.spec.js.map +0 -1
  1024. package/server/authentication/services/auth-methods/auth-method-database.service.js.map +0 -1
  1025. package/server/authentication/services/auth-methods/auth-method-database.service.spec.js.map +0 -1
  1026. package/server/authentication/services/auth-methods/auth-method-ldap.service.js +0 -326
  1027. package/server/authentication/services/auth-methods/auth-method-ldap.service.js.map +0 -1
  1028. package/server/authentication/services/auth-methods/auth-method-ldap.service.spec.js +0 -534
  1029. package/server/authentication/services/auth-methods/auth-method-ldap.service.spec.js.map +0 -1
  1030. package/server/authentication/services/auth-methods/auth-method-two-fa.service.js.map +0 -1
  1031. package/server/authentication/services/auth-methods/auth-method-two-fa.service.spec.js.map +0 -1
  1032. package/static/chunk-3I6NPM62.js +0 -1
  1033. package/static/chunk-GCPX3EFC.js +0 -1
  1034. package/static/chunk-KBUIDMCK.js +0 -1
  1035. package/static/chunk-KY6MNZLC.js +0 -1
  1036. package/static/chunk-MPWD4VMY.js +0 -1
  1037. package/static/chunk-QQAF3MLL.js +0 -1
  1038. package/static/chunk-VHZKPUWE.js +0 -4
  1039. package/static/chunk-YWLMFOB4.js +0 -3
  1040. package/static/main-ZXEMCBMI.js +0 -11
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../backend/src/infrastructure/mailer/interfaces/mail.interface.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 MailTransport {\n host: string\n port: number\n secure: boolean\n ignoreTLS: boolean\n auth: {\n user: string\n pass: string\n }\n debug?: boolean\n logger?: any\n}\n\nexport interface MailDefaultsTransport {\n from: string\n tls: {\n rejectUnauthorized: boolean\n }\n}\n\nexport interface MailProps {\n to: string\n subject: string\n html: string\n}\n"],"names":[],"mappings":"AAAA;;;;CAIC"}
1
+ {"version":3,"sources":["../../../../../backend/src/infrastructure/mailer/interfaces/mail.interface.ts"],"names":[],"mappings":""}
@@ -1,8 +1,4 @@
1
- /*
2
- * Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com>
3
- * This file is part of Sync-in | The open source file sync and share solution
4
- * See the LICENSE file for licensing details
5
- */ "use strict";
1
+ "use strict";
6
2
  Object.defineProperty(exports, "__esModule", {
7
3
  value: true
8
4
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../backend/src/infrastructure/mailer/mailer.config.ts"],"sourcesContent":["/*\n * Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com>\n * This file is part of Sync-in | The open source file sync and share solution\n * See the LICENSE file for licensing details\n */\n\nimport { Type } from 'class-transformer'\nimport { IsBoolean, IsInt, IsNotEmpty, IsObject, IsOptional, IsString, Max, Min, ValidateNested } from 'class-validator'\n\nexport class AuthMailConfig {\n @IsString()\n @IsNotEmpty()\n user: string\n\n @IsString()\n @IsNotEmpty()\n pass: string\n}\n\nexport class MailerConfig {\n @IsString()\n @IsNotEmpty()\n host: string\n\n @IsInt()\n @Min(0)\n @Max(65535)\n port: number = 25\n\n @IsOptional()\n @IsBoolean()\n secure?: boolean = false\n\n @IsOptional()\n @IsBoolean()\n ignoreTLS?: boolean = false\n\n @IsOptional()\n @IsBoolean()\n rejectUnauthorized?: boolean = false\n\n @IsOptional()\n @IsObject()\n @ValidateNested()\n @Type(() => AuthMailConfig)\n auth?: AuthMailConfig\n\n @IsOptional()\n @IsString()\n sender?: string = 'Sync-in<notification@sync-in.com>'\n\n @IsOptional()\n @IsBoolean()\n debug?: boolean = false\n\n @IsOptional()\n @IsBoolean()\n logger?: boolean = false\n}\n"],"names":["AuthMailConfig","MailerConfig","port","secure","ignoreTLS","rejectUnauthorized","sender","debug","logger"],"mappings":"AAAA;;;;CAIC;;;;;;;;;;;QAKYA;eAAAA;;QAUAC;eAAAA;;;kCAbQ;gCACkF;;;;;;;;;;AAEhG,IAAA,AAAMD,iBAAN,MAAMA;AAQb;;;;;;;;;;;AAEO,IAAA,AAAMC,eAAN,MAAMA;;aAQXC,OAAe;aAIfC,SAAmB;aAInBC,YAAsB;aAItBC,qBAA+B;aAU/BC,SAAkB;aAIlBC,QAAkB;aAIlBC,SAAmB;;AACrB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oCAdcR"}
1
+ {"version":3,"sources":["../../../../backend/src/infrastructure/mailer/mailer.config.ts"],"sourcesContent":["import { Type } from 'class-transformer'\nimport { IsBoolean, IsInt, IsNotEmpty, IsObject, IsOptional, IsString, Max, Min, ValidateNested } from 'class-validator'\n\nexport class AuthMailConfig {\n @IsString()\n @IsNotEmpty()\n user: string\n\n @IsString()\n @IsNotEmpty()\n pass: string\n}\n\nexport class MailerConfig {\n @IsString()\n @IsNotEmpty()\n host: string\n\n @IsInt()\n @Min(0)\n @Max(65535)\n port: number = 25\n\n @IsOptional()\n @IsBoolean()\n secure?: boolean = false\n\n @IsOptional()\n @IsBoolean()\n ignoreTLS?: boolean = false\n\n @IsOptional()\n @IsBoolean()\n rejectUnauthorized?: boolean = false\n\n @IsOptional()\n @IsObject()\n @ValidateNested()\n @Type(() => AuthMailConfig)\n auth?: AuthMailConfig\n\n @IsOptional()\n @IsString()\n sender?: string = 'Sync-in<notification@sync-in.com>'\n\n @IsOptional()\n @IsBoolean()\n debug?: boolean = false\n\n @IsOptional()\n @IsBoolean()\n logger?: boolean = false\n}\n"],"names":["AuthMailConfig","MailerConfig","port","secure","ignoreTLS","rejectUnauthorized","sender","debug","logger"],"mappings":";;;;;;;;;;;QAGaA;eAAAA;;QAUAC;eAAAA;;;kCAbQ;gCACkF;;;;;;;;;;AAEhG,IAAA,AAAMD,iBAAN,MAAMA;AAQb;;;;;;;;;;;AAEO,IAAA,AAAMC,eAAN,MAAMA;;aAQXC,OAAe;aAIfC,SAAmB;aAInBC,YAAsB;aAItBC,qBAA+B;aAU/BC,SAAkB;aAIlBC,QAAkB;aAIlBC,SAAmB;;AACrB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oCAdcR"}
@@ -1,8 +1,4 @@
1
- /*
2
- * Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com>
3
- * This file is part of Sync-in | The open source file sync and share solution
4
- * See the LICENSE file for licensing details
5
- */ "use strict";
1
+ "use strict";
6
2
  Object.defineProperty(exports, "__esModule", {
7
3
  value: true
8
4
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../backend/src/infrastructure/mailer/mailer.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 { Global, Module } from '@nestjs/common'\nimport { Mailer } from './mailer.service'\n\n@Global()\n@Module({\n providers: [Mailer],\n exports: [Mailer]\n})\nexport class MailerModule {}\n"],"names":["MailerModule","providers","Mailer","exports"],"mappings":"AAAA;;;;CAIC;;;;+BAUYA;;;eAAAA;;;wBARkB;+BACR;;;;;;;AAOhB,IAAA,AAAMA,eAAN,MAAMA;AAAc;;;;QAHzBC,WAAW;YAACC,qBAAM;SAAC;QACnBC,SAAS;YAACD,qBAAM;SAAC"}
1
+ {"version":3,"sources":["../../../../backend/src/infrastructure/mailer/mailer.module.ts"],"sourcesContent":["import { Global, Module } from '@nestjs/common'\nimport { Mailer } from './mailer.service'\n\n@Global()\n@Module({\n providers: [Mailer],\n exports: [Mailer]\n})\nexport class MailerModule {}\n"],"names":["MailerModule","providers","Mailer","exports"],"mappings":";;;;+BAQaA;;;eAAAA;;;wBARkB;+BACR;;;;;;;AAOhB,IAAA,AAAMA,eAAN,MAAMA;AAAc;;;;QAHzBC,WAAW;YAACC,qBAAM;SAAC;QACnBC,SAAS;YAACD,qBAAM;SAAC"}
@@ -1,8 +1,4 @@
1
- /*
2
- * Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com>
3
- * This file is part of Sync-in | The open source file sync and share solution
4
- * See the LICENSE file for licensing details
5
- */ "use strict";
1
+ "use strict";
6
2
  Object.defineProperty(exports, "__esModule", {
7
3
  value: true
8
4
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../backend/src/infrastructure/mailer/mailer.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 { ConfigService } from '@nestjs/config'\nimport { PinoLogger } from 'nestjs-pino'\nimport nodemailer from 'nodemailer'\nimport type { Logger as NodeMailLogger } from 'nodemailer/lib/shared'\nimport { MailDefaultsTransport, MailProps, MailTransport } from './interfaces/mail.interface'\nimport { MailerConfig } from './mailer.config'\n\n@Injectable()\nexport class Mailer {\n public available: boolean = false\n private readonly transporter: nodemailer.Transporter\n private readonly configuration: MailerConfig\n\n constructor(\n private configService: ConfigService,\n private readonly logger: PinoLogger\n ) {\n this.logger.setContext(Mailer.name.toUpperCase())\n this.configuration = this.configService.get<MailerConfig>('mail')\n if (!this.configuration) {\n return\n }\n this.logger.logger.level = this.configuration.debug ? 'debug' : 'info'\n if (this.configuration.secure && (this.configuration.port === 587 || this.configuration.port === 25)) {\n this.logger.warn(`Secure transport has been disabled due to use of port : ${this.configuration.port}`)\n this.configuration.secure = false\n }\n this.transporter = nodemailer.createTransport(\n {\n host: this.configuration.host,\n port: this.configuration.port,\n auth: this.configuration.auth,\n secure: this.configuration.secure,\n ignoreTLS: this.configuration.ignoreTLS,\n logger: this.configuration.logger ? (this.logger as NodeMailLogger & any) : false\n } satisfies MailTransport,\n { from: this.configuration.sender, tls: { rejectUnauthorized: this.configuration.rejectUnauthorized } } satisfies MailDefaultsTransport\n )\n this.verify().catch(this.logger.error)\n }\n\n async sendMails(mails: MailProps[]) {\n if (!this.available) {\n return\n }\n for (const m of mails) {\n this.transporter\n .sendMail(m)\n .then(() => {\n this.logger.info(`Mail sent to '${m.to}' with subject '${m.subject}'`)\n })\n .catch((e) => {\n this.logger.error(`Mail was not sent to '${m.to}' with subject '${m.subject}' : ${e}`)\n })\n }\n }\n\n private async verify(): Promise<void> {\n try {\n await this.transporter.verify()\n this.logger.info(`Using Mail Server at ${this.configuration.host}:${this.configuration.port} (secure: ${this.configuration.secure})`)\n this.available = true\n } catch (e) {\n this.logger.error(\n `Unable to use Mail Server at ${this.configuration.host}:${this.configuration.port} (secure: ${this.configuration.secure}) : ${e}`\n )\n this.available = false\n }\n }\n}\n"],"names":["Mailer","sendMails","mails","available","m","transporter","sendMail","then","logger","info","to","subject","catch","e","error","verify","configuration","host","port","secure","configService","setContext","name","toUpperCase","get","level","debug","warn","nodemailer","createTransport","auth","ignoreTLS","from","sender","tls","rejectUnauthorized"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../backend/src/infrastructure/mailer/mailer.service.ts"],"sourcesContent":["import { Injectable } from '@nestjs/common'\nimport { ConfigService } from '@nestjs/config'\nimport { PinoLogger } from 'nestjs-pino'\nimport nodemailer from 'nodemailer'\nimport type { Logger as NodeMailLogger } from 'nodemailer/lib/shared'\nimport { MailDefaultsTransport, MailProps, MailTransport } from './interfaces/mail.interface'\nimport { MailerConfig } from './mailer.config'\n\n@Injectable()\nexport class Mailer {\n public available: boolean = false\n private readonly transporter: nodemailer.Transporter\n private readonly configuration: MailerConfig\n\n constructor(\n private configService: ConfigService,\n private readonly logger: PinoLogger\n ) {\n this.logger.setContext(Mailer.name.toUpperCase())\n this.configuration = this.configService.get<MailerConfig>('mail')\n if (!this.configuration) {\n return\n }\n this.logger.logger.level = this.configuration.debug ? 'debug' : 'info'\n if (this.configuration.secure && (this.configuration.port === 587 || this.configuration.port === 25)) {\n this.logger.warn(`Secure transport has been disabled due to use of port : ${this.configuration.port}`)\n this.configuration.secure = false\n }\n this.transporter = nodemailer.createTransport(\n {\n host: this.configuration.host,\n port: this.configuration.port,\n auth: this.configuration.auth,\n secure: this.configuration.secure,\n ignoreTLS: this.configuration.ignoreTLS,\n logger: this.configuration.logger ? (this.logger as NodeMailLogger & any) : false\n } satisfies MailTransport,\n { from: this.configuration.sender, tls: { rejectUnauthorized: this.configuration.rejectUnauthorized } } satisfies MailDefaultsTransport\n )\n this.verify().catch(this.logger.error)\n }\n\n async sendMails(mails: MailProps[]) {\n if (!this.available) {\n return\n }\n for (const m of mails) {\n this.transporter\n .sendMail(m)\n .then(() => {\n this.logger.info(`Mail sent to '${m.to}' with subject '${m.subject}'`)\n })\n .catch((e) => {\n this.logger.error(`Mail was not sent to '${m.to}' with subject '${m.subject}' : ${e}`)\n })\n }\n }\n\n private async verify(): Promise<void> {\n try {\n await this.transporter.verify()\n this.logger.info(`Using Mail Server at ${this.configuration.host}:${this.configuration.port} (secure: ${this.configuration.secure})`)\n this.available = true\n } catch (e) {\n this.logger.error(\n `Unable to use Mail Server at ${this.configuration.host}:${this.configuration.port} (secure: ${this.configuration.secure}) : ${e}`\n )\n this.available = false\n }\n }\n}\n"],"names":["Mailer","sendMails","mails","available","m","transporter","sendMail","then","logger","info","to","subject","catch","e","error","verify","configuration","host","port","secure","configService","setContext","name","toUpperCase","get","level","debug","warn","nodemailer","createTransport","auth","ignoreTLS","from","sender","tls","rejectUnauthorized"],"mappings":"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"}
@@ -1,13 +1,9 @@
1
- /*
2
- * Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com>
3
- * This file is part of Sync-in | The open source file sync and share solution
4
- * See the LICENSE file for licensing details
5
- */ "use strict";
1
+ "use strict";
6
2
  Object.defineProperty(exports, "__esModule", {
7
3
  value: true
8
4
  });
9
- const _testing = require("@nestjs/testing");
10
5
  const _config = require("@nestjs/config");
6
+ const _testing = require("@nestjs/testing");
11
7
  const _nestjspino = require("nestjs-pino");
12
8
  const _nodemailer = /*#__PURE__*/ _interop_require_default(require("nodemailer"));
13
9
  const _mailerservice = require("./mailer.service");
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../backend/src/infrastructure/mailer/mailer.service.spec.ts"],"sourcesContent":["/*\n * Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com>\n * This file is part of Sync-in | The open source file sync and share solution\n * See the LICENSE file for licensing details\n */\n\nimport { Test, TestingModule } from '@nestjs/testing'\nimport { ConfigService } from '@nestjs/config'\nimport { PinoLogger } from 'nestjs-pino'\nimport nodemailer from 'nodemailer'\nimport { Mailer } from './mailer.service'\nimport { MailerConfig } from './mailer.config'\n\n// Mocks\njest.mock('nodemailer')\nconst createTransportMock = {\n verify: jest.fn().mockResolvedValue(true),\n sendMail: jest.fn().mockResolvedValue(true)\n}\n;(nodemailer.createTransport as jest.Mock).mockReturnValue(createTransportMock)\n\ndescribe(Mailer.name, () => {\n let module: TestingModule\n let mailer: Mailer\n let configService: ConfigService\n let logger: PinoLogger\n\n const mailerConfig: MailerConfig = {\n host: 'smtp.example.com',\n port: 587,\n auth: { user: 'user', pass: 'pass' },\n secure: false,\n sender: 'noreply@example.com',\n debug: false,\n logger: false\n }\n\n const initModule = async (config: MailerConfig | undefined) => {\n module = await Test.createTestingModule({\n providers: [\n Mailer,\n { provide: ConfigService, useValue: { get: jest.fn().mockReturnValue(config) } },\n {\n provide: PinoLogger,\n useValue: {\n setContext: jest.fn(),\n warn: jest.fn(),\n error: jest.fn(),\n info: jest.fn(),\n assign: jest.fn(),\n logger: { level: 'info' }\n }\n }\n ]\n }).compile()\n\n mailer = module.get<Mailer>(Mailer)\n configService = module.get<ConfigService>(ConfigService)\n logger = module.get<PinoLogger>(PinoLogger)\n }\n\n beforeAll(async () => {\n await initModule(undefined)\n })\n\n it('should be defined', () => {\n expect(module).toBeDefined()\n expect(mailer).toBeDefined()\n expect(configService).toBeDefined()\n expect(logger).toBeDefined()\n })\n\n it('should not initialize transporter if config is absent', () => {\n expect(mailer['transport']).toBeUndefined()\n expect(nodemailer.createTransport).not.toHaveBeenCalled()\n })\n\n it('should initialize secure transport with no secure port', async () => {\n await initModule({ ...mailerConfig, secure: true })\n expect(mailer['configuration'].secure).toBe(false)\n await initModule({ ...mailerConfig, port: 25, secure: true, logger: true, debug: true })\n expect(mailer['configuration'].secure).toBe(false)\n const loggerWarnSpy = jest.spyOn(logger, 'warn')\n expect(loggerWarnSpy).toHaveBeenCalledWith(expect.stringMatching(/has been disabled/i))\n loggerWarnSpy.mockClear()\n })\n\n it('should set mailer availability to false if transport failed', async () => {\n createTransportMock.verify.mockRejectedValueOnce(new Error('Mail Server down'))\n await initModule(mailerConfig)\n expect(mailer.available).toBe(false)\n const loggerErrorSpy = jest.spyOn(logger, 'error')\n expect(loggerErrorSpy).toHaveBeenCalledWith(expect.stringMatching(/mail server down/i))\n loggerErrorSpy.mockClear()\n })\n\n it('should initialize transporter if config exists', async () => {\n // Reinstantiate the module and the services\n await initModule(mailerConfig)\n expect(nodemailer.createTransport).toHaveBeenCalledWith(\n expect.objectContaining({\n host: mailerConfig.host,\n port: mailerConfig.port,\n auth: mailerConfig.auth,\n secure: mailerConfig.secure\n }),\n expect.objectContaining({\n from: mailerConfig.sender\n })\n )\n })\n\n it('should send mails when available', async () => {\n mailer.available = true\n await mailer.sendMails([{ to: 'test@example.com', subject: 'Hello', html: 'world' }])\n expect(createTransportMock.sendMail).toHaveBeenCalledWith(expect.objectContaining({ to: 'test@example.com' }))\n createTransportMock.sendMail.mockClear()\n })\n\n it('should not send mails when not available', async () => {\n mailer.available = false\n await mailer.sendMails([{ to: 'test@example.com', subject: 'Hello', html: 'world' }])\n expect(createTransportMock.sendMail).not.toHaveBeenCalled()\n createTransportMock.sendMail.mockClear()\n })\n\n it('should continue sending remaining mails if one send fails and log error', async () => {\n mailer.available = true\n // first call rejects, second resolves\n createTransportMock.sendMail.mockRejectedValueOnce(new Error('SMTP down')).mockResolvedValueOnce(true)\n await mailer.sendMails([\n { to: 'fail@example.com', subject: 'One', html: '1' },\n { to: 'ok@example.com', subject: 'Two', html: '2' }\n ])\n\n expect(createTransportMock.sendMail).toHaveBeenCalledTimes(2)\n expect(createTransportMock.sendMail).toHaveBeenNthCalledWith(1, expect.objectContaining({ to: 'fail@example.com' }))\n expect(createTransportMock.sendMail).toHaveBeenNthCalledWith(2, expect.objectContaining({ to: 'ok@example.com' }))\n createTransportMock.sendMail.mockClear()\n })\n})\n"],"names":["jest","mock","createTransportMock","verify","fn","mockResolvedValue","sendMail","nodemailer","createTransport","mockReturnValue","describe","Mailer","name","module","mailer","configService","logger","mailerConfig","host","port","auth","user","pass","secure","sender","debug","initModule","config","Test","createTestingModule","providers","provide","ConfigService","useValue","get","PinoLogger","setContext","warn","error","info","assign","level","compile","beforeAll","undefined","it","expect","toBeDefined","toBeUndefined","not","toHaveBeenCalled","toBe","loggerWarnSpy","spyOn","toHaveBeenCalledWith","stringMatching","mockClear","mockRejectedValueOnce","Error","available","loggerErrorSpy","objectContaining","from","sendMails","to","subject","html","mockResolvedValueOnce","toHaveBeenCalledTimes","toHaveBeenNthCalledWith"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../backend/src/infrastructure/mailer/mailer.service.spec.ts"],"sourcesContent":["import { ConfigService } from '@nestjs/config'\nimport { Test, TestingModule } from '@nestjs/testing'\nimport { PinoLogger } from 'nestjs-pino'\nimport nodemailer from 'nodemailer'\nimport { MailerConfig } from './mailer.config'\nimport { Mailer } from './mailer.service'\n\n// Mocks\njest.mock('nodemailer')\nconst createTransportMock = {\n verify: jest.fn().mockResolvedValue(true),\n sendMail: jest.fn().mockResolvedValue(true)\n}\n;(nodemailer.createTransport as jest.Mock).mockReturnValue(createTransportMock)\n\ndescribe(Mailer.name, () => {\n let module: TestingModule\n let mailer: Mailer\n let configService: ConfigService\n let logger: PinoLogger\n\n const mailerConfig: MailerConfig = {\n host: 'smtp.example.com',\n port: 587,\n auth: { user: 'user', pass: 'pass' },\n secure: false,\n sender: 'noreply@example.com',\n debug: false,\n logger: false\n }\n\n const initModule = async (config: MailerConfig | undefined) => {\n module = await Test.createTestingModule({\n providers: [\n Mailer,\n { provide: ConfigService, useValue: { get: jest.fn().mockReturnValue(config) } },\n {\n provide: PinoLogger,\n useValue: {\n setContext: jest.fn(),\n warn: jest.fn(),\n error: jest.fn(),\n info: jest.fn(),\n assign: jest.fn(),\n logger: { level: 'info' }\n }\n }\n ]\n }).compile()\n\n mailer = module.get<Mailer>(Mailer)\n configService = module.get<ConfigService>(ConfigService)\n logger = module.get<PinoLogger>(PinoLogger)\n }\n\n beforeAll(async () => {\n await initModule(undefined)\n })\n\n it('should be defined', () => {\n expect(module).toBeDefined()\n expect(mailer).toBeDefined()\n expect(configService).toBeDefined()\n expect(logger).toBeDefined()\n })\n\n it('should not initialize transporter if config is absent', () => {\n expect(mailer['transport']).toBeUndefined()\n expect(nodemailer.createTransport).not.toHaveBeenCalled()\n })\n\n it('should initialize secure transport with no secure port', async () => {\n await initModule({ ...mailerConfig, secure: true })\n expect(mailer['configuration'].secure).toBe(false)\n await initModule({ ...mailerConfig, port: 25, secure: true, logger: true, debug: true })\n expect(mailer['configuration'].secure).toBe(false)\n const loggerWarnSpy = jest.spyOn(logger, 'warn')\n expect(loggerWarnSpy).toHaveBeenCalledWith(expect.stringMatching(/has been disabled/i))\n loggerWarnSpy.mockClear()\n })\n\n it('should set mailer availability to false if transport failed', async () => {\n createTransportMock.verify.mockRejectedValueOnce(new Error('Mail Server down'))\n await initModule(mailerConfig)\n expect(mailer.available).toBe(false)\n const loggerErrorSpy = jest.spyOn(logger, 'error')\n expect(loggerErrorSpy).toHaveBeenCalledWith(expect.stringMatching(/mail server down/i))\n loggerErrorSpy.mockClear()\n })\n\n it('should initialize transporter if config exists', async () => {\n // Reinstantiate the module and the services\n await initModule(mailerConfig)\n expect(nodemailer.createTransport).toHaveBeenCalledWith(\n expect.objectContaining({\n host: mailerConfig.host,\n port: mailerConfig.port,\n auth: mailerConfig.auth,\n secure: mailerConfig.secure\n }),\n expect.objectContaining({\n from: mailerConfig.sender\n })\n )\n })\n\n it('should send mails when available', async () => {\n mailer.available = true\n await mailer.sendMails([{ to: 'test@example.com', subject: 'Hello', html: 'world' }])\n expect(createTransportMock.sendMail).toHaveBeenCalledWith(expect.objectContaining({ to: 'test@example.com' }))\n createTransportMock.sendMail.mockClear()\n })\n\n it('should not send mails when not available', async () => {\n mailer.available = false\n await mailer.sendMails([{ to: 'test@example.com', subject: 'Hello', html: 'world' }])\n expect(createTransportMock.sendMail).not.toHaveBeenCalled()\n createTransportMock.sendMail.mockClear()\n })\n\n it('should continue sending remaining mails if one send fails and log error', async () => {\n mailer.available = true\n // first call rejects, second resolves\n createTransportMock.sendMail.mockRejectedValueOnce(new Error('SMTP down')).mockResolvedValueOnce(true)\n await mailer.sendMails([\n { to: 'fail@example.com', subject: 'One', html: '1' },\n { to: 'ok@example.com', subject: 'Two', html: '2' }\n ])\n\n expect(createTransportMock.sendMail).toHaveBeenCalledTimes(2)\n expect(createTransportMock.sendMail).toHaveBeenNthCalledWith(1, expect.objectContaining({ to: 'fail@example.com' }))\n expect(createTransportMock.sendMail).toHaveBeenNthCalledWith(2, expect.objectContaining({ to: 'ok@example.com' }))\n createTransportMock.sendMail.mockClear()\n })\n})\n"],"names":["jest","mock","createTransportMock","verify","fn","mockResolvedValue","sendMail","nodemailer","createTransport","mockReturnValue","describe","Mailer","name","module","mailer","configService","logger","mailerConfig","host","port","auth","user","pass","secure","sender","debug","initModule","config","Test","createTestingModule","providers","provide","ConfigService","useValue","get","PinoLogger","setContext","warn","error","info","assign","level","compile","beforeAll","undefined","it","expect","toBeDefined","toBeUndefined","not","toHaveBeenCalled","toBe","loggerWarnSpy","spyOn","toHaveBeenCalledWith","stringMatching","mockClear","mockRejectedValueOnce","Error","available","loggerErrorSpy","objectContaining","from","sendMails","to","subject","html","mockResolvedValueOnce","toHaveBeenCalledTimes","toHaveBeenNthCalledWith"],"mappings":"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"}
@@ -1,8 +1,4 @@
1
- /*
2
- * Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com>
3
- * This file is part of Sync-in | The open source file sync and share solution
4
- * See the LICENSE file for licensing details
5
- */ "use strict";
1
+ "use strict";
6
2
  Object.defineProperty(exports, "__esModule", {
7
3
  value: true
8
4
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../backend/src/infrastructure/scheduler/scheduler.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 SCHEDULER_ENV = 'SCHEDULER'\n\nexport enum SCHEDULER_STATE {\n ENABLED = 'enabled',\n DISABLED = 'disabled'\n}\n"],"names":["SCHEDULER_ENV","SCHEDULER_STATE"],"mappings":"AAAA;;;;CAIC;;;;;;;;;;;QAEYA;eAAAA;;QAEDC;eAAAA;;;AAFL,MAAMD,gBAAgB;AAEtB,IAAA,AAAKC,yCAAAA;;;WAAAA"}
1
+ {"version":3,"sources":["../../../../backend/src/infrastructure/scheduler/scheduler.constants.ts"],"sourcesContent":["export const SCHEDULER_ENV = 'SCHEDULER'\n\nexport enum SCHEDULER_STATE {\n ENABLED = 'enabled',\n DISABLED = 'disabled'\n}\n"],"names":["SCHEDULER_ENV","SCHEDULER_STATE"],"mappings":";;;;;;;;;;;QAAaA;eAAAA;;QAEDC;eAAAA;;;AAFL,MAAMD,gBAAgB;AAEtB,IAAA,AAAKC,yCAAAA;;;WAAAA"}
@@ -1,8 +1,4 @@
1
- /*
2
- * Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com>
3
- * This file is part of Sync-in | The open source file sync and share solution
4
- * See the LICENSE file for licensing details
5
- */ "use strict";
1
+ "use strict";
6
2
  Object.defineProperty(exports, "__esModule", {
7
3
  value: true
8
4
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../backend/src/infrastructure/scheduler/scheduler.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 { DynamicModule, Module } from '@nestjs/common'\nimport { ScheduleModule as NestScheduleModule } from '@nestjs/schedule'\nimport cluster from 'node:cluster'\nimport { SCHEDULER_ENV, SCHEDULER_STATE } from './scheduler.constants'\n\n@Module({})\nexport class SchedulerModule {\n static register(): DynamicModule {\n if (cluster.isWorker && process.env[SCHEDULER_ENV] === SCHEDULER_STATE.ENABLED) {\n return {\n global: true,\n module: SchedulerModule,\n imports: [NestScheduleModule.forRoot()]\n }\n } else {\n // do not initialize the ScheduleModule dependency; all calls to Interval, Cron ... will be ignored\n return { module: SchedulerModule }\n }\n }\n}\n"],"names":["SchedulerModule","register","cluster","isWorker","process","env","SCHEDULER_ENV","SCHEDULER_STATE","ENABLED","global","module","imports","NestScheduleModule","forRoot"],"mappings":"AAAA;;;;CAIC;;;;+BAQYA;;;eAAAA;;;wBANyB;0BACe;oEACjC;oCAC2B;;;;;;;;;;;;AAGxC,IAAA,AAAMA,kBAAN,MAAMA;IACX,OAAOC,WAA0B;QAC/B,IAAIC,oBAAO,CAACC,QAAQ,IAAIC,QAAQC,GAAG,CAACC,iCAAa,CAAC,KAAKC,mCAAe,CAACC,OAAO,EAAE;YAC9E,OAAO;gBACLC,QAAQ;gBACRC,QAAQV;gBACRW,SAAS;oBAACC,wBAAkB,CAACC,OAAO;iBAAG;YACzC;QACF,OAAO;YACL,mGAAmG;YACnG,OAAO;gBAAEH,QAAQV;YAAgB;QACnC;IACF;AACF"}
1
+ {"version":3,"sources":["../../../../backend/src/infrastructure/scheduler/scheduler.module.ts"],"sourcesContent":["import { DynamicModule, Module } from '@nestjs/common'\nimport { ScheduleModule as NestScheduleModule } from '@nestjs/schedule'\nimport cluster from 'node:cluster'\nimport { SCHEDULER_ENV, SCHEDULER_STATE } from './scheduler.constants'\n\n@Module({})\nexport class SchedulerModule {\n static register(): DynamicModule {\n if (cluster.isWorker && process.env[SCHEDULER_ENV] === SCHEDULER_STATE.ENABLED) {\n return {\n global: true,\n module: SchedulerModule,\n imports: [NestScheduleModule.forRoot()]\n }\n } else {\n // do not initialize the ScheduleModule dependency; all calls to Interval, Cron ... will be ignored\n return { module: SchedulerModule }\n }\n }\n}\n"],"names":["SchedulerModule","register","cluster","isWorker","process","env","SCHEDULER_ENV","SCHEDULER_STATE","ENABLED","global","module","imports","NestScheduleModule","forRoot"],"mappings":";;;;+BAMaA;;;eAAAA;;;wBANyB;0BACe;oEACjC;oCAC2B;;;;;;;;;;;;AAGxC,IAAA,AAAMA,kBAAN,MAAMA;IACX,OAAOC,WAA0B;QAC/B,IAAIC,oBAAO,CAACC,QAAQ,IAAIC,QAAQC,GAAG,CAACC,iCAAa,CAAC,KAAKC,mCAAe,CAACC,OAAO,EAAE;YAC9E,OAAO;gBACLC,QAAQ;gBACRC,QAAQV;gBACRW,SAAS;oBAACC,wBAAkB,CAACC,OAAO;iBAAG;YACzC;QACF,OAAO;YACL,mGAAmG;YACnG,OAAO;gBAAEH,QAAQV;YAAgB;QACnC;IACF;AACF"}
@@ -1,8 +1,4 @@
1
- /*
2
- * Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com>
3
- * This file is part of Sync-in | The open source file sync and share solution
4
- * See the LICENSE file for licensing details
5
- */ "use strict";
1
+ "use strict";
6
2
  Object.defineProperty(exports, "__esModule", {
7
3
  value: true
8
4
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../backend/src/infrastructure/websocket/adapters/cluster.adapter.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 { IoAdapter } from '@nestjs/platform-socket.io'\nimport { createAdapter } from '@socket.io/cluster-adapter'\nimport { ServerOptions } from 'socket.io'\n\n@Injectable()\nexport class ClusterAdapter extends IoAdapter {\n createIOServer(port: number, options?: ServerOptions): any {\n const server = super.createIOServer(port, options)\n // Prevent the connection from closing too early when NestJS shutdown hooks are enabled, which can cause errors on exit\n server.close = () => void 0\n const adapter: ReturnType<typeof createAdapter> = createAdapter()\n server.adapter(adapter)\n return server\n }\n}\n"],"names":["ClusterAdapter","IoAdapter","createIOServer","port","options","server","close","adapter","createAdapter"],"mappings":"AAAA;;;;CAIC;;;;+BAQYA;;;eAAAA;;;wBANc;kCACD;gCACI;;;;;;;AAIvB,IAAA,AAAMA,iBAAN,MAAMA,uBAAuBC,2BAAS;IAC3CC,eAAeC,IAAY,EAAEC,OAAuB,EAAO;QACzD,MAAMC,SAAS,KAAK,CAACH,eAAeC,MAAMC;QAC1C,uHAAuH;QACvHC,OAAOC,KAAK,GAAG,IAAM,KAAK;QAC1B,MAAMC,UAA4CC,IAAAA,6BAAa;QAC/DH,OAAOE,OAAO,CAACA;QACf,OAAOF;IACT;AACF"}
1
+ {"version":3,"sources":["../../../../../backend/src/infrastructure/websocket/adapters/cluster.adapter.ts"],"sourcesContent":["import { Injectable } from '@nestjs/common'\nimport { IoAdapter } from '@nestjs/platform-socket.io'\nimport { createAdapter } from '@socket.io/cluster-adapter'\nimport { ServerOptions } from 'socket.io'\n\n@Injectable()\nexport class ClusterAdapter extends IoAdapter {\n createIOServer(port: number, options?: ServerOptions): any {\n const server = super.createIOServer(port, options)\n // Prevent the connection from closing too early when NestJS shutdown hooks are enabled, which can cause errors on exit\n server.close = () => void 0\n const adapter: ReturnType<typeof createAdapter> = createAdapter()\n server.adapter(adapter)\n return server\n }\n}\n"],"names":["ClusterAdapter","IoAdapter","createIOServer","port","options","server","close","adapter","createAdapter"],"mappings":";;;;+BAMaA;;;eAAAA;;;wBANc;kCACD;gCACI;;;;;;;AAIvB,IAAA,AAAMA,iBAAN,MAAMA,uBAAuBC,2BAAS;IAC3CC,eAAeC,IAAY,EAAEC,OAAuB,EAAO;QACzD,MAAMC,SAAS,KAAK,CAACH,eAAeC,MAAMC;QAC1C,uHAAuH;QACvHC,OAAOC,KAAK,GAAG,IAAM,KAAK;QAC1B,MAAMC,UAA4CC,IAAAA,6BAAa;QAC/DH,OAAOE,OAAO,CAACA;QACf,OAAOF;IACT;AACF"}
@@ -1,8 +1,4 @@
1
- /*
2
- * Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com>
3
- * This file is part of Sync-in | The open source file sync and share solution
4
- * See the LICENSE file for licensing details
5
- */ "use strict";
1
+ "use strict";
6
2
  Object.defineProperty(exports, "__esModule", {
7
3
  value: true
8
4
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../backend/src/infrastructure/websocket/adapters/redis.adapter.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 { Logger } from '@nestjs/common'\nimport { IoAdapter } from '@nestjs/platform-socket.io'\nimport { ServerOptions } from 'socket.io'\nimport { loadOptionalModule } from '../../../common/functions'\n\nexport class RedisAdapter extends IoAdapter {\n private readonly logger = new Logger('WebSocketAdapter')\n private adapterConstructor: any\n private readonly reconnectOptions = { maxAttempts: 3, minConnectDelay: 6000, maxConnectDelay: 30000 }\n private readonly reconnectStrategy = (attempts: number): number => {\n if (attempts > this.reconnectOptions.maxAttempts) {\n this.logger.error('Too many retries on Redis server. Exiting')\n process.exit()\n } else {\n const wait: number = Math.min(this.reconnectOptions.minConnectDelay * Math.pow(2, attempts), this.reconnectOptions.maxConnectDelay)\n this.logger.warn(`Retrying connection to Redis server in ${wait / 1000}s`)\n return wait\n }\n }\n\n async connectToRedis(redisUrl: string): Promise<void> {\n const { createAdapter } = await loadOptionalModule('@socket.io/redis-adapter')\n const { createClient } = await loadOptionalModule('redis')\n const pubClient = createClient({ url: redisUrl, socket: { noDelay: true, reconnectStrategy: this.reconnectStrategy } })\n const subClient = pubClient.duplicate()\n pubClient.on('error', (e: Error) => this.logger.error(`PubClient: ${e.message || e}`))\n pubClient.on('ready', () => this.logger.log(`PubClient: Connected to Redis Server at ${pubClient.options.url}`))\n subClient.on('error', (e: Error) => this.logger.error(`SubClient: ${e.message || e}`))\n subClient.on('ready', () => this.logger.log(`SubClient: Connected to Redis Server at ${subClient.options.url}`))\n pubClient.connect()\n subClient.connect()\n this.adapterConstructor = createAdapter(pubClient, subClient)\n }\n\n createIOServer(port: number, options?: ServerOptions): any {\n const server = super.createIOServer(port, options)\n server.adapter(this.adapterConstructor)\n return server\n }\n}\n"],"names":["RedisAdapter","IoAdapter","connectToRedis","redisUrl","createAdapter","loadOptionalModule","createClient","pubClient","url","socket","noDelay","reconnectStrategy","subClient","duplicate","on","e","logger","error","message","log","options","connect","adapterConstructor","createIOServer","port","server","adapter","Logger","reconnectOptions","maxAttempts","minConnectDelay","maxConnectDelay","attempts","process","exit","wait","Math","min","pow","warn"],"mappings":"AAAA;;;;CAIC;;;;+BAOYA;;;eAAAA;;;wBALU;kCACG;2BAES;AAE5B,IAAA,AAAMA,eAAN,MAAMA,qBAAqBC,2BAAS;IAezC,MAAMC,eAAeC,QAAgB,EAAiB;QACpD,MAAM,EAAEC,aAAa,EAAE,GAAG,MAAMC,IAAAA,6BAAkB,EAAC;QACnD,MAAM,EAAEC,YAAY,EAAE,GAAG,MAAMD,IAAAA,6BAAkB,EAAC;QAClD,MAAME,YAAYD,aAAa;YAAEE,KAAKL;YAAUM,QAAQ;gBAAEC,SAAS;gBAAMC,mBAAmB,IAAI,CAACA,iBAAiB;YAAC;QAAE;QACrH,MAAMC,YAAYL,UAAUM,SAAS;QACrCN,UAAUO,EAAE,CAAC,SAAS,CAACC,IAAa,IAAI,CAACC,MAAM,CAACC,KAAK,CAAC,CAAC,WAAW,EAAEF,EAAEG,OAAO,IAAIH,GAAG;QACpFR,UAAUO,EAAE,CAAC,SAAS,IAAM,IAAI,CAACE,MAAM,CAACG,GAAG,CAAC,CAAC,wCAAwC,EAAEZ,UAAUa,OAAO,CAACZ,GAAG,EAAE;QAC9GI,UAAUE,EAAE,CAAC,SAAS,CAACC,IAAa,IAAI,CAACC,MAAM,CAACC,KAAK,CAAC,CAAC,WAAW,EAAEF,EAAEG,OAAO,IAAIH,GAAG;QACpFH,UAAUE,EAAE,CAAC,SAAS,IAAM,IAAI,CAACE,MAAM,CAACG,GAAG,CAAC,CAAC,wCAAwC,EAAEP,UAAUQ,OAAO,CAACZ,GAAG,EAAE;QAC9GD,UAAUc,OAAO;QACjBT,UAAUS,OAAO;QACjB,IAAI,CAACC,kBAAkB,GAAGlB,cAAcG,WAAWK;IACrD;IAEAW,eAAeC,IAAY,EAAEJ,OAAuB,EAAO;QACzD,MAAMK,SAAS,KAAK,CAACF,eAAeC,MAAMJ;QAC1CK,OAAOC,OAAO,CAAC,IAAI,CAACJ,kBAAkB;QACtC,OAAOG;IACT;;QAjCK,qBACYT,SAAS,IAAIW,cAAM,CAAC,0BAEpBC,mBAAmB;YAAEC,aAAa;YAAGC,iBAAiB;YAAMC,iBAAiB;QAAM,QACnFpB,oBAAoB,CAACqB;YACpC,IAAIA,WAAW,IAAI,CAACJ,gBAAgB,CAACC,WAAW,EAAE;gBAChD,IAAI,CAACb,MAAM,CAACC,KAAK,CAAC;gBAClBgB,QAAQC,IAAI;YACd,OAAO;gBACL,MAAMC,OAAeC,KAAKC,GAAG,CAAC,IAAI,CAACT,gBAAgB,CAACE,eAAe,GAAGM,KAAKE,GAAG,CAAC,GAAGN,WAAW,IAAI,CAACJ,gBAAgB,CAACG,eAAe;gBAClI,IAAI,CAACf,MAAM,CAACuB,IAAI,CAAC,CAAC,uCAAuC,EAAEJ,OAAO,KAAK,CAAC,CAAC;gBACzE,OAAOA;YACT;QACF;;AAqBF"}
1
+ {"version":3,"sources":["../../../../../backend/src/infrastructure/websocket/adapters/redis.adapter.ts"],"sourcesContent":["import { Logger } from '@nestjs/common'\nimport { IoAdapter } from '@nestjs/platform-socket.io'\nimport { ServerOptions } from 'socket.io'\nimport { loadOptionalModule } from '../../../common/functions'\n\nexport class RedisAdapter extends IoAdapter {\n private readonly logger = new Logger('WebSocketAdapter')\n private adapterConstructor: any\n private readonly reconnectOptions = { maxAttempts: 3, minConnectDelay: 6000, maxConnectDelay: 30000 }\n private readonly reconnectStrategy = (attempts: number): number => {\n if (attempts > this.reconnectOptions.maxAttempts) {\n this.logger.error('Too many retries on Redis server. Exiting')\n process.exit()\n } else {\n const wait: number = Math.min(this.reconnectOptions.minConnectDelay * Math.pow(2, attempts), this.reconnectOptions.maxConnectDelay)\n this.logger.warn(`Retrying connection to Redis server in ${wait / 1000}s`)\n return wait\n }\n }\n\n async connectToRedis(redisUrl: string): Promise<void> {\n const { createAdapter } = await loadOptionalModule('@socket.io/redis-adapter')\n const { createClient } = await loadOptionalModule('redis')\n const pubClient = createClient({ url: redisUrl, socket: { noDelay: true, reconnectStrategy: this.reconnectStrategy } })\n const subClient = pubClient.duplicate()\n pubClient.on('error', (e: Error) => this.logger.error(`PubClient: ${e.message || e}`))\n pubClient.on('ready', () => this.logger.log(`PubClient: Connected to Redis Server at ${pubClient.options.url}`))\n subClient.on('error', (e: Error) => this.logger.error(`SubClient: ${e.message || e}`))\n subClient.on('ready', () => this.logger.log(`SubClient: Connected to Redis Server at ${subClient.options.url}`))\n pubClient.connect()\n subClient.connect()\n this.adapterConstructor = createAdapter(pubClient, subClient)\n }\n\n createIOServer(port: number, options?: ServerOptions): any {\n const server = super.createIOServer(port, options)\n server.adapter(this.adapterConstructor)\n return server\n }\n}\n"],"names":["RedisAdapter","IoAdapter","connectToRedis","redisUrl","createAdapter","loadOptionalModule","createClient","pubClient","url","socket","noDelay","reconnectStrategy","subClient","duplicate","on","e","logger","error","message","log","options","connect","adapterConstructor","createIOServer","port","server","adapter","Logger","reconnectOptions","maxAttempts","minConnectDelay","maxConnectDelay","attempts","process","exit","wait","Math","min","pow","warn"],"mappings":";;;;+BAKaA;;;eAAAA;;;wBALU;kCACG;2BAES;AAE5B,IAAA,AAAMA,eAAN,MAAMA,qBAAqBC,2BAAS;IAezC,MAAMC,eAAeC,QAAgB,EAAiB;QACpD,MAAM,EAAEC,aAAa,EAAE,GAAG,MAAMC,IAAAA,6BAAkB,EAAC;QACnD,MAAM,EAAEC,YAAY,EAAE,GAAG,MAAMD,IAAAA,6BAAkB,EAAC;QAClD,MAAME,YAAYD,aAAa;YAAEE,KAAKL;YAAUM,QAAQ;gBAAEC,SAAS;gBAAMC,mBAAmB,IAAI,CAACA,iBAAiB;YAAC;QAAE;QACrH,MAAMC,YAAYL,UAAUM,SAAS;QACrCN,UAAUO,EAAE,CAAC,SAAS,CAACC,IAAa,IAAI,CAACC,MAAM,CAACC,KAAK,CAAC,CAAC,WAAW,EAAEF,EAAEG,OAAO,IAAIH,GAAG;QACpFR,UAAUO,EAAE,CAAC,SAAS,IAAM,IAAI,CAACE,MAAM,CAACG,GAAG,CAAC,CAAC,wCAAwC,EAAEZ,UAAUa,OAAO,CAACZ,GAAG,EAAE;QAC9GI,UAAUE,EAAE,CAAC,SAAS,CAACC,IAAa,IAAI,CAACC,MAAM,CAACC,KAAK,CAAC,CAAC,WAAW,EAAEF,EAAEG,OAAO,IAAIH,GAAG;QACpFH,UAAUE,EAAE,CAAC,SAAS,IAAM,IAAI,CAACE,MAAM,CAACG,GAAG,CAAC,CAAC,wCAAwC,EAAEP,UAAUQ,OAAO,CAACZ,GAAG,EAAE;QAC9GD,UAAUc,OAAO;QACjBT,UAAUS,OAAO;QACjB,IAAI,CAACC,kBAAkB,GAAGlB,cAAcG,WAAWK;IACrD;IAEAW,eAAeC,IAAY,EAAEJ,OAAuB,EAAO;QACzD,MAAMK,SAAS,KAAK,CAACF,eAAeC,MAAMJ;QAC1CK,OAAOC,OAAO,CAAC,IAAI,CAACJ,kBAAkB;QACtC,OAAOG;IACT;;QAjCK,qBACYT,SAAS,IAAIW,cAAM,CAAC,0BAEpBC,mBAAmB;YAAEC,aAAa;YAAGC,iBAAiB;YAAMC,iBAAiB;QAAM,QACnFpB,oBAAoB,CAACqB;YACpC,IAAIA,WAAW,IAAI,CAACJ,gBAAgB,CAACC,WAAW,EAAE;gBAChD,IAAI,CAACb,MAAM,CAACC,KAAK,CAAC;gBAClBgB,QAAQC,IAAI;YACd,OAAO;gBACL,MAAMC,OAAeC,KAAKC,GAAG,CAAC,IAAI,CAACT,gBAAgB,CAACE,eAAe,GAAGM,KAAKE,GAAG,CAAC,GAAGN,WAAW,IAAI,CAACJ,gBAAgB,CAACG,eAAe;gBAClI,IAAI,CAACf,MAAM,CAACuB,IAAI,CAAC,CAAC,uCAAuC,EAAEJ,OAAO,KAAK,CAAC,CAAC;gBACzE,OAAOA;YACT;QACF;;AAqBF"}
@@ -1,8 +1,4 @@
1
- /*
2
- * Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com>
3
- * This file is part of Sync-in | The open source file sync and share solution
4
- * See the LICENSE file for licensing details
5
- */ "use strict";
1
+ "use strict";
6
2
  Object.defineProperty(exports, "__esModule", {
7
3
  value: true
8
4
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../backend/src/infrastructure/websocket/adapters/web-socket.adapter.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 { JwtService } from '@nestjs/jwt'\nimport { NestFastifyApplication } from '@nestjs/platform-fastify'\nimport { IoAdapter } from '@nestjs/platform-socket.io'\nimport { WsException } from '@nestjs/websockets'\nimport { parse } from 'cookie'\nimport cluster from 'node:cluster'\nimport { Namespace, ServerOptions, Socket } from 'socket.io'\nimport { USERS_WS } from '../../../applications/users/constants/websocket'\nimport { type JwtPayload } from '../../../authentication/interfaces/jwt-payload.interface'\nimport { configuration } from '../../../configuration/config.environment'\nimport { getClientAddress } from '../utils'\nimport { ClusterAdapter } from './cluster.adapter'\nimport { RedisAdapter } from './redis.adapter'\n\n@Injectable()\nexport class WebSocketAdapter extends IoAdapter {\n private adapter: RedisAdapter | ClusterAdapter\n private readonly app: NestFastifyApplication\n private readonly logger: Logger = new Logger(WebSocketAdapter.name)\n private readonly jwtService: JwtService\n\n constructor(app: NestFastifyApplication) {\n super(app)\n this.app = app\n this.jwtService = app.get<JwtService>(JwtService)\n }\n\n async initAdapter() {\n this.adapter = await this.getAdapter()\n }\n\n createIOServer(port: number, options?: ServerOptions) {\n const server = this.adapter.createIOServer(port, {\n ...options,\n cors: {\n origin: configuration.websocket.corsOrigin\n },\n transports: ['websocket']\n } satisfies ServerOptions)\n // Authentication\n server.use(this.authenticateSocket.bind(this))\n server.on('new_namespace', (namespace: Namespace) => {\n // apply auth on all namespaces\n namespace.use(this.authenticateSocket.bind(this))\n })\n this.logger.log(`Using ${server.of(USERS_WS.NAME_SPACE).adapter.constructor.name}`)\n return server\n }\n\n async getAdapter() {\n if (configuration.websocket.adapter === 'redis') {\n try {\n const redisIoAdapter = new RedisAdapter(this.app)\n await redisIoAdapter.connectToRedis(configuration.websocket.redis)\n return redisIoAdapter\n } catch (e) {\n this.logger.error(e.message)\n process.exit(1)\n }\n } else {\n if (cluster.isWorker) {\n // setup connection with the primary process\n return new ClusterAdapter(this.app)\n } else {\n this.logger.warn('Adapter Cluster only works in clustering mode', 'WEBSOCKET')\n // do not exit for tests (e2e)\n }\n }\n }\n\n private authenticateSocket(socket: Socket, next: (err?: Error) => void) {\n const cookies = socket.request.headers.cookie ? parse(socket.request.headers.cookie) : {}\n const token = cookies[configuration.auth.token.ws.name]\n if (!token) {\n this.onAuthError('Authorization is missing', socket, next)\n return\n }\n let payload: JwtPayload\n try {\n payload = this.jwtService.verify<JwtPayload>(token, { secret: configuration.auth.token.ws.secret })\n } catch (e) {\n this.onAuthError(e.message, socket, next)\n return\n }\n if (!payload) {\n this.onAuthError('Payload is missing', socket, next)\n return\n }\n Object.assign(socket, { user: payload.identity })\n next()\n }\n\n private onAuthError(error: string, socket: Socket, next: (err?: Error) => void) {\n this.logger.warn(`${error} - ${getClientAddress(socket)} ${socket.id} ${socket.handshake.url} ${socket.handshake.headers['user-agent']}`)\n next(new WsException('Unauthorized'))\n }\n}\n"],"names":["WebSocketAdapter","IoAdapter","initAdapter","adapter","getAdapter","createIOServer","port","options","server","cors","origin","configuration","websocket","corsOrigin","transports","use","authenticateSocket","bind","on","namespace","logger","log","of","USERS_WS","NAME_SPACE","name","redisIoAdapter","RedisAdapter","app","connectToRedis","redis","e","error","message","process","exit","cluster","isWorker","ClusterAdapter","warn","socket","next","cookies","request","headers","cookie","parse","token","auth","ws","onAuthError","payload","jwtService","verify","secret","Object","assign","user","identity","getClientAddress","id","handshake","url","WsException","Logger","get","JwtService"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../backend/src/infrastructure/websocket/adapters/web-socket.adapter.ts"],"sourcesContent":["import { Injectable, Logger } from '@nestjs/common'\nimport { JwtService } from '@nestjs/jwt'\nimport { NestFastifyApplication } from '@nestjs/platform-fastify'\nimport { IoAdapter } from '@nestjs/platform-socket.io'\nimport { WsException } from '@nestjs/websockets'\nimport { parse } from 'cookie'\nimport cluster from 'node:cluster'\nimport { Namespace, ServerOptions, Socket } from 'socket.io'\nimport { USERS_WS } from '../../../applications/users/constants/websocket'\nimport { type JwtPayload } from '../../../authentication/interfaces/jwt-payload.interface'\nimport { configuration } from '../../../configuration/config.environment'\nimport { getClientAddress } from '../utils'\nimport { ClusterAdapter } from './cluster.adapter'\nimport { RedisAdapter } from './redis.adapter'\n\n@Injectable()\nexport class WebSocketAdapter extends IoAdapter {\n private adapter: RedisAdapter | ClusterAdapter\n private readonly app: NestFastifyApplication\n private readonly logger: Logger = new Logger(WebSocketAdapter.name)\n private readonly jwtService: JwtService\n\n constructor(app: NestFastifyApplication) {\n super(app)\n this.app = app\n this.jwtService = app.get<JwtService>(JwtService)\n }\n\n async initAdapter() {\n this.adapter = await this.getAdapter()\n }\n\n createIOServer(port: number, options?: ServerOptions) {\n const server = this.adapter.createIOServer(port, {\n ...options,\n cors: {\n origin: configuration.websocket.corsOrigin\n },\n transports: ['websocket']\n } satisfies ServerOptions)\n // Authentication\n server.use(this.authenticateSocket.bind(this))\n server.on('new_namespace', (namespace: Namespace) => {\n // apply auth on all namespaces\n namespace.use(this.authenticateSocket.bind(this))\n })\n this.logger.log(`Using ${server.of(USERS_WS.NAME_SPACE).adapter.constructor.name}`)\n return server\n }\n\n async getAdapter() {\n if (configuration.websocket.adapter === 'redis') {\n try {\n const redisIoAdapter = new RedisAdapter(this.app)\n await redisIoAdapter.connectToRedis(configuration.websocket.redis)\n return redisIoAdapter\n } catch (e) {\n this.logger.error(e.message)\n process.exit(1)\n }\n } else {\n if (cluster.isWorker) {\n // setup connection with the primary process\n return new ClusterAdapter(this.app)\n } else {\n this.logger.warn('Adapter Cluster only works in clustering mode', 'WEBSOCKET')\n // do not exit for tests (e2e)\n }\n }\n }\n\n private authenticateSocket(socket: Socket, next: (err?: Error) => void) {\n const cookies = socket.request.headers.cookie ? parse(socket.request.headers.cookie) : {}\n const token = cookies[configuration.auth.token.ws.name]\n if (!token) {\n this.onAuthError('Authorization is missing', socket, next)\n return\n }\n let payload: JwtPayload\n try {\n payload = this.jwtService.verify<JwtPayload>(token, { secret: configuration.auth.token.ws.secret })\n } catch (e) {\n this.onAuthError(e.message, socket, next)\n return\n }\n if (!payload) {\n this.onAuthError('Payload is missing', socket, next)\n return\n }\n Object.assign(socket, { user: payload.identity })\n next()\n }\n\n private onAuthError(error: string, socket: Socket, next: (err?: Error) => void) {\n this.logger.warn(`${error} - ${getClientAddress(socket)} ${socket.id} ${socket.handshake.url} ${socket.handshake.headers['user-agent']}`)\n next(new WsException('Unauthorized'))\n }\n}\n"],"names":["WebSocketAdapter","IoAdapter","initAdapter","adapter","getAdapter","createIOServer","port","options","server","cors","origin","configuration","websocket","corsOrigin","transports","use","authenticateSocket","bind","on","namespace","logger","log","of","USERS_WS","NAME_SPACE","name","redisIoAdapter","RedisAdapter","app","connectToRedis","redis","e","error","message","process","exit","cluster","isWorker","ClusterAdapter","warn","socket","next","cookies","request","headers","cookie","parse","token","auth","ws","onAuthError","payload","jwtService","verify","secret","Object","assign","user","identity","getClientAddress","id","handshake","url","WsException","Logger","get","JwtService"],"mappings":";;;;+BAgBaA;;;eAAAA;;;wBAhBsB;qBACR;iCACY;kCACb;4BACE;wBACN;oEACF;2BAEK;mCAEK;uBACG;gCACF;8BACF;;;;;;;;;;;;;;;AAGtB,IAAA,AAAMA,mBAAN,MAAMA,yBAAyBC,2BAAS;IAY7C,MAAMC,cAAc;QAClB,IAAI,CAACC,OAAO,GAAG,MAAM,IAAI,CAACC,UAAU;IACtC;IAEAC,eAAeC,IAAY,EAAEC,OAAuB,EAAE;QACpD,MAAMC,SAAS,IAAI,CAACL,OAAO,CAACE,cAAc,CAACC,MAAM;YAC/C,GAAGC,OAAO;YACVE,MAAM;gBACJC,QAAQC,gCAAa,CAACC,SAAS,CAACC,UAAU;YAC5C;YACAC,YAAY;gBAAC;aAAY;QAC3B;QACA,iBAAiB;QACjBN,OAAOO,GAAG,CAAC,IAAI,CAACC,kBAAkB,CAACC,IAAI,CAAC,IAAI;QAC5CT,OAAOU,EAAE,CAAC,iBAAiB,CAACC;YAC1B,+BAA+B;YAC/BA,UAAUJ,GAAG,CAAC,IAAI,CAACC,kBAAkB,CAACC,IAAI,CAAC,IAAI;QACjD;QACA,IAAI,CAACG,MAAM,CAACC,GAAG,CAAC,CAAC,MAAM,EAAEb,OAAOc,EAAE,CAACC,mBAAQ,CAACC,UAAU,EAAErB,OAAO,CAAC,WAAW,CAACsB,IAAI,EAAE;QAClF,OAAOjB;IACT;IAEA,MAAMJ,aAAa;QACjB,IAAIO,gCAAa,CAACC,SAAS,CAACT,OAAO,KAAK,SAAS;YAC/C,IAAI;gBACF,MAAMuB,iBAAiB,IAAIC,0BAAY,CAAC,IAAI,CAACC,GAAG;gBAChD,MAAMF,eAAeG,cAAc,CAAClB,gCAAa,CAACC,SAAS,CAACkB,KAAK;gBACjE,OAAOJ;YACT,EAAE,OAAOK,GAAG;gBACV,IAAI,CAACX,MAAM,CAACY,KAAK,CAACD,EAAEE,OAAO;gBAC3BC,QAAQC,IAAI,CAAC;YACf;QACF,OAAO;YACL,IAAIC,oBAAO,CAACC,QAAQ,EAAE;gBACpB,4CAA4C;gBAC5C,OAAO,IAAIC,8BAAc,CAAC,IAAI,CAACV,GAAG;YACpC,OAAO;gBACL,IAAI,CAACR,MAAM,CAACmB,IAAI,CAAC,iDAAiD;YAClE,8BAA8B;YAChC;QACF;IACF;IAEQvB,mBAAmBwB,MAAc,EAAEC,IAA2B,EAAE;QACtE,MAAMC,UAAUF,OAAOG,OAAO,CAACC,OAAO,CAACC,MAAM,GAAGC,IAAAA,aAAK,EAACN,OAAOG,OAAO,CAACC,OAAO,CAACC,MAAM,IAAI,CAAC;QACxF,MAAME,QAAQL,OAAO,CAAC/B,gCAAa,CAACqC,IAAI,CAACD,KAAK,CAACE,EAAE,CAACxB,IAAI,CAAC;QACvD,IAAI,CAACsB,OAAO;YACV,IAAI,CAACG,WAAW,CAAC,4BAA4BV,QAAQC;YACrD;QACF;QACA,IAAIU;QACJ,IAAI;YACFA,UAAU,IAAI,CAACC,UAAU,CAACC,MAAM,CAAaN,OAAO;gBAAEO,QAAQ3C,gCAAa,CAACqC,IAAI,CAACD,KAAK,CAACE,EAAE,CAACK,MAAM;YAAC;QACnG,EAAE,OAAOvB,GAAG;YACV,IAAI,CAACmB,WAAW,CAACnB,EAAEE,OAAO,EAAEO,QAAQC;YACpC;QACF;QACA,IAAI,CAACU,SAAS;YACZ,IAAI,CAACD,WAAW,CAAC,sBAAsBV,QAAQC;YAC/C;QACF;QACAc,OAAOC,MAAM,CAAChB,QAAQ;YAAEiB,MAAMN,QAAQO,QAAQ;QAAC;QAC/CjB;IACF;IAEQS,YAAYlB,KAAa,EAAEQ,MAAc,EAAEC,IAA2B,EAAE;QAC9E,IAAI,CAACrB,MAAM,CAACmB,IAAI,CAAC,GAAGP,MAAM,GAAG,EAAE2B,IAAAA,uBAAgB,EAACnB,QAAQ,CAAC,EAAEA,OAAOoB,EAAE,CAAC,CAAC,EAAEpB,OAAOqB,SAAS,CAACC,GAAG,CAAC,CAAC,EAAEtB,OAAOqB,SAAS,CAACjB,OAAO,CAAC,aAAa,EAAE;QACxIH,KAAK,IAAIsB,uBAAW,CAAC;IACvB;IA1EA,YAAYnC,GAA2B,CAAE;QACvC,KAAK,CAACA,WAJSR,SAAiB,IAAI4C,cAAM,CAAChE,iBAAiByB,IAAI;QAKhE,IAAI,CAACG,GAAG,GAAGA;QACX,IAAI,CAACwB,UAAU,GAAGxB,IAAIqC,GAAG,CAAaC,eAAU;IAClD;AAuEF"}
@@ -1,8 +1,4 @@
1
- /*
2
- * Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com>
3
- * This file is part of Sync-in | The open source file sync and share solution
4
- * See the LICENSE file for licensing details
5
- */ "use strict";
1
+ "use strict";
6
2
  Object.defineProperty(exports, "__esModule", {
7
3
  value: true
8
4
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../backend/src/infrastructure/websocket/decorators/web-socket-user.decorator.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 { createParamDecorator, ExecutionContext } from '@nestjs/common'\nimport type { JwtIdentityPayload } from '../../../authentication/interfaces/jwt-payload.interface'\n\nexport const GetWsUser = createParamDecorator((_data: unknown, ctx: ExecutionContext): JwtIdentityPayload => {\n return ctx.switchToWs().getClient().user\n})\n"],"names":["GetWsUser","createParamDecorator","_data","ctx","switchToWs","getClient","user"],"mappings":"AAAA;;;;CAIC;;;;+BAKYA;;;eAAAA;;;wBAH0C;AAGhD,MAAMA,YAAYC,IAAAA,4BAAoB,EAAC,CAACC,OAAgBC;IAC7D,OAAOA,IAAIC,UAAU,GAAGC,SAAS,GAAGC,IAAI;AAC1C"}
1
+ {"version":3,"sources":["../../../../../backend/src/infrastructure/websocket/decorators/web-socket-user.decorator.ts"],"sourcesContent":["import { createParamDecorator, ExecutionContext } from '@nestjs/common'\nimport type { JwtIdentityPayload } from '../../../authentication/interfaces/jwt-payload.interface'\n\nexport const GetWsUser = createParamDecorator((_data: unknown, ctx: ExecutionContext): JwtIdentityPayload => {\n return ctx.switchToWs().getClient().user\n})\n"],"names":["GetWsUser","createParamDecorator","_data","ctx","switchToWs","getClient","user"],"mappings":";;;;+BAGaA;;;eAAAA;;;wBAH0C;AAGhD,MAAMA,YAAYC,IAAAA,4BAAoB,EAAC,CAACC,OAAgBC;IAC7D,OAAOA,IAAIC,UAAU,GAAGC,SAAS,GAAGC,IAAI;AAC1C"}
@@ -1,8 +1,4 @@
1
- /*
2
- * Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com>
3
- * This file is part of Sync-in | The open source file sync and share solution
4
- * See the LICENSE file for licensing details
5
- */ "use strict";
1
+ "use strict";
6
2
  Object.defineProperty(exports, "__esModule", {
7
3
  value: true
8
4
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../backend/src/infrastructure/websocket/interfaces/auth-socket-io.interface.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 { Socket } from 'socket.io'\nimport { JwtIdentityPayload } from '../../../authentication/interfaces/jwt-payload.interface'\n\nexport type AuthenticatedSocketIO = Socket & { user: JwtIdentityPayload }\n"],"names":[],"mappings":"AAAA;;;;CAIC"}
1
+ {"version":3,"sources":["../../../../../backend/src/infrastructure/websocket/interfaces/auth-socket-io.interface.ts"],"names":[],"mappings":""}
@@ -1,8 +1,4 @@
1
- /*
2
- * Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com>
3
- * This file is part of Sync-in | The open source file sync and share solution
4
- * See the LICENSE file for licensing details
5
- */ "use strict";
1
+ "use strict";
6
2
  Object.defineProperty(exports, "__esModule", {
7
3
  value: true
8
4
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../backend/src/infrastructure/websocket/utils.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 { Socket } from 'socket.io'\nimport { configuration } from '../../configuration/config.environment'\n\nexport function getClientAddress(socket: Socket) {\n return (\n (configuration.server.trustProxy ? socket.handshake.headers['x-forwarded-for']?.toString().split(',')[0] : undefined) || // via proxy\n socket.handshake.address || // fallback\n socket.conn.remoteAddress // fallback (IPv6)\n )\n}\n"],"names":["getClientAddress","socket","configuration","server","trustProxy","handshake","headers","toString","split","undefined","address","conn","remoteAddress"],"mappings":"AAAA;;;;CAIC;;;;+BAKeA;;;eAAAA;;;mCAFc;AAEvB,SAASA,iBAAiBC,MAAc;IAC7C,OACE,AAACC,CAAAA,gCAAa,CAACC,MAAM,CAACC,UAAU,GAAGH,OAAOI,SAAS,CAACC,OAAO,CAAC,kBAAkB,EAAEC,WAAWC,MAAM,IAAI,CAAC,EAAE,GAAGC,SAAQ,KAAM,YAAY;IACrIR,OAAOI,SAAS,CAACK,OAAO,IAAI,WAAW;IACvCT,OAAOU,IAAI,CAACC,aAAa,CAAC,kBAAkB;;AAEhD"}
1
+ {"version":3,"sources":["../../../../backend/src/infrastructure/websocket/utils.ts"],"sourcesContent":["import { Socket } from 'socket.io'\nimport { configuration } from '../../configuration/config.environment'\n\nexport function getClientAddress(socket: Socket) {\n return (\n (configuration.server.trustProxy ? socket.handshake.headers['x-forwarded-for']?.toString().split(',')[0] : undefined) || // via proxy\n socket.handshake.address || // fallback\n socket.conn.remoteAddress // fallback (IPv6)\n )\n}\n"],"names":["getClientAddress","socket","configuration","server","trustProxy","handshake","headers","toString","split","undefined","address","conn","remoteAddress"],"mappings":";;;;+BAGgBA;;;eAAAA;;;mCAFc;AAEvB,SAASA,iBAAiBC,MAAc;IAC7C,OACE,AAACC,CAAAA,gCAAa,CAACC,MAAM,CAACC,UAAU,GAAGH,OAAOI,SAAS,CAACC,OAAO,CAAC,kBAAkB,EAAEC,WAAWC,MAAM,IAAI,CAAC,EAAE,GAAGC,SAAQ,KAAM,YAAY;IACrIR,OAAOI,SAAS,CAACK,OAAO,IAAI,WAAW;IACvCT,OAAOU,IAAI,CAACC,aAAa,CAAC,kBAAkB;;AAEhD"}
@@ -1,8 +1,4 @@
1
- /*
2
- * Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com>
3
- * This file is part of Sync-in | The open source file sync and share solution
4
- * See the LICENSE file for licensing details
5
- */ "use strict";
1
+ "use strict";
6
2
  Object.defineProperty(exports, "__esModule", {
7
3
  value: true
8
4
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../backend/src/infrastructure/websocket/web-socket.config.ts"],"sourcesContent":["/*\n * Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com>\n * This file is part of Sync-in | The open source file sync and share solution\n * See the LICENSE file for licensing details\n */\n\nimport { IsIn, IsNotEmpty, IsString, ValidateIf } from 'class-validator'\n\nexport class WebSocketConfig {\n @IsString()\n @IsNotEmpty()\n @IsIn(['redis', 'cluster'])\n adapter: 'redis' | 'cluster' = 'cluster'\n\n @ValidateIf((o: WebSocketConfig) => o.adapter === 'redis')\n @IsString()\n @IsNotEmpty()\n // requires optional dependency: @socket.io/redis-adapter\n redis: string = 'redis://127.0.0.1:6379'\n\n @IsString()\n @IsNotEmpty()\n corsOrigin: string = '*'\n}\n"],"names":["WebSocketConfig","adapter","redis","corsOrigin","o"],"mappings":"AAAA;;;;CAIC;;;;+BAIYA;;;eAAAA;;;gCAF0C;;;;;;;;;;AAEhD,IAAA,AAAMA,kBAAN,MAAMA;;aAIXC,UAA+B;aAK/B,yDAAyD;QACzDC,QAAgB;aAIhBC,aAAqB;;AACvB;;;;;QAZS;QAAS;;;;;qCAGHC,IAAuBA,EAAEH,OAAO,KAAK"}
1
+ {"version":3,"sources":["../../../../backend/src/infrastructure/websocket/web-socket.config.ts"],"sourcesContent":["import { IsIn, IsNotEmpty, IsString, ValidateIf } from 'class-validator'\n\nexport class WebSocketConfig {\n @IsString()\n @IsNotEmpty()\n @IsIn(['redis', 'cluster'])\n adapter: 'redis' | 'cluster' = 'cluster'\n\n @ValidateIf((o: WebSocketConfig) => o.adapter === 'redis')\n @IsString()\n @IsNotEmpty()\n // requires optional dependency: @socket.io/redis-adapter\n redis: string = 'redis://127.0.0.1:6379'\n\n @IsString()\n @IsNotEmpty()\n corsOrigin: string = '*'\n}\n"],"names":["WebSocketConfig","adapter","redis","corsOrigin","o"],"mappings":";;;;+BAEaA;;;eAAAA;;;gCAF0C;;;;;;;;;;AAEhD,IAAA,AAAMA,kBAAN,MAAMA;;aAIXC,UAA+B;aAK/B,yDAAyD;QACzDC,QAAgB;aAIhBC,aAAqB;;AACvB;;;;;QAZS;QAAS;;;;;qCAGHC,IAAuBA,EAAEH,OAAO,KAAK"}
package/server/main.js CHANGED
@@ -14,6 +14,11 @@ async function bootstrap() {
14
14
  host: _configenvironment.configuration.server.host,
15
15
  port: _configenvironment.configuration.server.port
16
16
  }, (error, address)=>{
17
+ if (_configenvironment.configuration.server.host === '0.0.0.0') {
18
+ const url = new URL(address);
19
+ url.hostname = '0.0.0.0';
20
+ address = url.toString();
21
+ }
17
22
  if (error) {
18
23
  logger.error(`Server listening error at ${address} : ${error}`, 'HTTP');
19
24
  process.exit(1);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../backend/src/main.ts"],"sourcesContent":["#!/usr/bin/env node\n/*\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 { NestFastifyApplication } from '@nestjs/platform-fastify'\nimport { Logger } from 'nestjs-pino'\nimport { appBootstrap } from './app.bootstrap'\nimport { AppService } from './app.service'\nimport { configuration } from './configuration/config.environment'\n\nasync function bootstrap() {\n const app: NestFastifyApplication = await appBootstrap()\n const logger: Logger = app.get<Logger>(Logger)\n await app.listen(\n {\n host: configuration.server.host,\n port: configuration.server.port\n },\n (error, address) => {\n if (error) {\n logger.error(`Server listening error at ${address} : ${error}`, 'HTTP')\n process.exit(1)\n } else {\n logger.log(`Server listening at ${address}`, 'HTTP')\n }\n }\n )\n}\n\nAppService.clusterize(bootstrap)\n"],"names":["bootstrap","app","appBootstrap","logger","get","Logger","listen","host","configuration","server","port","error","address","process","exit","log","AppService","clusterize"],"mappings":";;;;;4BAQuB;8BACM;4BACF;mCACG;AAE9B,eAAeA;IACb,MAAMC,MAA8B,MAAMC,IAAAA,0BAAY;IACtD,MAAMC,SAAiBF,IAAIG,GAAG,CAASC,kBAAM;IAC7C,MAAMJ,IAAIK,MAAM,CACd;QACEC,MAAMC,gCAAa,CAACC,MAAM,CAACF,IAAI;QAC/BG,MAAMF,gCAAa,CAACC,MAAM,CAACC,IAAI;IACjC,GACA,CAACC,OAAOC;QACN,IAAID,OAAO;YACTR,OAAOQ,KAAK,CAAC,CAAC,0BAA0B,EAAEC,QAAQ,GAAG,EAAED,OAAO,EAAE;YAChEE,QAAQC,IAAI,CAAC;QACf,OAAO;YACLX,OAAOY,GAAG,CAAC,CAAC,oBAAoB,EAAEH,SAAS,EAAE;QAC/C;IACF;AAEJ;AAEAI,sBAAU,CAACC,UAAU,CAACjB"}
1
+ {"version":3,"sources":["../../backend/src/main.ts"],"sourcesContent":["#!/usr/bin/env node\nimport { NestFastifyApplication } from '@nestjs/platform-fastify'\nimport { Logger } from 'nestjs-pino'\nimport { appBootstrap } from './app.bootstrap'\nimport { AppService } from './app.service'\nimport { configuration } from './configuration/config.environment'\n\nasync function bootstrap() {\n const app: NestFastifyApplication = await appBootstrap()\n const logger: Logger = app.get<Logger>(Logger)\n await app.listen(\n {\n host: configuration.server.host,\n port: configuration.server.port\n },\n (error, address) => {\n if (configuration.server.host === '0.0.0.0') {\n const url = new URL(address)\n url.hostname = '0.0.0.0'\n address = url.toString()\n }\n if (error) {\n logger.error(`Server listening error at ${address} : ${error}`, 'HTTP')\n process.exit(1)\n } else {\n logger.log(`Server listening at ${address}`, 'HTTP')\n }\n }\n )\n}\n\nAppService.clusterize(bootstrap)\n"],"names":["bootstrap","app","appBootstrap","logger","get","Logger","listen","host","configuration","server","port","error","address","url","URL","hostname","toString","process","exit","log","AppService","clusterize"],"mappings":";;;;;4BAEuB;8BACM;4BACF;mCACG;AAE9B,eAAeA;IACb,MAAMC,MAA8B,MAAMC,IAAAA,0BAAY;IACtD,MAAMC,SAAiBF,IAAIG,GAAG,CAASC,kBAAM;IAC7C,MAAMJ,IAAIK,MAAM,CACd;QACEC,MAAMC,gCAAa,CAACC,MAAM,CAACF,IAAI;QAC/BG,MAAMF,gCAAa,CAACC,MAAM,CAACC,IAAI;IACjC,GACA,CAACC,OAAOC;QACN,IAAIJ,gCAAa,CAACC,MAAM,CAACF,IAAI,KAAK,WAAW;YAC3C,MAAMM,MAAM,IAAIC,IAAIF;YACpBC,IAAIE,QAAQ,GAAG;YACfH,UAAUC,IAAIG,QAAQ;QACxB;QACA,IAAIL,OAAO;YACTR,OAAOQ,KAAK,CAAC,CAAC,0BAA0B,EAAEC,QAAQ,GAAG,EAAED,OAAO,EAAE;YAChEM,QAAQC,IAAI,CAAC;QACf,OAAO;YACLf,OAAOgB,GAAG,CAAC,CAAC,oBAAoB,EAAEP,SAAS,EAAE;QAC/C;IACF;AAEJ;AAEAQ,sBAAU,CAACC,UAAU,CAACrB"}