@sync-in/server 1.7.0 → 1.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (275) hide show
  1. package/CHANGELOG.md +173 -58
  2. package/environment/environment.dist.yaml +6 -3
  3. package/migrations/0003_giant_luckman.sql +6 -0
  4. package/migrations/meta/0003_snapshot.json +2463 -0
  5. package/migrations/meta/_journal.json +7 -0
  6. package/package.json +19 -17
  7. package/server/app.bootstrap.js +5 -2
  8. package/server/app.bootstrap.js.map +1 -1
  9. package/server/app.constants.js +0 -4
  10. package/server/app.constants.js.map +1 -1
  11. package/server/app.service.js +7 -6
  12. package/server/app.service.js.map +1 -1
  13. package/server/applications/files/constants/only-office.js +12 -0
  14. package/server/applications/files/constants/only-office.js.map +1 -1
  15. package/server/applications/files/files.config.js +5 -0
  16. package/server/applications/files/files.config.js.map +1 -1
  17. package/server/applications/files/files.controller.js +12 -4
  18. package/server/applications/files/files.controller.js.map +1 -1
  19. package/server/applications/files/files.controller.spec.js +18 -4
  20. package/server/applications/files/files.controller.spec.js.map +1 -1
  21. package/server/applications/files/services/files-content-manager.service.js +6 -6
  22. package/server/applications/files/services/files-content-manager.service.js.map +1 -1
  23. package/server/applications/files/services/files-manager.service.js +4 -4
  24. package/server/applications/files/services/files-manager.service.js.map +1 -1
  25. package/server/applications/files/services/files-methods.service.js +4 -7
  26. package/server/applications/files/services/files-methods.service.js.map +1 -1
  27. package/server/applications/files/services/files-only-office-manager.service.js +2 -2
  28. package/server/applications/files/services/files-only-office-manager.service.js.map +1 -1
  29. package/server/applications/files/services/files-parser.service.js +6 -3
  30. package/server/applications/files/services/files-parser.service.js.map +1 -1
  31. package/server/applications/files/services/files-scheduler.service.js +51 -3
  32. package/server/applications/files/services/files-scheduler.service.js.map +1 -1
  33. package/server/applications/files/services/files-search-manager.service.js +4 -0
  34. package/server/applications/files/services/files-search-manager.service.js.map +1 -1
  35. package/server/applications/files/utils/doc-textify/adapters/pdf.js +6 -8
  36. package/server/applications/files/utils/doc-textify/adapters/pdf.js.map +1 -1
  37. package/server/applications/notifications/i18n/de.js +56 -0
  38. package/server/applications/notifications/i18n/de.js.map +1 -0
  39. package/server/applications/notifications/i18n/es.js +52 -0
  40. package/server/applications/notifications/i18n/es.js.map +1 -0
  41. package/server/applications/notifications/i18n/hi.js +52 -0
  42. package/server/applications/notifications/i18n/hi.js.map +1 -0
  43. package/server/applications/notifications/i18n/index.js +73 -8
  44. package/server/applications/notifications/i18n/index.js.map +1 -1
  45. package/server/applications/notifications/i18n/it.js +52 -0
  46. package/server/applications/notifications/i18n/it.js.map +1 -0
  47. package/server/applications/notifications/i18n/ja.js +52 -0
  48. package/server/applications/notifications/i18n/ja.js.map +1 -0
  49. package/server/applications/notifications/i18n/ko.js +52 -0
  50. package/server/applications/notifications/i18n/ko.js.map +1 -0
  51. package/server/applications/notifications/i18n/pl.js +52 -0
  52. package/server/applications/notifications/i18n/pl.js.map +1 -0
  53. package/server/applications/notifications/i18n/pt.js +52 -0
  54. package/server/applications/notifications/i18n/pt.js.map +1 -0
  55. package/server/applications/notifications/i18n/pt_br.js +52 -0
  56. package/server/applications/notifications/i18n/pt_br.js.map +1 -0
  57. package/server/applications/notifications/i18n/ru.js +52 -0
  58. package/server/applications/notifications/i18n/ru.js.map +1 -0
  59. package/server/applications/notifications/i18n/tr.js +52 -0
  60. package/server/applications/notifications/i18n/tr.js.map +1 -0
  61. package/server/applications/notifications/i18n/zh.js +52 -0
  62. package/server/applications/notifications/i18n/zh.js.map +1 -0
  63. package/server/applications/notifications/mails/models.js +6 -7
  64. package/server/applications/notifications/mails/models.js.map +1 -1
  65. package/server/applications/notifications/services/notifications-manager.service.js.map +1 -1
  66. package/server/applications/shares/dto/create-or-update-share.dto.js +11 -0
  67. package/server/applications/shares/dto/create-or-update-share.dto.js.map +1 -1
  68. package/server/applications/shares/interfaces/share-props.interface.js.map +1 -1
  69. package/server/applications/shares/schemas/share.interface.js.map +1 -1
  70. package/server/applications/shares/schemas/shares.schema.js +9 -0
  71. package/server/applications/shares/schemas/shares.schema.js.map +1 -1
  72. package/server/applications/shares/services/shares-manager.service.js +46 -17
  73. package/server/applications/shares/services/shares-manager.service.js.map +1 -1
  74. package/server/applications/shares/services/shares-queries.service.js +24 -5
  75. package/server/applications/shares/services/shares-queries.service.js.map +1 -1
  76. package/server/applications/spaces/constants/cache.js +4 -0
  77. package/server/applications/spaces/constants/cache.js.map +1 -1
  78. package/server/applications/spaces/dto/create-or-update-space.dto.js +5 -0
  79. package/server/applications/spaces/dto/create-or-update-space.dto.js.map +1 -1
  80. package/server/applications/spaces/guards/space.guard.js +3 -3
  81. package/server/applications/spaces/guards/space.guard.js.map +1 -1
  82. package/server/applications/spaces/models/space-props.model.js.map +1 -1
  83. package/server/applications/spaces/models/space.model.js.map +1 -1
  84. package/server/applications/spaces/schemas/space.interface.js.map +1 -1
  85. package/server/applications/spaces/schemas/spaces.schema.js +1 -0
  86. package/server/applications/spaces/schemas/spaces.schema.js.map +1 -1
  87. package/server/applications/spaces/services/spaces-browser.service.js.map +1 -1
  88. package/server/applications/spaces/services/spaces-manager.service.js +34 -31
  89. package/server/applications/spaces/services/spaces-manager.service.js.map +1 -1
  90. package/server/applications/spaces/services/spaces-queries.service.js +23 -7
  91. package/server/applications/spaces/services/spaces-queries.service.js.map +1 -1
  92. package/server/applications/spaces/services/spaces-scheduler.service.js +21 -20
  93. package/server/applications/spaces/services/spaces-scheduler.service.js.map +1 -1
  94. package/server/applications/spaces/spaces.controller.js +4 -2
  95. package/server/applications/spaces/spaces.controller.js.map +1 -1
  96. package/server/applications/spaces/utils/paths.js +14 -16
  97. package/server/applications/spaces/utils/paths.js.map +1 -1
  98. package/server/applications/sync/services/sync-manager.service.js +4 -3
  99. package/server/applications/sync/services/sync-manager.service.js.map +1 -1
  100. package/server/applications/sync/services/sync-paths-manager.service.js +1 -1
  101. package/server/applications/sync/services/sync-paths-manager.service.js.map +1 -1
  102. package/server/applications/sync/services/sync-paths-manager.service.spec.js +1 -1
  103. package/server/applications/sync/services/sync-paths-manager.service.spec.js.map +1 -1
  104. package/server/applications/sync/sync.controller.js +2 -1
  105. package/server/applications/sync/sync.controller.js.map +1 -1
  106. package/server/applications/users/constants/routes.js +5 -0
  107. package/server/applications/users/constants/routes.js.map +1 -1
  108. package/server/applications/users/constants/user.js +0 -16
  109. package/server/applications/users/constants/user.js.map +1 -1
  110. package/server/applications/users/dto/user-properties.dto.js +10 -0
  111. package/server/applications/users/dto/user-properties.dto.js.map +1 -1
  112. package/server/applications/users/models/user.model.js.map +1 -1
  113. package/server/applications/users/schemas/user.interface.js.map +1 -1
  114. package/server/applications/users/schemas/users.schema.js +3 -2
  115. package/server/applications/users/schemas/users.schema.js.map +1 -1
  116. package/server/applications/users/services/admin-users-manager.service.js +1 -0
  117. package/server/applications/users/services/admin-users-manager.service.js.map +1 -1
  118. package/server/applications/users/services/admin-users-manager.service.spec.js +2 -1
  119. package/server/applications/users/services/admin-users-manager.service.spec.js.map +1 -1
  120. package/server/applications/users/services/users-manager.service.js +7 -2
  121. package/server/applications/users/services/users-manager.service.js.map +1 -1
  122. package/server/applications/users/services/users-manager.service.spec.js +1 -0
  123. package/server/applications/users/services/users-manager.service.spec.js.map +1 -1
  124. package/server/applications/users/services/users-queries.service.js +18 -4
  125. package/server/applications/users/services/users-queries.service.js.map +1 -1
  126. package/server/applications/users/users.controller.js +15 -0
  127. package/server/applications/users/users.controller.js.map +1 -1
  128. package/server/applications/users/users.gateway.js +6 -0
  129. package/server/applications/users/users.gateway.js.map +1 -1
  130. package/server/applications/users/utils/test.js +2 -2
  131. package/server/applications/users/utils/test.js.map +1 -1
  132. package/server/applications/webdav/constants/routes.js +2 -2
  133. package/server/applications/webdav/constants/routes.js.map +1 -1
  134. package/server/applications/webdav/constants/webdav.js +2 -2
  135. package/server/applications/webdav/constants/webdav.js.map +1 -1
  136. package/server/applications/webdav/filters/webdav.filter.js +2 -2
  137. package/server/applications/webdav/filters/webdav.filter.js.map +1 -1
  138. package/server/applications/webdav/filters/webdav.filter.spec.js +2 -2
  139. package/server/applications/webdav/filters/webdav.filter.spec.js.map +1 -1
  140. package/server/applications/webdav/services/webdav-methods.service.js +3 -2
  141. package/server/applications/webdav/services/webdav-methods.service.js.map +1 -1
  142. package/server/applications/webdav/utils/webdav.js +1 -2
  143. package/server/applications/webdav/utils/webdav.js.map +1 -1
  144. package/server/authentication/auth.config.js +2 -2
  145. package/server/authentication/auth.config.js.map +1 -1
  146. package/server/authentication/guards/auth-basic.strategy.js +2 -2
  147. package/server/authentication/guards/auth-basic.strategy.js.map +1 -1
  148. package/server/common/i18n.js +52 -0
  149. package/server/common/i18n.js.map +1 -0
  150. package/server/common/image.js +63 -43
  151. package/server/common/image.js.map +1 -1
  152. package/server/common/interfaces.js.map +1 -1
  153. package/server/common/shared.js +5 -2
  154. package/server/common/shared.js.map +1 -1
  155. package/server/configuration/config.validation.js +3 -3
  156. package/server/configuration/config.validation.js.map +1 -1
  157. package/server/infrastructure/cache/adapters/mysql-cache.adapter.js +8 -6
  158. package/server/infrastructure/cache/adapters/mysql-cache.adapter.js.map +1 -1
  159. package/server/infrastructure/cache/adapters/redis-cache.adapter.js +22 -17
  160. package/server/infrastructure/cache/adapters/redis-cache.adapter.js.map +1 -1
  161. package/server/infrastructure/cache/cache.e2e-spec.js +1 -0
  162. package/server/infrastructure/cache/cache.e2e-spec.js.map +1 -1
  163. package/server/infrastructure/cache/cache.module.js +1 -14
  164. package/server/infrastructure/cache/cache.module.js.map +1 -1
  165. package/server/infrastructure/cache/services/cache.service.js.map +1 -1
  166. package/server/infrastructure/database/database.module.js +20 -1
  167. package/server/infrastructure/database/database.module.js.map +1 -1
  168. package/server/infrastructure/database/utils.js +48 -0
  169. package/server/infrastructure/database/utils.js.map +1 -1
  170. package/server/infrastructure/scheduler/scheduler.module.js +1 -1
  171. package/server/infrastructure/scheduler/scheduler.module.js.map +1 -1
  172. package/server/infrastructure/websocket/adapters/cluster.adapter.js +1 -3
  173. package/server/infrastructure/websocket/adapters/cluster.adapter.js.map +1 -1
  174. package/static/3rdpartylicenses.txt +137 -163
  175. package/static/chunk-2KLC4T2Z.js +1 -0
  176. package/static/chunk-2VMSXRCB.js +12 -0
  177. package/static/chunk-3GMLWAFZ.js +1 -0
  178. package/static/chunk-3OHSRRKH.js +4 -0
  179. package/static/chunk-3R4WKOHQ.js +1 -0
  180. package/static/{chunk-7ITZXYYJ.js → chunk-3R74L4UU.js} +1 -1
  181. package/static/chunk-3XVM35O2.js +1 -0
  182. package/static/chunk-3YVRP3VM.js +2 -0
  183. package/static/chunk-5NMSIIQB.js +1 -0
  184. package/static/chunk-5UKZLU5H.js +1 -0
  185. package/static/chunk-AF24EYXU.js +1 -0
  186. package/static/chunk-AKQVEHO6.js +2 -0
  187. package/static/chunk-BCVX464U.js +2 -0
  188. package/static/chunk-BQV4FRM6.js +1 -0
  189. package/static/{chunk-EVIE5F2U.js → chunk-CETH7UYS.js} +1 -1
  190. package/static/chunk-CHJ64RJM.js +1 -0
  191. package/static/chunk-DIT6W7VM.js +562 -0
  192. package/static/chunk-DKSEQTMX.js +1 -0
  193. package/static/chunk-DM4NXKEP.js +1 -0
  194. package/static/chunk-DPUVSXRB.js +1 -0
  195. package/static/chunk-DSWEWLXJ.js +1 -0
  196. package/static/chunk-FJE6BOFL.js +1 -0
  197. package/static/chunk-FZ3JPGYZ.js +1 -0
  198. package/static/chunk-IQSKQXC3.js +1 -0
  199. package/static/chunk-ITUFI2BJ.js +1 -0
  200. package/static/chunk-JPT5WEAT.js +1 -0
  201. package/static/chunk-LCTZJ537.js +1 -0
  202. package/static/chunk-LK2UCQJ6.js +1 -0
  203. package/static/chunk-LNTUR3GU.js +1 -0
  204. package/static/chunk-LP5TBXEN.js +7 -0
  205. package/static/{chunk-IPAC4VAF.js → chunk-LVSNIS5P.js} +1 -1
  206. package/static/{chunk-SIPE37PA.js → chunk-MTVSJTIW.js} +1 -1
  207. package/static/chunk-N3U6637P.js +1 -0
  208. package/static/chunk-NNV4OXSB.js +1 -0
  209. package/static/chunk-O6FYXVHI.js +1 -0
  210. package/static/chunk-OOGP4WSH.js +2 -0
  211. package/static/chunk-PB4AIT7O.js +1 -0
  212. package/static/chunk-PCWDQPOM.js +2 -0
  213. package/static/chunk-PNR6M34W.js +1 -0
  214. package/static/chunk-PVDHBQRM.js +1 -0
  215. package/static/chunk-Q5KM7LTX.js +1 -0
  216. package/static/chunk-QHC6ZPQ4.js +1 -0
  217. package/static/chunk-QMRBZHE4.js +1 -0
  218. package/static/chunk-QO6BTONN.js +1 -0
  219. package/static/chunk-QSJRY3TF.js +1 -0
  220. package/static/chunk-QUUIRSYT.js +1 -0
  221. package/static/chunk-RFH46UW3.js +1 -0
  222. package/static/{chunk-PTGDOWV3.js → chunk-RSXHRKM5.js} +1 -1
  223. package/static/chunk-RV3VZJPZ.js +1 -0
  224. package/static/{chunk-QNJFQVYI.js → chunk-S7HNXVRB.js} +1 -1
  225. package/static/chunk-SBZ572Q4.js +2 -0
  226. package/static/chunk-SJR5R3Y4.js +1 -0
  227. package/static/chunk-SLHTEGRU.js +1 -0
  228. package/static/{chunk-SH5EVL4E.js → chunk-SSFF27P2.js} +1 -1
  229. package/static/chunk-UNCPXHHT.js +1 -0
  230. package/static/chunk-URHTCJ7G.js +1 -0
  231. package/static/chunk-V3LHHZYN.js +1 -0
  232. package/static/{chunk-DJYJ66UF.js → chunk-VJTXJ43D.js} +1 -1
  233. package/static/chunk-VQQKMY2C.js +1 -0
  234. package/static/{chunk-IQOALFYU.js → chunk-WSSU2HXE.js} +1 -1
  235. package/static/chunk-XDZGW64M.js +3 -0
  236. package/static/chunk-XTRDKGKG.js +1 -0
  237. package/static/chunk-YLWTEC3X.js +1 -0
  238. package/static/chunk-Z5J5F5SX.js +1 -0
  239. package/static/chunk-ZIJQRARU.js +1 -0
  240. package/static/index.html +2 -2
  241. package/static/main-4H5BJY3J.js +9 -0
  242. package/static/scripts-WRDOQIU5.js +24 -0
  243. package/static/{styles-A5VYX3CE.css → styles-2C2UNCNB.css} +1 -1
  244. package/server/applications/spaces/interfaces/space-quota.interface.js +0 -10
  245. package/server/applications/spaces/interfaces/space-quota.interface.js.map +0 -1
  246. package/static/chunk-22EANI6R.js +0 -1
  247. package/static/chunk-3GFGJYMK.js +0 -1
  248. package/static/chunk-4YGJGZZZ.js +0 -1
  249. package/static/chunk-5K7HEX3C.js +0 -27
  250. package/static/chunk-5KLMS6A4.js +0 -1
  251. package/static/chunk-ATP3BFHV.js +0 -562
  252. package/static/chunk-BB4G55KE.js +0 -1
  253. package/static/chunk-EWKSX76T.js +0 -1
  254. package/static/chunk-FHLACA7V.js +0 -1
  255. package/static/chunk-GCATNU55.js +0 -1
  256. package/static/chunk-GYODPCIE.js +0 -1
  257. package/static/chunk-HZTFYLM5.js +0 -1
  258. package/static/chunk-JSUKJT6Z.js +0 -1
  259. package/static/chunk-JXZCNFW7.js +0 -1
  260. package/static/chunk-LTGFCQR7.js +0 -1
  261. package/static/chunk-LV3PYKWO.js +0 -1
  262. package/static/chunk-N2WFNW6M.js +0 -7
  263. package/static/chunk-ORMRCEGT.js +0 -1
  264. package/static/chunk-OUTBJSMW.js +0 -1
  265. package/static/chunk-RS2PX32L.js +0 -1
  266. package/static/chunk-RSSWH3S2.js +0 -1
  267. package/static/chunk-RTRJ3KFH.js +0 -1
  268. package/static/chunk-TKTCBDOG.js +0 -1
  269. package/static/chunk-V6K2N46L.js +0 -1
  270. package/static/chunk-XLCCZSQL.js +0 -4
  271. package/static/chunk-YPEH66GG.js +0 -1
  272. package/static/chunk-YPOIUQ57.js +0 -1
  273. package/static/chunk-ZKCFO2OA.js +0 -4
  274. package/static/main-MZ7HWZXO.js +0 -9
  275. package/static/scripts-VZVAP2P4.js +0 -30
@@ -24,16 +24,7 @@ function _ts_decorate(decorators, target, key, desc) {
24
24
  else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
25
25
  return c > 3 && r && Object.defineProperty(target, key, r), r;
26
26
  }
27
- function _ts_metadata(k, v) {
28
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
29
- }
30
27
  let CacheModule = class CacheModule {
31
- async beforeApplicationShutdown() {
32
- await this.cache.quit();
33
- }
34
- constructor(cache){
35
- this.cache = cache;
36
- }
37
28
  };
38
29
  CacheModule = _ts_decorate([
39
30
  (0, _common.Global)(),
@@ -48,11 +39,7 @@ CacheModule = _ts_decorate([
48
39
  exports: [
49
40
  _cacheservice.Cache
50
41
  ]
51
- }),
52
- _ts_metadata("design:type", Function),
53
- _ts_metadata("design:paramtypes", [
54
- typeof _cacheservice.Cache === "undefined" ? Object : _cacheservice.Cache
55
- ])
42
+ })
56
43
  ], CacheModule);
57
44
 
58
45
  //# sourceMappingURL=cache.module.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../backend/src/infrastructure/cache/cache.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 { BeforeApplicationShutdown, Global, Module } from '@nestjs/common'\nimport { SchedulerRegistry } from '@nestjs/schedule'\nimport { configuration } from '../../configuration/config.environment'\nimport { MysqlCacheAdapter } from './adapters/mysql-cache.adapter'\nimport { RedisCacheAdapter } from './adapters/redis-cache.adapter'\nimport { Cache } from './services/cache.service'\n\n@Global()\n@Module({\n providers: [\n {\n provide: Cache,\n useClass: configuration.cache.adapter === 'mysql' ? MysqlCacheAdapter : RedisCacheAdapter\n },\n SchedulerRegistry\n ],\n exports: [Cache]\n})\nexport class CacheModule implements BeforeApplicationShutdown {\n constructor(private readonly cache: Cache) {}\n\n async beforeApplicationShutdown() {\n await this.cache.quit()\n }\n}\n"],"names":["CacheModule","beforeApplicationShutdown","cache","quit","providers","provide","Cache","useClass","configuration","adapter","MysqlCacheAdapter","RedisCacheAdapter","SchedulerRegistry","exports"],"mappings":"AAAA;;;;CAIC;;;;+BAoBYA;;;eAAAA;;;wBAlB6C;0BACxB;mCACJ;mCACI;mCACA;8BACZ;;;;;;;;;;AAaf,IAAA,AAAMA,cAAN,MAAMA;IAGX,MAAMC,4BAA4B;QAChC,MAAM,IAAI,CAACC,KAAK,CAACC,IAAI;IACvB;IAJA,YAAY,AAAiBD,KAAY,CAAE;aAAdA,QAAAA;IAAe;AAK9C;;;;QAfEE,WAAW;YACT;gBACEC,SAASC,mBAAK;gBACdC,UAAUC,gCAAa,CAACN,KAAK,CAACO,OAAO,KAAK,UAAUC,oCAAiB,GAAGC,oCAAiB;YAC3F;YACAC,2BAAiB;SAClB;QACDC,SAAS;YAACP,mBAAK;SAAC"}
1
+ {"version":3,"sources":["../../../../backend/src/infrastructure/cache/cache.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 { SchedulerRegistry } from '@nestjs/schedule'\nimport { configuration } from '../../configuration/config.environment'\nimport { MysqlCacheAdapter } from './adapters/mysql-cache.adapter'\nimport { RedisCacheAdapter } from './adapters/redis-cache.adapter'\nimport { Cache } from './services/cache.service'\n\n@Global()\n@Module({\n providers: [\n {\n provide: Cache,\n useClass: configuration.cache.adapter === 'mysql' ? MysqlCacheAdapter : RedisCacheAdapter\n },\n SchedulerRegistry\n ],\n exports: [Cache]\n})\nexport class CacheModule {}\n"],"names":["CacheModule","providers","provide","Cache","useClass","configuration","cache","adapter","MysqlCacheAdapter","RedisCacheAdapter","SchedulerRegistry","exports"],"mappings":"AAAA;;;;CAIC;;;;+BAoBYA;;;eAAAA;;;wBAlBkB;0BACG;mCACJ;mCACI;mCACA;8BACZ;;;;;;;AAaf,IAAA,AAAMA,cAAN,MAAMA;AAAa;;;;QATxBC,WAAW;YACT;gBACEC,SAASC,mBAAK;gBACdC,UAAUC,gCAAa,CAACC,KAAK,CAACC,OAAO,KAAK,UAAUC,oCAAiB,GAAGC,oCAAiB;YAC3F;YACAC,2BAAiB;SAClB;QACDC,SAAS;YAACR,mBAAK;SAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../backend/src/infrastructure/cache/services/cache.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\nexport abstract class Cache {\n abstract defaultTTL: number\n\n abstract infiniteExpiration: number\n\n abstract has(key: string): Promise<boolean>\n\n /*\n pattern must use '*' as wildcard\n */\n abstract keys(pattern: string): Promise<string[]>\n\n abstract get(key: string): Promise<any>\n\n abstract mget(keys: string[]): Promise<any[]>\n\n /* ttl (seconds):\n - 0: infinite expiration\n - undefined: default ttl\n */\n abstract set(key: string, data: any, ttl?: number): Promise<boolean>\n\n abstract del(key: string): Promise<boolean>\n\n abstract mdel(keys: string[]): Promise<boolean>\n\n abstract genSlugKey(...args: any[]): string\n\n abstract quit(): Promise<void>\n}\n"],"names":["Cache"],"mappings":"AAAA;;;;CAIC;;;;+BAEqBA;;;eAAAA;;;AAAf,IAAA,AAAeA,QAAf,MAAeA;AA6BtB"}
1
+ {"version":3,"sources":["../../../../../backend/src/infrastructure/cache/services/cache.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 { OnModuleDestroy, OnModuleInit } from '@nestjs/common'\n\nexport abstract class Cache implements OnModuleInit, OnModuleDestroy {\n abstract defaultTTL: number\n abstract infiniteExpiration: number\n\n abstract onModuleInit(): void\n\n abstract onModuleDestroy(): void\n\n abstract has(key: string): Promise<boolean>\n\n /*\n pattern must use '*' as wildcard\n */\n abstract keys(pattern: string): Promise<string[]>\n\n abstract get(key: string): Promise<any>\n\n abstract mget(keys: string[]): Promise<any[]>\n\n /* ttl (seconds):\n - 0: infinite expiration\n - undefined: default ttl\n */\n abstract set(key: string, data: unknown, ttl?: number): Promise<boolean>\n\n abstract del(key: string): Promise<boolean>\n\n abstract mdel(keys: string[]): Promise<boolean>\n\n abstract genSlugKey(...args: any[]): string\n}\n"],"names":["Cache"],"mappings":"AAAA;;;;CAIC;;;;+BAIqBA;;;eAAAA;;;AAAf,IAAA,AAAeA,QAAf,MAAeA;AA8BtB"}
@@ -65,7 +65,21 @@ function _ts_decorate(decorators, target, key, desc) {
65
65
  else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
66
66
  return c > 3 && r && Object.defineProperty(target, key, r), r;
67
67
  }
68
+ function _ts_metadata(k, v) {
69
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
70
+ }
71
+ function _ts_param(paramIndex, decorator) {
72
+ return function(target, key) {
73
+ decorator(target, key, paramIndex);
74
+ };
75
+ }
68
76
  let DatabaseModule = class DatabaseModule {
77
+ async beforeApplicationShutdown() {
78
+ await this.db.session.client.end();
79
+ }
80
+ constructor(db){
81
+ this.db = db;
82
+ }
69
83
  };
70
84
  DatabaseModule = _ts_decorate([
71
85
  (0, _common.Global)(),
@@ -88,7 +102,12 @@ DatabaseModule = _ts_decorate([
88
102
  })
89
103
  })
90
104
  ]
91
- })
105
+ }),
106
+ _ts_param(0, (0, _common.Inject)(_constants.DB_TOKEN_PROVIDER)),
107
+ _ts_metadata("design:type", Function),
108
+ _ts_metadata("design:paramtypes", [
109
+ Object
110
+ ])
92
111
  ], DatabaseModule);
93
112
 
94
113
  //# sourceMappingURL=database.module.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../backend/src/infrastructure/database/database.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 { DrizzleMySqlConfig, DrizzleMySqlModule } from '@knaadh/nestjs-drizzle-mysql2'\nimport { Global, Module } from '@nestjs/common'\nimport { configuration } from '../../configuration/config.environment'\nimport { DB_TOKEN_PROVIDER } from './constants'\nimport { DatabaseLogger } from './database.logger'\nimport * as schema from './schema'\n\n@Global()\n@Module({\n imports: [\n DrizzleMySqlModule.registerAsync({\n tag: DB_TOKEN_PROVIDER,\n useFactory: async (): Promise<DrizzleMySqlConfig> => ({\n mysql: {\n connection: 'pool',\n config: configuration.mysql.url\n },\n config: {\n schema: { ...schema },\n mode: 'default',\n logger: configuration.mysql.logQueries ? new DatabaseLogger() : false\n }\n })\n })\n ]\n})\nexport class DatabaseModule {}\n"],"names":["DatabaseModule","imports","DrizzleMySqlModule","registerAsync","tag","DB_TOKEN_PROVIDER","useFactory","mysql","connection","config","configuration","url","schema","mode","logger","logQueries","DatabaseLogger"],"mappings":"AAAA;;;;CAIC;;;;+BA4BYA;;;eAAAA;;;qCA1B0C;wBACxB;mCACD;2BACI;gCACH;gEACP;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqBjB,IAAA,AAAMA,iBAAN,MAAMA;AAAgB;;;;QAjB3BC,SAAS;YACPC,uCAAkB,CAACC,aAAa,CAAC;gBAC/BC,KAAKC,4BAAiB;gBACtBC,YAAY,UAA0C,CAAA;wBACpDC,OAAO;4BACLC,YAAY;4BACZC,QAAQC,gCAAa,CAACH,KAAK,CAACI,GAAG;wBACjC;wBACAF,QAAQ;4BACNG,QAAQ;gCAAE,GAAGA,OAAM;4BAAC;4BACpBC,MAAM;4BACNC,QAAQJ,gCAAa,CAACH,KAAK,CAACQ,UAAU,GAAG,IAAIC,8BAAc,KAAK;wBAClE;oBACF,CAAA;YACF;SACD"}
1
+ {"version":3,"sources":["../../../../backend/src/infrastructure/database/database.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 { DrizzleMySqlConfig, DrizzleMySqlModule } from '@knaadh/nestjs-drizzle-mysql2'\nimport { BeforeApplicationShutdown, Global, Inject, Module } from '@nestjs/common'\nimport { MySql2Client } from 'drizzle-orm/mysql2'\nimport { configuration } from '../../configuration/config.environment'\nimport { DB_TOKEN_PROVIDER } from './constants'\nimport { DatabaseLogger } from './database.logger'\nimport type { DBSchema } from './interfaces/database.interface'\nimport * as schema from './schema'\n\n@Global()\n@Module({\n imports: [\n DrizzleMySqlModule.registerAsync({\n tag: DB_TOKEN_PROVIDER,\n useFactory: async (): Promise<DrizzleMySqlConfig> => ({\n mysql: {\n connection: 'pool',\n config: configuration.mysql.url\n },\n config: {\n schema: { ...schema },\n mode: 'default',\n logger: configuration.mysql.logQueries ? new DatabaseLogger() : false\n }\n })\n })\n ]\n})\nexport class DatabaseModule implements BeforeApplicationShutdown {\n constructor(@Inject(DB_TOKEN_PROVIDER) private readonly db: DBSchema & { session: { client: MySql2Client } }) {}\n\n async beforeApplicationShutdown() {\n await this.db.session.client.end()\n }\n}\n"],"names":["DatabaseModule","beforeApplicationShutdown","db","session","client","end","imports","DrizzleMySqlModule","registerAsync","tag","DB_TOKEN_PROVIDER","useFactory","mysql","connection","config","configuration","url","schema","mode","logger","logQueries","DatabaseLogger"],"mappings":"AAAA;;;;CAIC;;;;+BA8BYA;;;eAAAA;;;qCA5B0C;wBACW;mCAEpC;2BACI;gCACH;gEAEP;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqBjB,IAAA,AAAMA,iBAAN,MAAMA;IAGX,MAAMC,4BAA4B;QAChC,MAAM,IAAI,CAACC,EAAE,CAACC,OAAO,CAACC,MAAM,CAACC,GAAG;IAClC;IAJA,YAAY,AAA4CH,EAAoD,CAAE;aAAtDA,KAAAA;IAAuD;AAKjH;;;;QAvBEI,SAAS;YACPC,uCAAkB,CAACC,aAAa,CAAC;gBAC/BC,KAAKC,4BAAiB;gBACtBC,YAAY,UAA0C,CAAA;wBACpDC,OAAO;4BACLC,YAAY;4BACZC,QAAQC,gCAAa,CAACH,KAAK,CAACI,GAAG;wBACjC;wBACAF,QAAQ;4BACNG,QAAQ;gCAAE,GAAGA,OAAM;4BAAC;4BACpBC,MAAM;4BACNC,QAAQJ,gCAAa,CAACH,KAAK,CAACQ,UAAU,GAAG,IAAIC,8BAAc,KAAK;wBAClE;oBACF,CAAA;YACF;SACD"}
@@ -36,10 +36,55 @@ _export(exports, {
36
36
  },
37
37
  get dbGetInsertedId () {
38
38
  return dbGetInsertedId;
39
+ },
40
+ get getTablesWithFileIdColumn () {
41
+ return getTablesWithFileIdColumn;
39
42
  }
40
43
  });
41
44
  const _drizzleorm = require("drizzle-orm");
42
45
  const _constants = require("./constants");
46
+ const _schema = /*#__PURE__*/ _interop_require_wildcard(require("./schema"));
47
+ function _getRequireWildcardCache(nodeInterop) {
48
+ if (typeof WeakMap !== "function") return null;
49
+ var cacheBabelInterop = new WeakMap();
50
+ var cacheNodeInterop = new WeakMap();
51
+ return (_getRequireWildcardCache = function(nodeInterop) {
52
+ return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
53
+ })(nodeInterop);
54
+ }
55
+ function _interop_require_wildcard(obj, nodeInterop) {
56
+ if (!nodeInterop && obj && obj.__esModule) {
57
+ return obj;
58
+ }
59
+ if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
60
+ return {
61
+ default: obj
62
+ };
63
+ }
64
+ var cache = _getRequireWildcardCache(nodeInterop);
65
+ if (cache && cache.has(obj)) {
66
+ return cache.get(obj);
67
+ }
68
+ var newObj = {
69
+ __proto__: null
70
+ };
71
+ var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
72
+ for(var key in obj){
73
+ if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
74
+ var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
75
+ if (desc && (desc.get || desc.set)) {
76
+ Object.defineProperty(newObj, key, desc);
77
+ } else {
78
+ newObj[key] = obj[key];
79
+ }
80
+ }
81
+ }
82
+ newObj.default = obj;
83
+ if (cache) {
84
+ cache.set(obj, newObj);
85
+ }
86
+ return newObj;
87
+ }
43
88
  async function dbGetConnection(app, mode = 'pool') {
44
89
  const db = await app.resolve(_constants.DB_TOKEN_PROVIDER);
45
90
  let connection = db['session'].client;
@@ -113,5 +158,8 @@ function concatDistinctObjectsInArray(mustBeNotNull, object) {
113
158
  expr.mapWith(JSON.parse);
114
159
  return expr;
115
160
  }
161
+ function getTablesWithFileIdColumn() {
162
+ return Object.entries(_schema).filter(([_table, columns])=>'fileId' in columns).map(([_table, columns])=>columns);
163
+ }
116
164
 
117
165
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../backend/src/infrastructure/database/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 { NestFastifyApplication } from '@nestjs/platform-fastify'\nimport { TestingModule } from '@nestjs/testing'\nimport { Column, eq, inArray, isNull, SQL, sql } from 'drizzle-orm'\nimport { MySqlDatabase } from 'drizzle-orm/mysql-core'\nimport { MySqlQueryResult } from 'drizzle-orm/mysql2'\nimport { DB_TOKEN_PROVIDER } from './constants'\n\nasync function dbGetConnection(app: NestFastifyApplication | TestingModule, mode: 'pool' | 'client' = 'pool') {\n const db: MySqlDatabase<any, any> = await app.resolve(DB_TOKEN_PROVIDER)\n let connection: any = db['session'].client\n if (mode === 'pool') {\n connection = connection.pool\n }\n return { db, connection }\n}\n\nexport async function dbCloseConnection(app: NestFastifyApplication | TestingModule, mode: 'pool' | 'client' = 'pool') {\n const connection = (await dbGetConnection(app, mode)).connection\n await connection.end()\n}\n\nexport async function dbCheckConnection(app: NestFastifyApplication | TestingModule, mode: 'pool' | 'client' = 'pool') {\n const db = (await dbGetConnection(app, mode)).db\n return Array.isArray(await db.execute(sql`select 1`))\n}\n\nexport function dbCheckAffectedRows(queryResult: MySqlQueryResult, expected: number, throwError = true): boolean {\n const affectedRows = queryResult.at(0).affectedRows\n if (affectedRows !== expected) {\n if (throwError) {\n throw new Error(`The number of rows affected does not match : ${affectedRows}`)\n }\n return false\n }\n return true\n}\n\nexport function dbGetInsertedId(queryResult: MySqlQueryResult): number {\n const insertedId = queryResult.at(0).insertId\n if (!insertedId) {\n throw new Error(`Record was not inserted : ${insertedId}`)\n }\n return insertedId\n}\n\nexport function convertToSelect<T>(table: T, fields: Partial<keyof T>[]) {\n const select = {} as Record<keyof T, any>\n for (const f of fields) {\n select[f] = table[f]\n }\n return select\n}\n\nexport function convertToWhere<T>(table: T, filters: Partial<Record<keyof T, any>>): SQL[] {\n // only handles AND operator\n return Object.entries(filters).map(([k, v]) => {\n if (v === null) return isNull(table[k])\n if (Array.isArray(v)) return inArray(table[k], v)\n return eq(table[k], v)\n })\n}\n\nexport const dateTimeUTC = (dateField: Column): SQL<string> => sql`CONCAT(${sql`${dateField}`}, 'Z')`\n\nexport function concatDistinctObjectsInArray(mustBeNotNull: Column, object: Record<string, Column | object>): SQL<any> {\n /* Concat json objects in array (only one nesting level is supported) */\n const expr: SQL<any> = sql`IFNULL(CONCAT('[', GROUP_CONCAT(DISTINCT IF(${mustBeNotNull} IS NULL, NULL, JSON_OBJECT(`\n const keys = Object.keys(object)\n keys.forEach((k, index) => {\n if (object[k].constructor.name === 'Object') {\n expr.append(sql`${sql.raw(`'${k}'`)},JSON_OBJECT(`)\n const subKeys = Object.keys(object[k])\n subKeys.forEach((subK, subIndex) => {\n expr.append(sql`${sql.raw(`'${subK}'`)},${sql`${object[k][subK]}`}${subIndex === subKeys.length - 1 ? sql`)` : sql`,`}`)\n })\n } else {\n expr.append(sql`${sql.raw(`'${k}'`)},${sql`${object[k]}`}`)\n }\n if (index !== keys.length - 1) {\n expr.append(sql`,`)\n }\n })\n expr.append(sql`))), ']'), JSON_ARRAY())`)\n expr.mapWith(JSON.parse)\n return expr\n}\n"],"names":["concatDistinctObjectsInArray","convertToSelect","convertToWhere","dateTimeUTC","dbCheckAffectedRows","dbCheckConnection","dbCloseConnection","dbGetInsertedId","dbGetConnection","app","mode","db","resolve","DB_TOKEN_PROVIDER","connection","client","pool","end","Array","isArray","execute","sql","queryResult","expected","throwError","affectedRows","at","Error","insertedId","insertId","table","fields","select","f","filters","Object","entries","map","k","v","isNull","inArray","eq","dateField","mustBeNotNull","object","expr","keys","forEach","index","name","append","raw","subKeys","subK","subIndex","length","mapWith","JSON","parse"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../backend/src/infrastructure/database/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 { NestFastifyApplication } from '@nestjs/platform-fastify'\nimport { TestingModule } from '@nestjs/testing'\nimport { Column, eq, inArray, isNull, SQL, sql } from 'drizzle-orm'\nimport { MySqlDatabase, MySqlTableWithColumns } from 'drizzle-orm/mysql-core'\nimport { MySqlQueryResult } from 'drizzle-orm/mysql2'\nimport { DB_TOKEN_PROVIDER } from './constants'\nimport * as schema from './schema'\n\nasync function dbGetConnection(app: NestFastifyApplication | TestingModule, mode: 'pool' | 'client' = 'pool') {\n const db: MySqlDatabase<any, any> = await app.resolve(DB_TOKEN_PROVIDER)\n let connection: any = db['session'].client\n if (mode === 'pool') {\n connection = connection.pool\n }\n return { db, connection }\n}\n\nexport async function dbCloseConnection(app: NestFastifyApplication | TestingModule, mode: 'pool' | 'client' = 'pool') {\n const connection = (await dbGetConnection(app, mode)).connection\n await connection.end()\n}\n\nexport async function dbCheckConnection(app: NestFastifyApplication | TestingModule, mode: 'pool' | 'client' = 'pool') {\n const db = (await dbGetConnection(app, mode)).db\n return Array.isArray(await db.execute(sql`select 1`))\n}\n\nexport function dbCheckAffectedRows(queryResult: MySqlQueryResult, expected: number, throwError = true): boolean {\n const affectedRows = queryResult.at(0).affectedRows\n if (affectedRows !== expected) {\n if (throwError) {\n throw new Error(`The number of rows affected does not match : ${affectedRows}`)\n }\n return false\n }\n return true\n}\n\nexport function dbGetInsertedId(queryResult: MySqlQueryResult): number {\n const insertedId = queryResult.at(0).insertId\n if (!insertedId) {\n throw new Error(`Record was not inserted : ${insertedId}`)\n }\n return insertedId\n}\n\nexport function convertToSelect<T>(table: T, fields: Partial<keyof T>[]) {\n const select = {} as Record<keyof T, any>\n for (const f of fields) {\n select[f] = table[f]\n }\n return select\n}\n\nexport function convertToWhere<T>(table: T, filters: Partial<Record<keyof T, any>>): SQL[] {\n // only handles AND operator\n return Object.entries(filters).map(([k, v]) => {\n if (v === null) return isNull(table[k])\n if (Array.isArray(v)) return inArray(table[k], v)\n return eq(table[k], v)\n })\n}\n\nexport const dateTimeUTC = (dateField: Column): SQL<string> => sql`CONCAT(${sql`${dateField}`}, 'Z')`\n\nexport function concatDistinctObjectsInArray(mustBeNotNull: Column, object: Record<string, Column | object>): SQL<any> {\n /* Concat json objects in array (only one nesting level is supported) */\n const expr: SQL<any> = sql`IFNULL(CONCAT('[', GROUP_CONCAT(DISTINCT IF(${mustBeNotNull} IS NULL, NULL, JSON_OBJECT(`\n const keys = Object.keys(object)\n keys.forEach((k, index) => {\n if (object[k].constructor.name === 'Object') {\n expr.append(sql`${sql.raw(`'${k}'`)},JSON_OBJECT(`)\n const subKeys = Object.keys(object[k])\n subKeys.forEach((subK, subIndex) => {\n expr.append(sql`${sql.raw(`'${subK}'`)},${sql`${object[k][subK]}`}${subIndex === subKeys.length - 1 ? sql`)` : sql`,`}`)\n })\n } else {\n expr.append(sql`${sql.raw(`'${k}'`)},${sql`${object[k]}`}`)\n }\n if (index !== keys.length - 1) {\n expr.append(sql`,`)\n }\n })\n expr.append(sql`))), ']'), JSON_ARRAY())`)\n expr.mapWith(JSON.parse)\n return expr\n}\n\nexport function getTablesWithFileIdColumn(): MySqlTableWithColumns<any>[] {\n return Object.entries(schema)\n .filter(([_table, columns]) => 'fileId' in columns)\n .map(([_table, columns]) => columns as MySqlTableWithColumns<any>)\n}\n"],"names":["concatDistinctObjectsInArray","convertToSelect","convertToWhere","dateTimeUTC","dbCheckAffectedRows","dbCheckConnection","dbCloseConnection","dbGetInsertedId","getTablesWithFileIdColumn","dbGetConnection","app","mode","db","resolve","DB_TOKEN_PROVIDER","connection","client","pool","end","Array","isArray","execute","sql","queryResult","expected","throwError","affectedRows","at","Error","insertedId","insertId","table","fields","select","f","filters","Object","entries","map","k","v","isNull","inArray","eq","dateField","mustBeNotNull","object","expr","keys","forEach","index","name","append","raw","subKeys","subK","subIndex","length","mapWith","JSON","parse","schema","filter","_table","columns"],"mappings":"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"}
@@ -38,7 +38,7 @@ let SchedulerModule = class SchedulerModule {
38
38
  ]
39
39
  };
40
40
  } else {
41
- // do not initialize the ScheduleModule dependency, all calls to Interval, Cron ... will be ignored
41
+ // do not initialize the ScheduleModule dependency; all calls to Interval, Cron ... will be ignored
42
42
  return {
43
43
  module: SchedulerModule
44
44
  };
@@ -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":["/*\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"}
@@ -28,9 +28,7 @@ let ClusterAdapter = class ClusterAdapter extends _platformsocketio.IoAdapter {
28
28
  return server;
29
29
  }
30
30
  constructor(...args){
31
- super(...args), this.clusterAdapter = (0, _clusteradapter.createAdapter)({
32
- requestsTimeout: 60000
33
- });
31
+ super(...args), this.clusterAdapter = (0, _clusteradapter.createAdapter)();
34
32
  }
35
33
  };
36
34
  ClusterAdapter = _ts_decorate([
@@ -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 private readonly clusterAdapter = createAdapter({ requestsTimeout: 60000 })\n\n createIOServer(port: number, options?: ServerOptions): any {\n const server = super.createIOServer(port, options)\n server.adapter(this.clusterAdapter)\n return server\n }\n}\n"],"names":["ClusterAdapter","IoAdapter","createIOServer","port","options","server","adapter","clusterAdapter","createAdapter","requestsTimeout"],"mappings":"AAAA;;;;CAIC;;;;+BAQYA;;;eAAAA;;;wBANc;kCACD;gCACI;;;;;;;AAIvB,IAAA,AAAMA,iBAAN,MAAMA,uBAAuBC,2BAAS;IAG3CC,eAAeC,IAAY,EAAEC,OAAuB,EAAO;QACzD,MAAMC,SAAS,KAAK,CAACH,eAAeC,MAAMC;QAC1CC,OAAOC,OAAO,CAAC,IAAI,CAACC,cAAc;QAClC,OAAOF;IACT;;QAPK,qBACYE,iBAAiBC,IAAAA,6BAAa,EAAC;YAAEC,iBAAiB;QAAM;;AAO3E"}
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 private readonly clusterAdapter = createAdapter()\n\n createIOServer(port: number, options?: ServerOptions): any {\n const server = super.createIOServer(port, options)\n server.adapter(this.clusterAdapter)\n return server\n }\n}\n"],"names":["ClusterAdapter","IoAdapter","createIOServer","port","options","server","adapter","clusterAdapter","createAdapter"],"mappings":"AAAA;;;;CAIC;;;;+BAQYA;;;eAAAA;;;wBANc;kCACD;gCACI;;;;;;;AAIvB,IAAA,AAAMA,iBAAN,MAAMA,uBAAuBC,2BAAS;IAG3CC,eAAeC,IAAY,EAAEC,OAAuB,EAAO;QACzD,MAAMC,SAAS,KAAK,CAACH,eAAeC,MAAMC;QAC1CC,OAAOC,OAAO,CAAC,IAAI,CAACC,cAAc;QAClC,OAAOF;IACT;;QAPK,qBACYE,iBAAiBC,IAAAA,6BAAa;;AAOjD"}
@@ -1,4 +1,56 @@
1
1
 
2
+ --------------------------------------------------------------------------------
3
+ Package: codemirror
4
+ License: "MIT"
5
+
6
+ MIT License
7
+
8
+ Copyright (C) 2017 by Marijn Haverbeke <marijn@haverbeke.berlin> and others
9
+
10
+ Permission is hereby granted, free of charge, to any person obtaining a copy
11
+ of this software and associated documentation files (the "Software"), to deal
12
+ in the Software without restriction, including without limitation the rights
13
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
14
+ copies of the Software, and to permit persons to whom the Software is
15
+ furnished to do so, subject to the following conditions:
16
+
17
+ The above copyright notice and this permission notice shall be included in
18
+ all copies or substantial portions of the Software.
19
+
20
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
21
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
23
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
24
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
25
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
26
+ THE SOFTWARE.
27
+
28
+ --------------------------------------------------------------------------------
29
+ Package: dayjs
30
+ License: "MIT"
31
+
32
+ MIT License
33
+
34
+ Copyright (c) 2018-present, iamkun
35
+
36
+ Permission is hereby granted, free of charge, to any person obtaining a copy
37
+ of this software and associated documentation files (the "Software"), to deal
38
+ in the Software without restriction, including without limitation the rights
39
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
40
+ copies of the Software, and to permit persons to whom the Software is
41
+ furnished to do so, subject to the following conditions:
42
+
43
+ The above copyright notice and this permission notice shall be included in all
44
+ copies or substantial portions of the Software.
45
+
46
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
47
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
48
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
49
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
50
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
51
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
52
+ SOFTWARE.
53
+
2
54
  --------------------------------------------------------------------------------
3
55
  Package: @angular/animations
4
56
  License: "MIT"
@@ -249,32 +301,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
249
301
  SOFTWARE.
250
302
 
251
303
 
252
- --------------------------------------------------------------------------------
253
- Package: codemirror
254
- License: "MIT"
255
-
256
- MIT License
257
-
258
- Copyright (C) 2017 by Marijn Haverbeke <marijn@haverbeke.berlin> and others
259
-
260
- Permission is hereby granted, free of charge, to any person obtaining a copy
261
- of this software and associated documentation files (the "Software"), to deal
262
- in the Software without restriction, including without limitation the rights
263
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
264
- copies of the Software, and to permit persons to whom the Software is
265
- furnished to do so, subject to the following conditions:
266
-
267
- The above copyright notice and this permission notice shall be included in
268
- all copies or substantial portions of the Software.
269
-
270
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
271
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
272
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
273
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
274
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
275
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
276
- THE SOFTWARE.
277
-
278
304
  --------------------------------------------------------------------------------
279
305
  Package: @fortawesome/free-regular-svg-icons
280
306
  License: "(CC-BY-4.0 AND MIT)"
@@ -445,32 +471,6 @@ trademarks does not indicate endorsement of the trademark holder by Font
445
471
  Awesome, nor vice versa. **Please do not use brand logos for any purpose except
446
472
  to represent the company, product, or service to which they refer.**
447
473
 
448
- --------------------------------------------------------------------------------
449
- Package: mobx
450
- License: "MIT"
451
-
452
- The MIT License (MIT)
453
-
454
- Copyright (c) 2015 Michel Weststrate
455
-
456
- Permission is hereby granted, free of charge, to any person obtaining a copy
457
- of this software and associated documentation files (the "Software"), to deal
458
- in the Software without restriction, including without limitation the rights
459
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
460
- copies of the Software, and to permit persons to whom the Software is
461
- furnished to do so, subject to the following conditions:
462
-
463
- The above copyright notice and this permission notice shall be included in all
464
- copies or substantial portions of the Software.
465
-
466
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
467
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
468
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
469
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
470
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
471
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
472
- SOFTWARE.
473
-
474
474
  --------------------------------------------------------------------------------
475
475
  Package: @ali-hm/angular-tree-component
476
476
  License: "MIT"
@@ -533,6 +533,32 @@ Package: ngx-clipboard
533
533
  License: "MIT"
534
534
 
535
535
 
536
+ --------------------------------------------------------------------------------
537
+ Package: @angular/router
538
+ License: "MIT"
539
+
540
+ The MIT License
541
+
542
+ Copyright (c) 2010-2025 Google LLC. https://angular.dev/license
543
+
544
+ Permission is hereby granted, free of charge, to any person obtaining a copy
545
+ of this software and associated documentation files (the "Software"), to deal
546
+ in the Software without restriction, including without limitation the rights
547
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
548
+ copies of the Software, and to permit persons to whom the Software is
549
+ furnished to do so, subject to the following conditions:
550
+
551
+ The above copyright notice and this permission notice shall be included in
552
+ all copies or substantial portions of the Software.
553
+
554
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
555
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
556
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
557
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
558
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
559
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
560
+ THE SOFTWARE.
561
+
536
562
  --------------------------------------------------------------------------------
537
563
  Package: socket.io-client
538
564
  License: "MIT"
@@ -691,32 +717,6 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
691
717
  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
692
718
  SOFTWARE.
693
719
 
694
- --------------------------------------------------------------------------------
695
- Package: dayjs
696
- License: "MIT"
697
-
698
- MIT License
699
-
700
- Copyright (c) 2018-present, iamkun
701
-
702
- Permission is hereby granted, free of charge, to any person obtaining a copy
703
- of this software and associated documentation files (the "Software"), to deal
704
- in the Software without restriction, including without limitation the rights
705
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
706
- copies of the Software, and to permit persons to whom the Software is
707
- furnished to do so, subject to the following conditions:
708
-
709
- The above copyright notice and this permission notice shall be included in all
710
- copies or substantial portions of the Software.
711
-
712
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
713
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
714
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
715
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
716
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
717
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
718
- SOFTWARE.
719
-
720
720
  --------------------------------------------------------------------------------
721
721
  Package: @angular/core
722
722
  License: "MIT"
@@ -821,32 +821,6 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
821
821
  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
822
822
  SOFTWARE.
823
823
 
824
- --------------------------------------------------------------------------------
825
- Package: @angular/router
826
- License: "MIT"
827
-
828
- The MIT License
829
-
830
- Copyright (c) 2010-2025 Google LLC. https://angular.dev/license
831
-
832
- Permission is hereby granted, free of charge, to any person obtaining a copy
833
- of this software and associated documentation files (the "Software"), to deal
834
- in the Software without restriction, including without limitation the rights
835
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
836
- copies of the Software, and to permit persons to whom the Software is
837
- furnished to do so, subject to the following conditions:
838
-
839
- The above copyright notice and this permission notice shall be included in
840
- all copies or substantial portions of the Software.
841
-
842
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
843
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
844
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
845
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
846
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
847
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
848
- THE SOFTWARE.
849
-
850
824
  --------------------------------------------------------------------------------
851
825
  Package: rxjs
852
826
  License: "Apache-2.0"
@@ -1097,9 +1071,40 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
1097
1071
  THE SOFTWARE.
1098
1072
 
1099
1073
  --------------------------------------------------------------------------------
1100
- Package: @fortawesome/fontawesome-svg-core
1074
+ Package: @angular/forms
1101
1075
  License: "MIT"
1102
1076
 
1077
+ The MIT License
1078
+
1079
+ Copyright (c) 2010-2025 Google LLC. https://angular.dev/license
1080
+
1081
+ Permission is hereby granted, free of charge, to any person obtaining a copy
1082
+ of this software and associated documentation files (the "Software"), to deal
1083
+ in the Software without restriction, including without limitation the rights
1084
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
1085
+ copies of the Software, and to permit persons to whom the Software is
1086
+ furnished to do so, subject to the following conditions:
1087
+
1088
+ The above copyright notice and this permission notice shall be included in
1089
+ all copies or substantial portions of the Software.
1090
+
1091
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1092
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1093
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
1094
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1095
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
1096
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
1097
+ THE SOFTWARE.
1098
+
1099
+ --------------------------------------------------------------------------------
1100
+ Package: angular-l10n
1101
+ License: "MIT"
1102
+
1103
+
1104
+ --------------------------------------------------------------------------------
1105
+ Package: @fortawesome/free-solid-svg-icons
1106
+ License: "(CC-BY-4.0 AND MIT)"
1107
+
1103
1108
  Fonticons, Inc. (https://fontawesome.com)
1104
1109
 
1105
1110
  --------------------------------------------------------------------------------
@@ -1267,66 +1272,9 @@ Awesome, nor vice versa. **Please do not use brand logos for any purpose except
1267
1272
  to represent the company, product, or service to which they refer.**
1268
1273
 
1269
1274
  --------------------------------------------------------------------------------
1270
- Package: @fortawesome/angular-fontawesome
1271
- License: "MIT"
1272
-
1273
- MIT License
1274
-
1275
- Copyright (c) 2018 Fonticons, Inc. and contributors
1276
-
1277
- Permission is hereby granted, free of charge, to any person obtaining a copy
1278
- of this software and associated documentation files (the "Software"), to deal
1279
- in the Software without restriction, including without limitation the rights
1280
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
1281
- copies of the Software, and to permit persons to whom the Software is
1282
- furnished to do so, subject to the following conditions:
1283
-
1284
- The above copyright notice and this permission notice shall be included in
1285
- all copies or substantial portions of the Software.
1286
-
1287
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1288
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1289
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
1290
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1291
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
1292
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
1293
- THE SOFTWARE.
1294
-
1295
- --------------------------------------------------------------------------------
1296
- Package: @angular/forms
1297
- License: "MIT"
1298
-
1299
- The MIT License
1300
-
1301
- Copyright (c) 2010-2025 Google LLC. https://angular.dev/license
1302
-
1303
- Permission is hereby granted, free of charge, to any person obtaining a copy
1304
- of this software and associated documentation files (the "Software"), to deal
1305
- in the Software without restriction, including without limitation the rights
1306
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
1307
- copies of the Software, and to permit persons to whom the Software is
1308
- furnished to do so, subject to the following conditions:
1309
-
1310
- The above copyright notice and this permission notice shall be included in
1311
- all copies or substantial portions of the Software.
1312
-
1313
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1314
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1315
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
1316
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1317
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
1318
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
1319
- THE SOFTWARE.
1320
-
1321
- --------------------------------------------------------------------------------
1322
- Package: angular-l10n
1275
+ Package: @fortawesome/fontawesome-svg-core
1323
1276
  License: "MIT"
1324
1277
 
1325
-
1326
- --------------------------------------------------------------------------------
1327
- Package: @fortawesome/free-solid-svg-icons
1328
- License: "(CC-BY-4.0 AND MIT)"
1329
-
1330
1278
  Fonticons, Inc. (https://fontawesome.com)
1331
1279
 
1332
1280
  --------------------------------------------------------------------------------
@@ -1493,6 +1441,32 @@ trademarks does not indicate endorsement of the trademark holder by Font
1493
1441
  Awesome, nor vice versa. **Please do not use brand logos for any purpose except
1494
1442
  to represent the company, product, or service to which they refer.**
1495
1443
 
1444
+ --------------------------------------------------------------------------------
1445
+ Package: @fortawesome/angular-fontawesome
1446
+ License: "MIT"
1447
+
1448
+ MIT License
1449
+
1450
+ Copyright (c) 2018 Fonticons, Inc. and contributors
1451
+
1452
+ Permission is hereby granted, free of charge, to any person obtaining a copy
1453
+ of this software and associated documentation files (the "Software"), to deal
1454
+ in the Software without restriction, including without limitation the rights
1455
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
1456
+ copies of the Software, and to permit persons to whom the Software is
1457
+ furnished to do so, subject to the following conditions:
1458
+
1459
+ The above copyright notice and this permission notice shall be included in
1460
+ all copies or substantial portions of the Software.
1461
+
1462
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1463
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1464
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
1465
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1466
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
1467
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
1468
+ THE SOFTWARE.
1469
+
1496
1470
  --------------------------------------------------------------------------------
1497
1471
  Package: zone.js
1498
1472
  License: "MIT"